|
问题解决了。
还真不是这两段代码的问题,呵呵
谢谢。
附:
//********************iic_write函数********************
void iic_write(char data)
{
USICTL0 |= USIOE;
USISRL = data; // ... and transmit address, R/W = 0
USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, TX Address
while(bit_is_clear(USICTL1, USIIFG));
USICTL1 &= ~USIIFG; // Clear pending flag
}
//********************Receive_ack函数********************
void Receive_ack(void)
{
USICTL0 &= ~USIOE; // SDA = input
USICNT |= 0x01; // Bit counter = 1, receive (N)Ack bit
while(bit_is_clear(USICTL1, USIIFG));
USICTL1 &= ~USIIFG; // Clear pending flag
}
//********************iic_stop函数********************
void iic_stop(void)
{
USICTL0 |= USIOE; // SDA = output
USISRL = 0x00;
USICNT |= 0x01;
while(bit_is_clear(USICTL1, USIIFG));
USICTL1 &= ~USIIFG; // Clear pending flag
delayms();
USISRL = 0x0FF; // USISRL = 1 to release SDA
USICTL0 |= USIGE; // Transparent latch ena××ed
USICTL0 &= ~(USIGE+USIOE); // Latch/SDA output disa××ed
} |
|