独闷闷网

 找回密码
 立即注册
搜索
查看: 2391|回复: 0
打印 上一主题 下一主题
收起左侧

[原创] 鸿哥为什么AT2402检测好坏判断2次,而ds1302只判断1次?ds1302的读写地址不一样?已解答.

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-22 23:04:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
茂名-陈:
  1. if(ucCheckEeprom!=0x5a)  //如果不等于特定内容。则重新写入数据再判断一次
  2.    {
  3.      write_eeprom(254,0x5a);  //重新写入标志数据
  4.      ucCheckEeprom=read_eeprom(254); //判断AT24C02是否正常
  5.          if(ucCheckEeprom!=0x5a)  //如果还是不等于特定数字,则芯片不正常
  6.          {
  7.             ucEepromError=1;  //表示AT24C02芯片出错报警
  8.          }
  9.    }
复制代码

(1)鸿哥的单片机51程序中的那节AT2402的判断好坏那部分程序,一般不是要判断俩次吗?这1302的判断程序怎么就一次了呢 ?先读取出来,判断对错,再写进去,然后在读取出来,再次判断。
(2)写1302实时时钟的检查是否备用电池用完了的这部分程序,它写和读取都是俩个不同的地址,只有一次判断对错,再把它写进去,然后就没有第二次读取出来,再判断对错了 这是为什么呢?
  1. ucCheckDs1302=Read1302(READ_CHECK); //判断ds1302内部的数据是否被更改
  2.    if(ucCheckDs1302!=0x5a)  
  3.    {
  4.           Write1302 (WRITE_PROTECT,0X00);          //禁止写保护
  5.       Write1302 (WRITE_CHECK,0x5a);            //重新写入标志数据,方便下一次更换新电池后的判断
  6.       Write1302 (WRITE_PROTECT,0x80);          //允许写保护

  7.           ucDs1302Error=1;  //表示ds1302备用电池没电了,报警提示更换新电池
  8.    }
复制代码



鸿哥-深圳:
(1)AT24C02为什么判断两次,因为有可能是你第一次烧录程序进去,之前从来没有运行过的程序,那么这个时候AT24C02里面什么都没有的,所以第一次有可能读取的数据不对,但是并不意味着坏,还要再写入再读取一次才能确认。为什么1302只判断一次?因为1302不仅仅是判断好坏的,而包括判断电池有没有正常工作,刚上电的时候判断一次,如果发现数据更改了就说明电池没电了或者其它故障,再判断两次就没必要了。
(2)为什么ds1302它写和读取都是俩个不同的地址?其实是同一个地址的,只是表面上看是不同的数据,是因为这个数据带有特定的协议,虽然表面看地址的数据不同,但是都是指同一个寄存器地址。

乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-11-29 22:54 , Processed in 0.147358 second(s), 17 queries .

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