C8051F020的XRAM和非易失性?xún)Υ?/h1>
C8051F020有4Kbyte的XRAM和128byte的非易失性存儲(相當于EEPROM)。首先在Keil中按下圖勾上兩個(gè)選項
本文引用地址:http://dyxdggzs.com/article/201611/320867.htm
那么要使用XRAM,只需將變量類(lèi)型定義為XDATA即可,最好在定義上不要初始化,否則可能會(huì )有問(wèn)題。如果需要使用非易失性?xún)Υ?/strong>,就需要編寫(xiě)驅動(dòng),也很容易,首先在操作前先關(guān)閉中斷;操作完成恢復中斷狀態(tài)即可,與之相關(guān)的寄存器是FLSCL和PSCTL,需要注意的是寫(xiě)FLASH只能將1變?yōu)?,所以寫(xiě)字節操作前需擦除整個(gè)扇區,寫(xiě)字節的變量類(lèi)型為XDATA,用MOVX,而讀的話(huà)就是指向CODE,用MOVC,比如寫(xiě)指針可以定義為uchar xdata *pwrite;讀的話(huà)可以定義為uchar code *pread;當然給指針賦值時(shí)應當將轉化為指針變量,如pwrite=(uchar xdata *)=addr;pread=(uchar code *)=addr;然后給指針指向的空間賦值就可以了。
那么要使用XRAM,只需將變量類(lèi)型定義為XDATA即可,最好在定義上不要初始化,否則可能會(huì )有問(wèn)題。如果需要使用非易失性?xún)Υ?/strong>,就需要編寫(xiě)驅動(dòng),也很容易,首先在操作前先關(guān)閉中斷;操作完成恢復中斷狀態(tài)即可,與之相關(guān)的寄存器是FLSCL和PSCTL,需要注意的是寫(xiě)FLASH只能將1變?yōu)?,所以寫(xiě)字節操作前需擦除整個(gè)扇區,寫(xiě)字節的變量類(lèi)型為XDATA,用MOVX,而讀的話(huà)就是指向CODE,用MOVC,比如寫(xiě)指針可以定義為uchar xdata *pwrite;讀的話(huà)可以定義為uchar code *pread;當然給指針賦值時(shí)應當將轉化為指針變量,如pwrite=(uchar xdata *)=addr;pread=(uchar code *)=addr;然后給指針指向的空間賦值就可以了。
評論