如何解決串行E2PROM 24C02在應用中的問(wèn)題
(3)對寫(xiě)入24C02子程序設置軟件口令,口令符合可以執行寫(xiě)入,否則拒絕寫(xiě)入。具體做法是:設置寫(xiě)口令寄存器EPSW,按正常CPU執行程序的脈絡(luò ),找出所有的數據寫(xiě)入24C02前的必經(jīng)之路,比如,一般下在功能鍵按下后經(jīng)過(guò)一些數據處理,最終將要保存的參數寫(xiě)入24C02,這時(shí)可以在鍵掃描子程序里,當有鍵輸入時(shí),對寫(xiě)口令寄存器EPSW置數5AH,然后在寫(xiě)24C02子程序中緊跟指令CLRWP后插入檢查口令語(yǔ)句,判斷EPSW值若為5AH,則允許繼續執行,否則立即返回,不許執行寫(xiě)入數據。當正確執行完寫(xiě)入24C02子程序后需對EPSW清0,并且在主程序適當的地方加上EPSW清0指令,反復冗余執行。這樣程序受到干擾時(shí),EPSW多數為0,即使EPSW數受到干擾時(shí),也很少有機會(huì )剛好等于5AH,使錯誤數據非正常寫(xiě)入24C02的機會(huì )大大減少。
數據寫(xiě)入24C02子程序插入口令形式:
WRIT:CLRWP
MOVR1,#EPSW
MOVA,@R1
CJNEA,#5AH,WERR
……;
數據寫(xiě)入24C02操作部分:
WERR:SETBWP
MOVR1,#EPSW
MOV@R1,#0
RET
4.保護24C02數據的硬件措施
在某些干擾特別嚴重的場(chǎng)合,24C02數據還是有可能被沖掉,最徹底的方法是利用硬件來(lái)干預寫(xiě)入數據過(guò)程。一般情況下,是將WP引腳與CPU引腳斷開(kāi),而與功能鍵連接起來(lái),功能鍵沒(méi)按下時(shí),WP保持高電平,只有功能鍵按下時(shí),WP才是低電平,允許寫(xiě)操作。當然,這樣一來(lái)對于某些過(guò)程量需要程控存入24C02時(shí)就辦不到了,這也是利用功能鍵同步保護24C02數據的一種不方便之處。
如果寫(xiě)入24C02的數據跟2個(gè)按鍵有關(guān),則可以用二極管隔離,采用如圖2的形式。
這樣兩鍵本身互不影響,而任一鍵按下都能使WP變低,使數據寫(xiě)入操作有效,對于多鍵關(guān)聯(lián),依此類(lèi)推多放幾個(gè)二極管隔離就可以了。
5.結束語(yǔ)
以上所述的軟硬件措施在具體的單片機控制系統中可以靈活應用,硬件聯(lián)鎖保護比較徹底,但是單獨通過(guò)程序修改24C02中的某些數據就不可能了;軟件保護比較靈活,可以隨時(shí)對控制過(guò)程中處理的數據存入24C02,以達到掉電保存的目的。在筆者設計的智能光照箱單片機控制系統中,由于日光燈起動(dòng)和壓縮機起動(dòng)及關(guān)斷時(shí)的電源高頻干擾,系統的溫度設定值及時(shí)間設定值曾經(jīng)經(jīng)常發(fā)生變化,采用上述軟硬件并用的措施后系統運行穩定可靠,再也沒(méi)有發(fā)生設定數據被沖掉的現象。
評論