(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宏。
-
EEPROM
+關注
關注
9文章
1033瀏覽量
81838 -
編譯器
+關注
關注
1文章
1642瀏覽量
49231 -
變量
+關注
關注
0文章
613瀏覽量
28441
發布評論請先 登錄
相關推薦
評論