標題: stc15系列STC內部EEPROM的讀寫 [打印本頁]
作者: 老麥 時間: 2016-9-25 22:53
標題: stc15系列STC內部EEPROM的讀寫
STC單片機利用IAP技術實現了EEPROM功能,相比外置存儲芯片而言,在操作上比較方便。 涉及STC單片機EEPROM操作的特殊功能寄存器有6個,地址分別是E2H、E3H、E4H、E5H、E6H和E7H。在STC單片機使用手冊中,作者分別將它們定義為:
一、IAP_DATA (E2H)
二、IAP_ADDRH (E3H)
三、IAP_ADDRL (E4H)
四、IAP_CMD (E5H)
五、IAP_TRIG (E6H)
六、IAP_CONTR (E7H)
本人認為,手冊中給每個地址單元定義的英文詞組太長,而且有點哆嗦,占的篇幅又大,感覺對正常閱讀和理解產生了一定的干擾,反倒不好了解作者的意圖了,還不如讓使用者自己定義為好。我自己對這些單元分別定義為
DAT
ADDRH
ADDRL
CMD
TRIG
CONTR。
一、DAT(E2H) 從EEPROM中讀取到的數據首先進入這里。要把數據寫入EEPROM中,也要把數據放到這個單元中。也就是說,這個單元起到了中轉站的作用,寫入和讀出都要通過這個單元。
二、ADDRH、ADDRL分別是EEPROM地址單元高8位和低8位。如要把數據存儲到1000H單元中,那么在程序中,ADDRH的數值為10H,ADDRL的數值為00H。
三、CMD表示操作類型。數值為1是讀,數值為2是寫,數值為3是擦除。簡單點說,就是“1讀2寫3擦除”。
四、CONTR寄存器,說明書上作了好多功能表述,但對于一般使用者來說,寄存器的前5位可以不作過多了解,只要掌握后3位意義就可以了。一般理解為,選擇好后3位的數值,為的是確保在不同數值晶振下正確讀寫擦除EEPROM。考慮到TRIG這個寄存器的要求,一般使用時,可將前5位設置為10000,后3位根據不同晶振頻率來確定(這個見使用手冊)。五、TRIG這個寄存器,看了好長時間手冊才了解它的一般使用,對這個寄存器理解應當放到最后。說明書是這樣寫的:為isp/iap操作時的命令模式寄存器。在ispen(isp_contr.7)=1時,對isp_trig先寫入46h,再寫入b9h,isp/iap命令才會生效。 其實也可以這樣理解,當選擇好EEPROM地址單元,選擇好操作類型,以及在寫入狀態時準備好寫入數據后,先向該寄存器送入46H數據,之后再向該寄存器送入B9H數值。EEPROM的讀、寫、擦除就完成了。 以上是本人對STC單片機的EEPROM使用的一些心得,若有不當或錯誤之處,請高手多多批評指正
本人常用的STC_EEPROM基本操作程序
dat equ 0e2h
drh equ 0e3h
drl equ 0e4h
cmd equ 0e5h
trig equ 0e6h
contr equ 0e7h
;---------讀取1個字節-------------------
read: mov drh,#10h ;設定存儲單元地址高四位 這里設1000h,也可選用其他單元 mov drl,#00h ;設定存儲單元地址低四位
mov cmd,#01h ;設定讀操作
mov contr,#84h 設定操作時間
mov trig,#046h ;準備觸發
mov trig,#0b9h ;觸發
mov r0,dat ;讀數據。r0為讀出的數據,也可以選用其他單元 nop
nop
ret
;---------寫入1個字節-------------------
write: mov dat,r0 ;寫數據。 r0中為準備寫入的數據,也可以選用其他單元 mov drh,#10h ;設定存儲單元地址高四位 這里設1000h,也可選用其他單元 mov drl,#00h;設定存儲單元地址低四位
mov cmd,#02h ;設定寫操作
mov contr,#84h 設定操作時間
mov trig,#046h ;準備觸發
mov trig,#0b9h ;觸發
nop
nop
ret
;---------擦除1個字節-------------------
clear: mov drh,#10h ;設定存儲單元地址高四位這里設1000h,也可選用其他單元可組成子程序,進行調用
mov drl,#00h ;設定存儲單元地址低四位
mov cmd,#03h ;設定擦除操作
mov contr,#84h 設定操作時間
mov trig,#046h 準備觸發
mov trig,#0b9h 觸發
nop
nop
ret
;=========關閉EEPROM====================
off: mov drh,#00h
mov drl,#00h
mov cmd,#00h
mov contr,#00h
mov trig,#00h
ret
-
-
STC內部EEPROM的讀寫.docx
2016-9-25 22:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
15.62 KB, 下載次數: 68, 下載積分: 黑幣 -5
eeprom
作者: 新鄉家電維修 時間: 2016-9-26 13:04
好東西,支持啊
作者: 15621048596 時間: 2019-4-13 17:31
好棒,程序加一段C的會更好啦
作者: howelee 時間: 2020-1-16 11:08
好經驗,謝謝分享,網上能找到比較詳細的了。
作者: jovew 時間: 2020-1-18 10:42
有沒有C語言的例程?
看不懂
作者: XDDZ1013 時間: 2020-2-2 18:25
好資料,謝謝分享。
作者: JackyLiu123 時間: 2020-5-14 19:29
好資料,謝謝分享;如果是C就好了
作者: 踏雪無痕做什么 時間: 2020-12-4 22:32
太棒了,STC手冊嚴謹(生誨難懂),大師一席話,如雷灌耳,抓住重點,通俗易懂,通透!!!
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |