11.01.2015 Views

msp430-programlama-notlari-uygulamalar-bilgiler - 320Volt

msp430-programlama-notlari-uygulamalar-bilgiler - 320Volt

msp430-programlama-notlari-uygulamalar-bilgiler - 320Volt

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!