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