I2C读一个字节程序

[复制链接]
1554|4
手机看帖
扫描二维码
随时随地手机跟帖
953565250|  楼主 | 2017-12-29 17:20 | 显示全部楼层 |阅读模式
I2c, FOR, TE, sd, AD
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?

相关帖子

dirtwillfly| | 2018-1-2 09:09 | 显示全部楼层
你操作的是什么器件?要看器件的时序要求的

使用特权

评论回复
ayb_ice| | 2018-1-2 11:06 | 显示全部楼层
51就是这样的,相当于设置为输入端口

使用特权

评论回复
Prry| | 2018-1-2 13:28 | 显示全部楼层
http://blog.csdn.net/qq_20553613/article/details/78878211

使用特权

评论回复
ohy3686| | 2018-1-4 15:13 | 显示全部楼层
read_byte()这个函数 for循环前面那句sda=1有必要加吗?
答案是:有必要。
sda是数据总线,主机讲sda拉为高电平,即释放总线,因为高电平表示总线空闲。
这样,从机才能往sda上发射数据。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

49

帖子

0

粉丝