void ReceiveAck(void)
{
unsigned char i = 0;
SCL_1;
Delay(5);
DIR_IN;
while ((SDA_IN == 0x01 /*sda==1*/) && (i < 255)/*调试方便,可以不要*/)
{
i++;
}
DIR_OUT;
SCL_0;
Delay(5);
}
这是I/O模拟I2C程序中的一个子程序(检查应答位),也就是在第九个clock时,看SDA的状态。
我不明白为什么要设置SCL_1(SCL为高)?按理说主机发送完8个bit后,SCL应该为低,SDA为高(被主机释放)呀