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