星期三, 4月 20, 2011

[8051]如何存取一塊外部記憶體的變數 with keil

公司有一個案子用到某顆8051 core的MCU,而這案子裡頭,有可能因為一些事故而會斷電,而某些資料或狀態能不受到斷電的影响,上電後能保持這些資料繼續運作,而其中能夠保持資料不變的方式就是將資料定期存入ROM內,例如EEPROM或是Flash,因為這些記憶體不會因為斷電儲存的資料就消散掉。

而我這顆裡面就有一個flash,datasheet說要存取這塊flash資料必須透過XMOV語法來執行,這是組語的方式,那keil呢?

若是使用keil,在以下連結有些許的討論:
http://www.keil.com/forum/8501/

定義一個變數,該變數使用到外部記憶體
ex:

unsigned char xdata Ralph
whatever = Ralph;
"據說(我自己還沒試過@@)",這樣的寫法即實現了XMOV語法,在keil中可以這樣使用。

另外,外部記憶體也可以使用pointer,以下:

unsigned char xdata *p; //它表達的是,指向XDATA區域的指標,而指標變數自身存放在什麼地方沒有說明,那就交給編譯器.
unsigned char * xdata p;//這樣表達的是:指向CHAR資料型態的通用指標,這個指標存放在XDATA區中,但是​​,它指向什麼區域沒有聲名,它是一個通用指標,佔三個bytes.

沒有留言:

張貼留言