方向陽
(鄭州市第六十三中學,河南鄭州450009)
隨著單片機測控系統越來越復雜, 工作環境的干擾也越來越嚴重。 面對環境惡劣的工業現場,大量的干擾源雖然不會造成單片機系統硬件的破壞,卻常常會侵入系統破壞數字信號的時序,更改單片機寄存器內容,導致程序在地址空間內“亂飛”,或者陷入死循環。 因此,要保證新型微控制器的可靠性、安全性,就必須在提高硬件可靠性的基礎上,在程序設計中采取措施,通過軟件技術增強系統的穩定運行。
由于程序設計靈活,節省硬件資源,所以軟件抗干擾設計越來越引起人們的重視。下面,就以MCS-51 系列單片機為例,討論在基于單片機的測控系統中,主要應用的軟件抗干擾設計。
“指令冗余”就是在程序關鍵的地方人為插入一些單字節指令,或將有效單字節指令重寫。它是使程序從“亂飛”狀態恢復正常的一種有效措施,其前提條件要求PC 指針必須指向程序運行區,且必須執行到冗余指令。 正常情況下CPU 取指令過程是先取操作碼,再取操作數,當指令計數器PC 受到干擾出現錯誤時,程序便脫離正常軌道“亂飛”,導致CPU 把一些操作數當作操作碼來執行, 從而引起整個程序的混亂。
NOP 指令的插入是指令冗余設計的一種主要方式,由于MCS-51的所有指令不超過3 個字節,且多為單字節指令,所以通常是在雙字節指令和三字節指令后插入兩個字節以上的NOP 指令。 這樣即使程序“亂飛”落到操作數上,由于空操作指令NOP 的存在,就避免了后面的指令被當作操作數執行,使程序自動納入正軌。
此外,在對于程序流向控制起決定作用(如RET、ACALL、LJMP 等)或對系統工作狀態起重要作用(如SETB 等)的指令后面,插入兩條NOP 指令或重復寫入該指令,也可迅速將亂飛程序納入正軌,確保這些重要指令的正確執行。
當亂飛的程序進入非程序區,冗余指令便失去作用。 此時可通過軟件陷阱的設定,攔截亂飛程序,將其迅速引向一個指定位置,再進行錯誤處理,使程序重新納入正軌。
MCS-51 單片機的中斷向量區為:0003H~002FH, 如果部分因干擾而開放的話,可以在此區設計軟件陷阱,捕捉錯誤中斷。
設計陷阱時,首先要開放相應的中斷,在中斷服務程序中安排軟件陷阱,將程序引至復位入口地址或處理錯誤的程序入口地址。 當設定復位入口地址時,常采用的軟件陷阱形式為:
NOP
NOP
LJMP 0000H
也可利用某中斷源,如定時溢出中斷T0,可在中斷服務程序中設定陷阱程序如下:
ORG 000BH ;T0 溢出中斷入口地址
NOP
NOP
POP ACC
POP ACC;丟棄PC 壓入堆棧的錯誤斷點
PUSH 00H
PUSH 00H;將斷點地址0000H 送入棧頂
RETI
作為軟件陷阱的常用指令形式:LJMP 0000H, 其機器碼為0000020000。 對于沒有使用完的EPROM 芯片空間, 可用020000 填充,如果程序飛入該區間,即可快速導入正軌。
程序監視定時器(Watchdog,WDT),俗稱“看門狗”。 WDT 通過監視程序運行狀態, 判斷程序是否進入死循環或出現程序跑飛現象,進而強迫程序回到復位狀態。一可通過硬件電路實現,二可設置軟件“監視跟蹤定時器”實現,也就是我們要講的軟件“看門狗”技術。
在工業應用中,嚴重的干擾有時會破壞中斷方式控制字,關閉中斷,使對應的中斷服務程序得不到執行,此時硬件看門狗電路將失效,必須采用軟件“看門狗”予以配合,才能有效地解決此類問題。
設計軟件“看門狗”時,采用環形中斷監視系統,具體過程如下:
(1)用定時器T1 監視主程序的運行時間。估算系統主程序執行一次循環所需的時間t,給T1 設定一稍大于t 的定時時間(給主程序留有一定的裕度),在主程序中對T1 進行初始化編程。 如果主程序運行出現故障,T1 不能被及時初始化, 經過時間t 后,T1 必將產生溢出中斷,轉入中斷服務程序,使PC 重新獲得主程序入口地址。 對于經常使用定時器T1 進行串行通訊的測控系統,T1 則不能進行中斷, 可在主程序中設一運行觀測標志變量,改由串行口中斷進行監控。
(2)用定時器T0 監視定時器T1 的運行。在T1 中斷服務程中設一運行觀測標志變量WatchT1,T1 中斷服務程序每執行一次,WatchT1加1,在T0 中斷服務程序中通過檢測WatchT1 的變化情況判定T1 運行是否正常。 若檢測到標志變量變化不正常,比如應當加1 而未加1,則可斷定主程序運行出現故障,須在中斷服務程序中修改地址使程序重新復位。
(3)主程序監視定時器T0 的運行。 在T0 中斷服務程序中設一運行觀測標志變量WatchT0,T0 中斷服務程序每執行一次,WatchT0 加1。主程序在運行的開始儲存變量WatchT0 的初值,在主程序的尾部對變量進行判斷比較, 如果變量值發生了預期的變化, 說明T0 中斷正常,如果沒有變化則使程序重新復位運行。
采用以上這種環形結構的軟件“看門狗”具有良好的抗干擾性能,大大提高了系統可靠性,從而保證系統的穩定運行。
從根本上來說,軟件抗干擾仍是被動措施,而硬件抗干擾是主動措施。所以對基于單片機的測控系統來說,由于干擾信號眾多,我們必須通過分析系統所處環境的各種干擾來源,采用硬件與軟件抗干擾相結合的方法,完善系統監控程序,更好地保證單片機系統長期穩定可靠的運行。
[1]王幸之.單片機應用系統抗干擾技術[M].北京:北京航空航天大學出版社,2001.
[2]劉光斌,劉冬,姚志成.單片機系統實用抗干擾技術[M].北京:人民郵電出版社,2003.
[3]何立民.MCS-51 系列單片機應用系統設計系統配置與接口技術[M].北京:北京航空航天大學出版社,2001.