打印

I2C读一个字节程序

[复制链接]
1774|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

使用特权

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

使用特权

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

本版积分规则

22

主题

53

帖子

0

粉丝