(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宏。
全部0条评论
快来发表一下你的评论吧 !