如何让变量在系统掉电时都保存到EEPROM里

描述

(1)问:我需要把我所有的运行时状态变量在系统掉电时都保存到EEPROM里,我该怎么做?

答:这是不是要告诉编译器来建立一个连续的存储器块?

有两种方法你可以用来处理这个问题;我们假设只有一些确定的变量是需要保存的。最好的方法是声名这些变量为"persistent",例如:

persistent int fred;

这将会阻止启动代码把这些变量清零,并且这些变量会被放置到一个特殊的psect(在PIC里,你只能用bank0,所以不要对persistent使用bank1)。

这样,所有的'persistent'变量都将被放到一起,然后你可以通过下面的声明来得到这个psect的边界:

extern char _Lnvram[], _Hnvram[];

然后用下面的方式来使用:

write_to_eeprom(_Lnvram, _Hnvram-_Lnvram);

这样将会把psect的起始地址和长度传递给write_to_eeprom函数,当然你还需要做类似下面的声明:

void write_to_eeprom(char * start, unsigned char length)

你需要自己编写这个write_to_eeprom函数来把数据写入具体的EEPROM位置。对于PIC16C84你可以在这个函数里使用EEPROM_WRITE宏。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分