最近刚接触IIC协议,这是个模拟协议,我在网上看了个程序段,有点不太明白。iic协议说主器件发送
第一个字节后,要等待从器件应答,然后再进行第二个字节数据发送,但是这个程序段里面看不出来,
为什么不查询呢?
。
。
。
/************************************** 接收应答信号 **************************************/ bit AT24C04_RecvACK() { SCL = 1; //拉高时钟线 Delay5us(); //延时 CY = SDA; //读应答信号
SCL = 0; //拉低时钟线 Delay5us(); //延时
return CY; //此处返回值到cy,可以明白。但是返回的值怎么判别从器件应答了呢? }
/************************************** 向IIC总线发送一个字节数据 **************************************/ void AT24C04_SendByte(BYTE dat) //dat=0xa0=1010 0000 { BYTE i;
for (i=0; i<8; i++) //8位计数器 { dat <<= 1; //移出数据的最高位 SDA = CY; //送数据口 CY为进位标志,0X0A左移时,产生进位CY=1,不产生进位CY为0 SCL = 1; //拉高时钟线 Delay5us(); //延时 SCL = 0; //拉低时钟线 Delay5us(); //延时 } AT24C04_RecvACK(); }
。
。
。
|