劉美星
[摘要]CHMOS和CMOS單片機屬于低功耗元件,它們都具有等待方式和掉電方式。兩種節(jié)電方式均可通過軟件來選擇運行,在這兩種節(jié)電運行方式下,可大大降低單片機的功耗。使用單片機的等待方式,不僅可降低其功耗,還可用于增強其抗干擾能力。以80C31單片機為例說明使用其等待方式實現(xiàn)其抗干擾的原理及技術。
[關鍵詞]單片機等待方式抗干擾
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0610023-01
一、80C31的等待工作方式
80C31單片機的等待方式是通過對其內(nèi)部PCON(電源控制寄存器)中的IDL(等待方式位)進行編程來實現(xiàn)的。當IDL=1時,80C31進入等待工作方式,此時,送往CPU的時鐘信號被封鎖,CPU進入等待狀態(tài),其內(nèi)部的SP、PC、PSW、ACC等寄存器以及各I/O口引腳的狀態(tài)被完整地保留下來,CPU就像在睡眠一樣,可稱之為進入睡眠狀態(tài)。此時,內(nèi)部時鐘信號仍繼續(xù)供給中斷系統(tǒng)、定時/計數(shù)器和串行口,它們?nèi)钥晒ぷ鳌M顺鏊郀顟B(tài)的方法有中斷退出和硬件復位退出兩種。由于在睡眠狀態(tài)時,中斷系統(tǒng)仍可工作,因此,任何允許中斷請求變?yōu)橛行r,均使硬件對IDL位消零,從而退出睡眠狀態(tài),并開始執(zhí)行中斷服務程序,中斷返回后,下一條要執(zhí)行的指令正是原先置等待工作方式指令后的那條指令。
二、CPU抗干擾技術
微機應用系統(tǒng)的抗干擾設計涉及到許多方面。此處只討論CPU本身的抗干擾方法。在大多數(shù)情況下,干擾是通過三總線而作用到CPU上的。當CPU受到干擾時,將不能按正常狀態(tài)執(zhí)行程序,從而引起混亂。人們研究和采用人工復位,掉電保護、指令冗余、軟件陷阱、程序運行監(jiān)視系統(tǒng)以及系統(tǒng)恢復等技術來實現(xiàn)CPU的抗干擾。根據(jù)上面對80C31 CPU等待工作方式的原理說明,當CPU進入睡眠狀態(tài)時,不會到系統(tǒng)三總線上出現(xiàn)的干擾做出反應,因此可大大降低CPU對干擾的敏感程度,從而增強CPU的抗干擾能力。我們可將其稱為CPU的睡眠抗干擾。
三、80C31CPU的睡眠抗干擾技術
通過對80C31CPUR入和退出睡眠狀態(tài)過程的分析,可采用下面兩種方法實現(xiàn)睡眠抗干擾。
方法一:讓CPU在沒有正經(jīng)工作時就睡覺,有活干時由中斷系統(tǒng)喚醒它,干完活后接著睡覺。
對大多數(shù)單片機應用系統(tǒng),CPU并非一直忙于干正經(jīng)事情,很多情況下是在執(zhí)行一些踏步等待指令或循環(huán)檢查程序,此時CPU雖未于什么重要工作,但卻是清醒的,很容易受干擾。如果安排其在沒有正經(jīng)工作時就睡覺,有活干時由中斷系統(tǒng)喚醒它,干完活后接著睡覺,就可使其受干擾的威脅大大降低,并可降低其功耗。按照這種思想,設計軟件時,可在主程序完成各種自檢和初始化工作以后,用下列兩條指令取代循環(huán)踏步指令:
LOOP:ORL PCON,#OIH
SJMP LOOP
把CPU要做的所有工作都安排在中斷服務子程序中完成,把系統(tǒng)的監(jiān)控程序放在定時中斷子程序中。主程序在執(zhí)行ORL PCON,#OIH后,CPU便進入睡眠狀態(tài),此時程序計數(shù)器PC中的地址指向下一條指令SJMP LOOP。當需要CPU執(zhí)行任務時,就通過中斷系統(tǒng)將CPU喚醒,CPU響應中斷,將PC的值壓入堆棧,然后執(zhí)行中斷子程序本身,完成任務以后,執(zhí)行一條開中斷指令,確保CPU在睡眠之后仍能被喚醒,最后執(zhí)行中斷返回指令,CPU將執(zhí)行主程序中的SJMP LOOP指令,又轉(zhuǎn)回到ORL PCON,#OIH這條指令上,執(zhí)行完這條指令后,CPU便再次進入睡眠狀態(tài),如此周而復始。應將可能引起強烈干擾的I/O操作指令放在CPU進入睡眠狀態(tài)前執(zhí)行,即放在中斷子程序的尾部。為確保CPU不過早被喚醒,以躲過強烈干擾的高峰,可臨時關閉一些次要的中斷,僅保留一個內(nèi)部定時中斷,定時盡可能長些,并作好標記。當下次定時中斷響應后,根據(jù)標記,恢復系統(tǒng)的正常中斷設置方式。
這種方法因CPU大部分時間處于睡眠狀態(tài),因此抗干擾性好,且可大大降低CPU的功耗,但可能涉及的中斷類型多,需要多個中斷源,挖掘較復雜。
方法二:使CPU平常處于正常工作狀態(tài),當執(zhí)行了有可能引起較強烈干擾的指令后(例如,在一些大功率微機挖掘系統(tǒng)中,大電流和高電壓設備的投入與切除都是由執(zhí)行指令來完成的,將會引起強烈干擾)使其進入睡眠狀態(tài),保持睡眠一段時間,以避過干擾高峰。在進入睡眠狀態(tài)前,設置好定時中斷,在避過干擾高峰后,由定時中斷將CPU喚醒,進入正常工作狀態(tài)。
此種方法涉及的中斷可少一些,控制較簡單,但因CPU大部分時間處于正常工作狀態(tài),因此其抗干擾性和降低功耗的效果比前一種方法差。
利用低功耗單片機的等待工作方式,不僅可以降低CPU的功耗,還可增強CPU的抗干擾能力。本文論述的兩種方法,雖各有優(yōu)缺點,但只要合理使用,可使CPU的抗干擾能力大為增強,在設計單片機應用系統(tǒng)時可參考使用。