msp430-programlama-notlari-uygulamalar-bilgiler - 320Volt
msp430-programlama-notlari-uygulamalar-bilgiler - 320Volt
msp430-programlama-notlari-uygulamalar-bilgiler - 320Volt
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
#pragma vector = USI_VECTOR<br />
__interrupt void USI_TXRX (void)<br />
{<br />
if (USICTL1 & USISTTIFG)<br />
{<br />
P1OUT |= 0x01;<br />
I2C_State = 2;<br />
}<br />
switch(I2C_State)<br />
{<br />
case 0: // Idle, should not get here<br />
break;<br />
case 2: // RX Address<br />
USICNT = (USICNT & 0xE0) + 0x08;<br />
USICTL1 &= ~USISTTIFG;<br />
I2C_State = 4;<br />
break;<br />
case 4: // Process Address and send (N)Ack<br />
if (USISRL & 0x01)<br />
SLV_Addr++;<br />
USICTL0 |= USIOE;<br />
if (USISRL == SLV_Addr)<br />
{<br />
USISRL = 0x00;<br />
P1OUT &= ~0x01;<br />
I2C_State = 8;<br />
}<br />
else<br />
{<br />
USISRL = 0xFF;<br />
P1OUT |= 0x01;<br />
I2C_State = 6;<br />
}<br />
USICNT |= 0x01;<br />
break;<br />
case 6: // Prep for Start condition<br />
USICTL0 &= ~USIOE;<br />
SLV_Addr = 0x90;<br />
I2C_State = 0;<br />
break;<br />
case 8: // Receive data byte<br />
USICTL0 &= ~USIOE;<br />
USICNT |= 0x08;<br />
I2C_State = 10;<br />
break;<br />
MSP430 Programlama Sayfa 83