OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3429|回复: 1

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

[复制链接]

5

主题

12

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2019-6-27
在线时间
17 小时
发表于 2019-7-15 19:23:15 | 显示全部楼层 |阅读模式
1金钱
有一个问提想问一下各位,

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


最佳答案

查看完整内容[请看2#楼]

到底返回什么,你得看芯片数据手册。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-7-15 19:23:16 | 显示全部楼层
到底返回什么,你得看芯片数据手册。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 04:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表