(1)問:我需要把我所有的運(yùn)行時(shí)狀態(tài)變量在系統(tǒng)掉電時(shí)都保存到EEPROM里,我該怎么做?
答:這是不是要告訴編譯器來建立一個(gè)連續(xù)的存儲(chǔ)器塊?
有兩種方法你可以用來處理這個(gè)問題;我們假設(shè)只有一些確定的變量是需要保存的。最好的方法是聲名這些變量為"persistent",例如:
persistent int fred;
這將會(huì)阻止啟動(dòng)代碼把這些變量清零,并且這些變量會(huì)被放置到一個(gè)特殊的psect(在PIC里,你只能用bank0,所以不要對persistent使用bank1)。
這樣,所有的'persistent'變量都將被放到一起,然后你可以通過下面的聲明來得到這個(gè)psect的邊界:
extern char _Lnvram[], _Hnvram[];
然后用下面的方式來使用:
write_to_eeprom(_Lnvram, _Hnvram-_Lnvram);
這樣將會(huì)把psect的起始地址和長度傳遞給write_to_eeprom函數(shù),當(dāng)然你還需要做類似下面的聲明:
void write_to_eeprom(char * start, unsigned char length)
你需要自己編寫這個(gè)write_to_eeprom函數(shù)來把數(shù)據(jù)寫入具體的EEPROM位置。對于PIC16C84你可以在這個(gè)函數(shù)里使用EEPROM_WRITE宏。
-
EEPROM
+關(guān)注
關(guān)注
9文章
1020瀏覽量
81607 -
編譯器
+關(guān)注
關(guān)注
1文章
1634瀏覽量
49133 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28371
發(fā)布評論請先 登錄
相關(guān)推薦
評論