各位大师,帮忙看看这个程序,多谢了。

2019-07-15 21:06发布

  • uchar read_byte()//读一个字节  
  • {  
  •     uchar i,k;  
  •     scl=0;  
  •     delay();  
  •     sda=1;  
  •     delay();  
  •     for(i=0;i<8;i++)  
  •     {  
  •         scl=1;//上升沿时,IIC设备将数据放在sda线上,并在高电平期间数据已经稳定,可以接收啦  
  •         delay();      
  •         k=(k<<1)|sda;  
  •         scl=0;//拉低SCL,使发送端可以把数据放在SDA上  
  •         delay();      
  •     }  
  •     return k;  
  • }  
  • 这个程序是关于IIC通信的一个收字节的的函数,scl=0;delay();和SDA=1;DELAY();这两句的含义是什么?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
ntmusic
1楼-- · 2019-07-16 02:27
就是将IIC时钟线拉低和拉高嘛,你看一下IIC通信的时序图就明白了。DELAY是限制时钟速度
sxxyyanjj
2楼-- · 2019-07-16 02:41
建议你仔细看下I2C通信的时序
tianya0720
3楼-- · 2019-07-16 07:01
 精彩回答 2  元偷偷看……
小分子
4楼-- · 2019-07-16 12:21
sxxyyanjj 发表于 2014-1-7 11:53
建议你仔细看下I2C通信的时序

兄弟,我看了没看明白。所以才请教的,你能不能指教一二?
小分子
5楼-- · 2019-07-16 16:41
tianya0720 发表于 2014-1-7 13:10
I2C读字节的时序逻辑,

为什么读的时候,要拉低SCL
sxxyyanjj
6楼-- · 2019-07-16 17:29
小分子 发表于 2014-1-7 15:17
兄弟,我看了没看明白。所以才请教的,你能不能指教一二?

SDA高电平或低电平状只能在SCL为低时才能改变。

一周热门 更多>