微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第46节:利用AT24C02进行掉电后的数据保存

第46节:利用AT24C02进行掉电后的数据保存

时间:11-22 来源:互联网 点击:

  1. 据的方法。在使用EEPROM时,这一步初始化很关键!
  2. * 第一次上电时,我们从EEPROM读取出来的数据有可能超出了范围,可能是ff。
  3. * 这个时候我们应该给它填入一个初始化的数据,这一步千万别漏了。另外,
  4. * 由于int类型数据占用2个字节,所以以下4个数据挨着的地址是0,2,4,6.
  5. */
  6. uiSetData1=read_eeprom_int(0);//读取uiSetData1,内部占用2个字节地址
  7. if(uiSetData1>9999) //不在范围内
  8. {
  9. uiSetData1=0; //填入一个初始化数据
  10. write_eeprom_int(0,uiSetData1); //存入uiSetData1,内部占用2个字节地址
  11. }
  12. uiSetData2=read_eeprom_int(2);//读取uiSetData2,内部占用2个字节地址
  13. if(uiSetData2>9999)//不在范围内
  14. {
  15. uiSetData2=0;//填入一个初始化数据
  16. write_eeprom_int(2,uiSetData2); //存入uiSetData2,内部占用2个字节地址
  17. }
  18. uiSetData3=read_eeprom_int(4);//读取uiSetData3,内部占用2个字节地址
  19. if(uiSetData3>9999)//不在范围内
  20. {
  21. uiSetData3=0;//填入一个初始化数据
  22. write_eeprom_int(4,uiSetData3); //存入uiSetData3,内部占用2个字节地址
  23. }
  24. uiSetData4=read_eeprom_int(6);//读取uiSetData4,内部占用2个字节地址
  25. if(uiSetData4>9999)//不在范围内
  26. {
  27. uiSetData4=0;//填入一个初始化数据
  28. write_eeprom_int(6,uiSetData4); //存入uiSetData4,内部占用2个字节地址
  29. }
  30. }

总结陈词:

IIC通讯过程是一个要求一气呵成的通讯过程,中间不能被其它中断影响时序出错,因此,在整个通讯过程中应该先关闭总中断,完成之后再开中断。但是,这样就会引起另外一个新问题,如果关闭总中断的时间太长,会导致动态数码管不能及时均匀的扫描,在按键更改参数,内部操作EEPROM时,数码管就会出现短暂明显的闪烁现象,解决这个问题最好的办法就是在做项目中尽量不要用动态扫描数码管的方案,应该用静态显示的方案。那么在程序上还有没有改善这种现象的方法?当然有。欲知详情,请听下回分解-----操作AT24C02时,利用“一气呵成的定时器方式”改善数码管的闪烁现象。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top