uchar I2C_SendByte(uchar dat, uchar ack)函数其中与ack相关的部分是
while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低
{
b++;
if(b > 200) ** //如果超过200us没有应答发送失败,或者为非应答,表示接收结束
**{
I2C_SCL = 0;
I2C_Delay10us();
return 0;
}
}
I2C_SCL = 0;
I2C_Delay10us();
在main中有
I2C_SendByte(0xa0, 1);//发送写器件地址
I2C_SendByte(addr, 1);//发送要写入内存地址
I2C_SendByte(dat, 0)_; //发送数据
为什么发送数据时 ack为0了不为1,以及这个ack代表什么意义,ack不是从机将sda下拉的信号吗?