单片机复位时的数据存储

来源:百度知道 编辑:UC知道 时间:2024/09/23 00:33:46
我用c语言编程,当单片机跑飞时,不能向看门狗芯片输入标准脉冲,看门狗芯片对单片机复位,请问复位时,单片机中的数据该通过什么子程序或语句存储呢?说下原理
是电量计量系统,没有老跑飞。但用电量,及购电量的数据非常重要,不能丢失。我只对掉电时的情况做了数据的存储。

RAM中的数据复位时不是随机值吗?我采用的是STC89C51

程序跑飞时除了影响PC的值,还影响什么数据,RAM中的数据受到影响吗。

只有随时往EEPROM之类的存储器里存,跑飞的时机无法预测

另外,你什么系统啊,老跑飞?
----------------------
rokerwen不要随否认别人的回答;
供电系统的计费,用RAM? 我问你,停电了咋办????

EEPROM写入次数,同一位置是10万次,你的用电量,购电量,历史记录等等能用多大空间?一年充值几次?能用得了几百字节?24LC16串行EEPROM(16K,2048*8) 能存多少年的?这类芯片也是很廉价的;

每隔一小时或者半小时备份一次数据,充值的话,立即备份数据(刚冲完值就跑飞的话,没备份就麻烦了),就算程序跑飞,也只损失一个小时的数据,10万次,1小时用一次,能用10年以上; 如果你程序的数据结构设计的够好,备份时间长些,让数据量变得很小,那么一片EEPROM能用很久,20年都是少说的

这属于单片机防止干扰造成数据流失的范畴。
其实目前并没有什么特别好办法。

通常是在外部接一个RAM,每次操作的时候都往RAM区进行数据备份。

楼上说采用EEPROM实现起来并不可行,因为EEPROM读写次数还是一定得,如果用于防止程序跑飞数据备份时不可行的。

另,如果你的系统常常跑飞,建议你仔细查找原因,因为这是不合理的。
数据备份只能是一个备用方式,而且会增加硬件成本。

一般情况,重要的东西都应该放到EEPROM,因为重启不丢失嘛,既然是重要的数据,建议你就保存到EEPROM中,你可以隔几秒就把数据存一次,也可以用定时器中断,时间一到,保存一次,这样数据就不会丢失,如果你还是觉得不保险的话,可以再用一个单片机,用另外的单片机把你的数据保存好。

ZC