关于IIC的等待应答信号函数返回值是0和1的问题

2019-07-20 00:39发布

有一个问提想问一下各位,

//等待应答信号到来
//返回值: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();
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。