單片機看門(mén)狗電路的作用,看門(mén)狗系統設計技巧及其抗干擾措施
(3)采用計數器、單穩態(tài)觸發(fā)器、定時(shí)器等器件構成。在圖3中用4060構成了一個(gè)二級“看門(mén)狗”電路。
因/I/N/T/O中斷入口0003H處僅有0003H~000AH單元可為中斷服務(wù)程序所用,很可能容納不下中斷服務(wù)程序,故應在其內安排一條JMP Watch dog指令。由于“跑飛”,PC值在響應中斷前已被破壞,在響應中斷后,該內容自動(dòng)被壓入堆棧,故一定要用兩條POP A指令將無(wú)用內容彈出,以便為中斷返回時(shí)由堆棧給PC賦予“跑飛”處的正確值,這一點(diǎn)在設計中斷服務(wù)程序時(shí)尤其要引起重視。通過(guò)對P1.0取反,恢復對4060的觸發(fā)脈沖。在中斷服務(wù)中應安排被破壞數據的診斷、修復以及查找“跑飛”處的地址正確入口,并在返回前將其壓棧。當執行RETI時(shí),“跑飛”處斷點(diǎn)地址入口自動(dòng)彈棧到PC,恢復正常運行。P1.0取反指令在何處插入應通過(guò)計算指令周期讓兩條CLR P1.0指令間隔小于定時(shí)器的定時(shí)時(shí)間T1

(4)利用8031片內定時(shí)器/計數器 8031片內有兩個(gè)十六位的定時(shí)器/計數器,可用定時(shí)器T0。在應用程序對T0初始化時(shí),將其定時(shí)時(shí)間T2設置得比應用程序循環(huán)體執行時(shí)間T1長(cháng),可?。篢2=(1.5~2)T1。當程序正常時(shí),T0不會(huì )溢出,“跑飛”時(shí)溢出,定時(shí)器/計數器控制寄存器TCON的TF0(TCON.5)由8031內部硬件置位TF0=1,發(fā)出中斷信號。設8031采用12MHz晶振,經(jīng)定時(shí)器內部12分頻后得1MHz的定時(shí)時(shí)鐘,對應定時(shí)時(shí)間1μs,最長(cháng)可定時(shí)約65.5ms,如應用程序循環(huán)時(shí)間T1=10ms,則可取T2=2T1=20ms,定時(shí)器的初值X可由下式確定:
(216-X)×1μs=20ms
X=45536D=B1EOH
定時(shí)器的初始化程序:
MOV TLO,#OEOH
MOV THO,#OB1H;定時(shí)器/計數器T0寫(xiě)入初值
MOV TMOD,#O1H;設置定時(shí)器/計數器工作方式1
SETB TRO; 起動(dòng)定時(shí)器/計數器T0
在應用程序的系統初始化時(shí)用下面指令設定T0優(yōu)先級:
SETB EA; 開(kāi)放中斷
SETB ETO; 允許T0中斷
SETB PTO; 置T0中斷優(yōu)先級最高
T0中斷服務(wù)流程與/I/N/T/O中斷服務(wù)流程(見(jiàn)圖4)相比,其中斷入口為000BH,去掉P1.0取反的指令,其余相同???jì)?yōu)先級別最高的中斷將控制權重新奪回交給CPU,使系統恢復正常。
6
4、 斷點(diǎn)的查找與恢復
斷點(diǎn)的查找與恢復是人們最關(guān)注的問(wèn)題,我們的方法是擴展一外部數據存儲器,用以存儲“跑飛”前斷點(diǎn)(或接近斷點(diǎn))的PC之值以及一些重要的變量、指針及控制字的值。利用正常工作時(shí)P1.0向“看門(mén)狗”發(fā)送的觸發(fā)脈沖經(jīng)反向、延時(shí)等作為外部擴展RAM的片選信號以T1為周期定時(shí)對外部RAM中內容進(jìn)行刷新。當“跑飛”后因觸發(fā)脈沖丟失而避免了外部RAM被攻擊,保證其內容的可靠性。隨著(zhù)T1的減少,被恢復的值就愈趨近斷點(diǎn)值,但要非常準確找到斷點(diǎn),還值得人們研究。在中斷響應時(shí)由于P1.0恢復了輸出觸發(fā)脈沖,故可將斷點(diǎn)值讀出。
結束語(yǔ)
“看門(mén)狗”是對付“跑飛”的有力手段,在生產(chǎn)過(guò)程中由于特定的生產(chǎn)條件使得“看門(mén)狗”技術(shù)有其相當的作用。我們在對某水泥廠(chǎng)微機配料系統的技術(shù)改造過(guò)程中采用了二級“看門(mén)狗”技術(shù),該系統運行兩年多來(lái)經(jīng)受住了各種強干擾的考驗,取得了令人滿(mǎn)意的效果。
對于“跑飛”后的診斷、恢復,尤其是如何更準確地找到程序“跑飛”斷點(diǎn),對被損數據加以恢復等方面盡管有許多軟件可以利用,但還是值得人們多加關(guān)注的問(wèn)題。
評論