找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2667|回复: 11
收起左侧

单片机24c02读取问题 有几句源代码不理解

[复制链接]
ID:289989 发表于 2018-4-8 17:49 | 显示全部楼层 |阅读模式
uchar iicre_byte(void)  
{  
uchar i;
uchar dat;
scl=0;  
delay();  
sda=1;  
delay(); //////////???????????
     for(i=0;i<8;i++)  
     {  
        scl=1;  
        delay();  
        dat=dat<<1;  
        if(sda)  
       {  
        dat++;
       }  
        scl=0;  
       delay();  
      }  
return dat;
}




uchar read_byte()
{
                uchar i,k;


                for(i=0;i<8;i++)
                {
                scl=1;      
                k=(k<<1)|sda;   
                scl=0;
                }
                scl=0;
                sda=1;
                return k;
}
这两个程序都可以完成读取。第一个for前面加的scl,delay,sda,delay是什么意思?要不要不是都行吗,求指点。

回复

使用道具 举报

ID:289989 发表于 2018-4-8 22:05 | 显示全部楼层
或者说按我的理解应该放在for语句后面~~~前后一样?
回复

使用道具 举报

ID:141497 发表于 2018-4-8 23:47 | 显示全部楼层
个人觉得,怎么写代码没关系,只要能满足I2C协议条件就行。
回复

使用道具 举报

ID:282439 发表于 2018-4-9 07:57 | 显示全部楼层
前面一个比较安全。后面一个与主频相关。因为I2C协议对时间间隔是有要求的。
回复

使用道具 举报

ID:164602 发表于 2018-4-9 08:29 | 显示全部楼层
你将I2C通讯时序搞清楚了,这些语句及排列就可以搞明白了。
第一个程序,可能有程序员自己的习惯,编写的程序留有余地——时钟信号与数据信号间,留了反应时间。
第二个程序,有全盘考虑,在其它操作时,已经先确定了两线的信号,所以这里不再设置。

可以这样说:第一个程序移植性较好,第二段程序移植性不好。你可以在网上找找I2C的通用程序,那个移植性肯定非常好,对照一下,可以学到很多东西。
回复

使用道具 举报

ID:289989 发表于 2018-4-9 08:52 | 显示全部楼层
51jia 发表于 2018-4-8 23:47
个人觉得,怎么写代码没关系,只要能满足I2C协议条件就行。

我删掉第九位sda的置高程序也没有问题~干了,条件这么宽松吗,还是我没有真正理解?
回复

使用道具 举报

ID:304212 发表于 2018-4-9 10:01 | 显示全部楼层
严格按照时序来写就没错
回复

使用道具 举报

ID:304266 发表于 2018-4-9 10:45 | 显示全部楼层
zh俄格问题有点难,研究研究
回复

使用道具 举报

ID:295343 发表于 2018-4-9 13:29 | 显示全部楼层
适当的短暂延时有助于系统稳定,适当重复操作可以提高系统的耐操性。高手写的程序和新手写的程序的差别。
回复

使用道具 举报

ID:289989 发表于 2018-4-9 14:19 | 显示全部楼层
HC6800-ES-V2.0 发表于 2018-4-9 08:29
你将I2C通讯时序搞清楚了,这些语句及排列就可以搞明白了。
第一个程序,可能有程序员自己的习惯,编写的 ...

谢谢了。
我查了查,他们说第一个的那几句是置数据线为输入方式。最近有点忙,有时间在细细的查查
回复

使用道具 举报

ID:141497 发表于 2018-4-9 23:26 | 显示全部楼层
Yubug 发表于 2018-4-9 08:52
我删掉第九位sda的置高程序也没有问题~干了,条件这么宽松吗,还是我没有真正理解?

I2C协议只要时间大于4.7us就行。
回复

使用道具 举报

ID:304623 发表于 2018-4-10 16:55 | 显示全部楼层
这个学习的时候老师说得有5us的时延,有严格的时序,你可以看看时序图
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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