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为高(被主机释放)呀
|