#include #include #include #define I2C_add_read 0xD0 #define I2C_add_write 0xD1 void main(void) { WDTCTL = WDTPW + WDTHOLD; //disable watchdog timer //-I2C init USICTL0 |= USIPE7 + USIPE6 + USIMST + USIOE + USISWRST; USICTL1 = USII2C; USICKCTL = USIDIV_2 + USISSEL_2 + USICKPL; USICNT |= USIIFGCC; USICTL0 &= ~USISWRST; USICTL1 &= ~USIIFG; while(1) { USICNT |= USIIFGCC; USICTL0 &= ~USISWRST; USICTL1 &= ~USIIFG; //Start Condition USISRL = 0x00; USICTL0 |= USIGE + USIOE; USICTL0 &= ~USIGE; //Send Data USISRL = I2C_add_read; USICTL0 |= USIOE; USICNT = 0x08; while((USICTL1 & USIIFG) != 0x01); //Read Ack Bit USICTL0 &= ~USIOE; USICNT = 0x01; USICTL0 |= USIOE; while((USICTL1 & USIIFG) != 0x01); ack_flag = USISRL; //Stop USICTL0 |= USIOE; USISRL = 0x00; USICNT = 1; while((USICTL1 & USIIFG) != 0x01); USISRL = 0xFF; USICTL0 |= USIGE; USICTL0 &= ~(USIGE+USIOE); for(delay=0; delay<100; delay++); } }