有一个问提想问一下各位,
//等待应答信号到来
//返回值:1,接受应答失败
// 0,接受应答成功
u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
SDA_IN(); //SDA设置为输入
IIC_SDA=1;delay_us(1);//应答的时候主机要释放数据总线,等待从机产生应答信号
IIC_SCL=1;delay_us(1);
while(READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
return 1;
}
}
IIC_SCL=0;
return 0;
}
IIC的等待应答信号函数 如上可以看到函数要么返回0,要么返回1
那么在IIC的发一个值到寄存器的函数void write_onebyte(u8 address,u8 da)中 【如下】
IIC_Wait_Ack();的返回是0和1 都知道有应答返回0,没应答返回1
难道没应答的时候返回1,这个 IIC_Wait_Ack();之后的函数都不会执行吗
而且就算有应答 返回的是0,又难道会让IIC_Wait_Ack();之后的函数都去执行吗
c语言功底不行,希望大家帮忙解决 ,谢谢!!!
void write_onebyte(u8 address,u8 da)//发送一个值到24c02某个寄存的值
{
IIC_Start();
IIC_SEND_BYTE(0xa0);
IIC_Wait_Ack();
IIC_SEND_BYTE(address);
IIC_Wait_Ack();
IIC_SEND_BYTE(da);
IIC_Wait_Ack();
IIC_Stop();
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>