I2C读一个字节程序

[复制链接]
148|4
 楼主 | 2017-12-29 17:20 | 显示全部楼层 |阅读模式
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;  
}  

read_byte()这个函数 for循环前面那句sda=1有必要加吗?不是读数据吗,为什么还把sda设为1?
| 2018-1-2 09:09 | 显示全部楼层
你操作的是什么器件?要看器件的时序要求的
| 2018-1-2 11:06 | 显示全部楼层
51就是这样的,相当于设置为输入端口
| 2018-1-2 13:28 | 显示全部楼层
http://blog.csdn.net/qq_20553613/article/details/78878211
| 2018-1-4 15:13 | 显示全部楼层
read_byte()这个函数 for循环前面那句sda=1有必要加吗?
答案是:有必要。
sda是数据总线,主机讲sda拉为高电平,即释放总线,因为高电平表示总线空闲。
这样,从机才能往sda上发射数据。
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册 手机登录
高级模式

论坛热帖

关闭

热门推荐上一条 /4 下一条

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