51单片机 *** 作24c08,IIC应答时,以下程序怎样反应出来是为0和为1呢

51单片机 *** 作24c08,IIC应答时,以下程序怎样反应出来是为0和为1呢,第1张

这是程序设计者偷懒的结果,因为大多数正常情况下不会出现应答为1的情况。程序没有写出错处理,出错处理也就是把结果向上一级函数返回,IIC_single_byte_write定义为 bit型,返回IIC_Tack的值。

正常情况下 程序设计合理,电路器件正常,基本不会出错。程序设计不合理调试不会通过,电路器件不正常,程序也没办法,只是知道错了而已。解决不了问题,所以很多时候程序员都会舍去这部分出错处理程序。

没有仔细看你的程序,写不进去通常有几种原因:

1总线时序控制不当或电平不当,我留意到你是用P2口的两只脚来做连接,不知道你有没有接上拉电阻,是否符合时序就靠你自己来详细核对了

224C02的地址译码引脚的连接方式和程序中的IIC命令里的"芯片地址"不匹配

3写动作结束后需要10毫秒等待时间,如果提前去读,则会得不到响应

424C01芯片已坏或者CPU有关引脚失效

没时间仔细看你程序,给你些经验参考!

时序一定要符合i2c规范。SCL\SDA 平常在H(高态),送出地址或资料时,先送出资料,然后

再将SCL 从H -> L -> H (一个时钟);这样就送出1bit

传送速率,不要超过2MHz ,也就是上面 H -> L -> H的时间要控制在2MHz内。

传送时高位元先送,所以是左移,收的时候也是左移。

接收资料跟1相同,在SCL由高到低转态时读取。

觉得新手比较容易弄错的是没完全弄懂时序(尤其是资料格式),另外就是速率。

仔细看看24c02的datasheet,对照自己的程序,这样对自己帮助最大,应该能找出问题。

以上就是关于51单片机 *** 作24c08,IIC应答时,以下程序怎样反应出来是为0和为1呢全部的内容,包括:51单片机 *** 作24c08,IIC应答时,以下程序怎样反应出来是为0和为1呢、IIC总线51编程,程序写出来不行啊,问题在哪里啊、单片机模拟IIC,24C02程序有问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9328818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存