|
本帖最后由 haikuotian 于 2020-6-3 09:07 編輯
最近用STC12C5A60S2做了一個(gè)電池充放電管理,在運(yùn)作中,充電和放電終止值、充入和放出安時(shí)數(shù)據(jù),工作狀態(tài)、都需要掉電記憶。這樣就想起了STC12C5A60S2的EEPROM
STC12C5A60S2有1024字節(jié)的EEPROM分兩個(gè)扇區(qū),每扇區(qū)512字節(jié),字節(jié)中,只可以從“1”寫(xiě)成“0”,不可以從“0”寫(xiě)成“1”,如果字節(jié)單元是“0”,必須先擦除成“1”,再進(jìn)行寫(xiě)入操作,當(dāng)然,想把字節(jié)8位都寫(xiě)成“0”,就不用擦,擦除是按扇區(qū)擦的,每次都是把整個(gè)扇區(qū)都擦成“1”(&HFF、0xFF、0FFH)。
STC12C5A60S2有專用的低壓監(jiān)測(cè)端口P4.6(44腳的器件的第29腳)
STC12C5A60S2有專用P4.6端口中斷出口在地址0033H。
應(yīng)用中在地址0033H指向中斷處理程序(比如:LJMP P46CHULI)
在程序中加入中斷處理程序。比如:
P46CHULI: 中斷響應(yīng)
擦除要用的扇區(qū)
按位寫(xiě)入要保存的數(shù)據(jù)
從中斷退出
注意:STC12C5A60S2擦除一個(gè)扇區(qū)大約要22毫秒,使用時(shí)要考慮時(shí)間問(wèn)題(因?yàn)槭堑綦姳4妫?/font>
我對(duì)電路稍微改動(dòng)一下,為了確保每次掉電數(shù)據(jù)保存都成功,在進(jìn)入中斷之后我先關(guān)閉了能關(guān)閉的所有高耗電的電路,比如LED顯示器等,然后再操作EEPROM 的擦除和寫(xiě)入
改動(dòng)如圖:
更加詳細(xì)的資料請(qǐng)參閱 STC12C5A60S2 廠家資料
|
評(píng)分
-
查看全部評(píng)分
|