?

51單片機應用系統軟件抗干擾初探

2016-05-14 12:58王芳
青春歲月 2016年8期
關鍵詞:抗干擾單片機軟件

【摘要】在提高單片機硬件系統抗干擾能力的同時,軟件抗干擾以其設計靈活、節省硬件資源、可靠性好等特點,越來越受到設計者的重視,本文主要從實際應用的角度闡述單片機系統軟件抗干擾的具體實現方法。

【關鍵詞】單片機;軟件;看門狗;抗干擾;指令集

隨著單片機在各個領域應用愈來愈廣泛,單片機應用系統的可靠性越來越成為人們關注的一個重要課題。由于51系列單片機的指令系統是復雜指令集結構,致使其抗干擾性能不高,尤其用在工業控制的場合,不增加額外的抗干擾措施,甚至無法正常工作。要提高單片機系統的抗干擾性能無非是從硬件和軟件兩個方面加以考慮。硬件系統是單片機系統穩定工作的根本,經常采用的方法有:改善系統的布局、布線;提高強電與弱電的隔離度;增加濾波器;增加“硬件看門狗”等等,成本高;而軟件抗干擾在不增加系統復雜性,不提高成本,也可以提高系統的穩定性。51系列單片機的指令包括單字節、雙字節和三字節指令,雙字節和三字節指令包含操作碼和操作數兩部分。當單片機受到嚴重干擾時,程序計數器PC因干擾而改變,程序便脫離正常軌道“亂飛”,如果“飛”到單字節指令或雙字節、三字節指令的操作碼上,稱這種“跑飛”為“第一類跑飛”。當“飛”到某雙字節或三字節指令的操作數上,誤將操作數當作操作碼執行,出現嚴重錯誤,稱這種“跑飛”為“第二類跑飛”。無論是前一種情況還是后一種情況,“跑飛”的程序執行結果將是無法預料的。

一、單片機軟件抗干擾設計的主要方法

軟件抗干擾設計的主要目的就是及時發現程序的“跑飛”,并及時地將程序拉入正常軌道,主要方法有:指令冗余、軟件“看門狗”、軟件“陷阱”、程序“跑飛”攔截等等。

1、指令冗余

CPU取指令過程是先取操作碼,再取操作數。在程序的關鍵地方人為的插入一些單字節指令,或將有效單字節指令重寫稱為指令冗余,通常是在雙字節指令和三字節指令后插入兩個字節以上的NOP指令。此外,對系統流向起重要作用的指令,如RET、RETI、LCALL、LJMP、JC等,可以在這些指令之前插入兩條NOP指令,可將跑飛程序納入正軌,以確保這些重要指令的執行。指令冗余只能使CPU不再將操作數當作操作碼錯誤地執行,卻不能主動地將程序的錯誤執行方向扭轉過來,要想糾正程序的錯誤執行方向,就需要下面的技術。

2、軟件“看門狗”技術

跑飛的程序在執行一些錯誤操作之后,經常會進入“死循環”,也就是常說的“死機”。通常采用“看門狗”技術使程序脫離“死循環”,“看門狗”技術可由硬件實現,也可由軟件實現。在工業應用中,嚴重的干擾有時會破壞中斷方式控制字,關閉中斷,造成看門狗失效,這時可以采用環形中斷監視系統。用定時器T0監視定時器T1,用定時器T1監視主程序,主程序監視定時器T0。采用這種環形結構的軟件“看門狗”具有良好的抗干擾性能,大大提高了系統可靠性。

軟件“看門狗”技術需要使用定時器,而在大多數的控制程序中,定時器都是緊俏的資源,這就使軟件“看門狗”技術的實際應用受到了限制,可以采取一些技巧性的處理,將軟件“看門狗”程序與其它定時程序復用同一個定時器,這樣既完成定時功能又完成軟件“看門狗”的功能。

3、軟件“陷阱”

通常在程序存儲器中未使用的EPROM空間填入空操作指令NOP(00H),最后再填入一條跳轉指令,跳轉到跑飛處理程序,或者直接填入指令LJMP 0000H (020000),當跑飛程序落到此區,即可在執行一段空操作后轉入正軌。

軟件陷阱的一般結構為:

NOP

NOP

LJMP FLY;FLY為跑飛處理程序。

如果程序正常執行,軟件陷阱部分是永遠也執行不到的,只有在程序跑飛到陷阱里,軟件陷阱會立刻將程序跳轉到正常軌道。

除了程序存儲器的空白區,程序的數據表結尾也應該設置軟件陷阱,如果數據表比較大,應該在數據表的中間也設置軟件陷阱,以保證程序跑飛到數據區能及時轉入正軌。當使用的中斷因干擾而開放時,在對應的中斷服務程序中設置軟件陷阱,能及時捕獲錯誤的中斷。如某應用系統雖未用到外部中斷1,外部中斷1的中斷服務程序可為如下形式:

NOP

NOP

RETI

返回指令可用“RETI”,也可用“LJMP FLY”,用“LJMP FLY”作返回指令可直接進入故障診斷程序,盡早地處理故障并恢復程序的運行。軟件陷阱的數量要根據實際受到干擾的情況和程序存貯器的容量來確定。

4、設置程序運行標志,攔截“跑飛”程序

單片機程序的結構一般都是由一個上電復位初始化程序、一個主程序、幾個中斷服務程序和若干子程序組成的,51系列單片機的RAM區中有一個位尋址區,可以在位尋址區中設立一些標志位,這些標志位分別代表不同的程序模塊,一個字節可以對應8個程序模塊。舉一個簡單的例子來說明攔截“跑飛”程序的應用,在調用每一個子程序的開始將自己的標志位置1,在子程序的結尾進行檢查,如果自己的標志位是1,說明程序執行正常,否則程序就出現了“跑飛”,在退出該子程序之前,將其對應標志位清零。

如果程序模塊比較多,位尋址區不夠使用,可以給不同的模塊分配不同的代碼,在RAM區選擇一個特殊字節作為運行標志,當某個程序模塊正在執行時,將該特殊字節賦值為該模塊的代碼,這樣一個RAM字節就可以對應256個程序模塊。

二、經常用到的其它提高單片機系統抗干擾性能的方法

1、檢查RAM區標志數據,及時發現嚴重干擾

這種方法是在RAM區中選擇幾個固定單元,在初始化程序中將其設置成固定的數據,如“55H”或“0AAH”等,只要程序正常運行,這些單元的內容是不會改變的。如果因為程序“跑飛”或其它干擾導致這些RAM單元中的任何單元的數據發生了變化,說明單片機系統已經受到了嚴重的干擾,不能可靠地運行下去了。適時地檢查RAM單元的內容,發現有數據改變,立刻執行LJMP0000H語句,強制單片機復位。

2、刷新輸出端口,排除嚴重干擾

當單片機系統受到嚴重干擾時,輸出端口的狀態也可能因干擾而改變,在程序的執行過程中適時地根據相關程序模塊的運算結果刷新輸出端口,可以排除干擾對輸出端口狀態的影響,使錯誤的輸出狀態及時得到糾正。

3、輸入多次采樣,避免嚴重干擾

強烈的干擾會影響單片機的輸入信號,造成輸入信號瞬間采樣的誤差或誤讀,要避免干擾的影響,通常采取重復采樣、加權平均的方法。

4、結束語

軟件運行過程中受到的干擾是不確定的,軟件抗干擾屬于微機系統的自身防御行為,以上所提到的軟件抗干擾的方法,都不是單獨使用的,只有根據實際情況將這些方法有效地結合起來,并與硬件抗干擾措施一起使用,才能達到最佳抗干擾效果,使單片機系統穩定可靠地工作。

【參考文獻】

[1] 胡漢才. 單片機原理及其接口技術. 北京:清華大學出版社, 2005.

[2] 戴梅萼. 微型計算機及其應用. 北京:清華大學出版社, 2000.

【作者簡介】

王芳(1981—),女,漢族,內蒙包頭人,碩士學位,包頭輕工職業技術學院講師,主要研究方向:計算機科技。

猜你喜歡
抗干擾單片機軟件
有趣的識花軟件
艦載雷達面臨的電子對抗威脅及防范措施分析
變頻器控制回路抗干擾措施及調試故障處理
即時通訊軟件WhatsApp
異步電動機節能控制方法及抗干擾技術
C8051F020與80C51單片機的異同點
豐富多彩的Android軟件
如何在智能手機中安裝軟件
單片機I/O口模擬串行通訊的C51實現方法
單片機調試方法的探討
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合