AT89S51有兩種低功耗節(jié)電工作模式:空閑模式(Idle Mode)和掉電保持模式(PowerDown Mode),其目的是盡可能低降低系統(tǒng)功耗。在掉電保持模式下,VCC可由后備電源供電。圖2-22為兩種低功耗節(jié)電模式的內(nèi)部控制電路。
AT89S51的兩種低功耗節(jié)電模式可通過指令對特殊功能寄存器PCON的位IDL和位PD的設(shè)置來實現(xiàn)。特殊功能寄存器PCON的格式如圖2-23所示,字節(jié)地址為87H
PCON寄存器各位的定義如下:
SMOD:串行通信的波特率選擇位
一:保留位,未定義。
GF1、GFO:通用標(biāo)志位,供用戶在程序設(shè)計時使用,兩個標(biāo)志位用戶應(yīng)充分利用。
PD:掉電保持模式控制位,若PD=1,則進(jìn)入掉電保持模式。
IDL:空閑模式控制位,若IDL=1,則進(jìn)入空閑運行模式。
空閑模式
1.空閑模式的進(jìn)入
如果用指令把寄存器PCON中的IDL位置1,由圖2-22可見,則把通往CPU的時鐘信號關(guān)斷,單片機(jī)便進(jìn)入空閑模式。這時雖然振蕩器仍然運行,但是CPU進(jìn)入空閑狀態(tài)。此時,所有外圍電路(中斷系統(tǒng)、串行口和定時器)仍繼續(xù)工作,SP、PC、PSW、A、PO~P3端口等所有其他寄存器,以及內(nèi)部RAM和SFR中的內(nèi)容均保持進(jìn)入空閑模式前的狀態(tài)。
2.空閑模式的退出
系統(tǒng)進(jìn)入空閑模式后有兩種方法可退出,一種是響應(yīng)中斷方式,另一種是硬件復(fù)位方式。
在空閑模式下,若任何一個允許的中斷請求被響應(yīng)時,IDL位被片內(nèi)硬件自動清0,從而退出空閑模式。當(dāng)執(zhí)行完中斷服務(wù)程序返回時,將從設(shè)置空閑模式指令的下一條指令(斷點處)開始繼續(xù)執(zhí)行程序。
另一種退出空閑模式的是硬件復(fù)位。當(dāng)使用硬件復(fù)位退出空閑模式時,在復(fù)位邏輯電路發(fā)揮控制作用前,有長達(dá)兩個機(jī)器周期的時間,單片機(jī)要從斷點處(IDL位置1指令的下一條指令處)繼續(xù)執(zhí)行程序。在這期間,片內(nèi)硬件阻止CPU對片內(nèi)RAM的訪問,但不阻止對外部端口(或外部RAM)的訪問。為了避免在硬件復(fù)位退出空閑模式時出現(xiàn)對端口(或外部RAM)的不希望的寫入,系統(tǒng)在進(jìn)入空閑模式時,緊隨IDL位置1的指令后面的不應(yīng)是寫端口(或外部RAM)的指令。
掉電運行模式
1.掉電模式的進(jìn)入用指令把PCON寄存器的PD位置l,單片機(jī)便進(jìn)入掉電模式。由圖2-22可見,在掉電模式下,進(jìn)入時鐘振蕩器的信號被封鎖,振蕩器停止工作。由于沒有了時鐘信號,內(nèi)部的所有功能部件均停止工作,但片內(nèi)的RAM和SFR原來的內(nèi)容都被保留,有關(guān)端口的輸出狀態(tài)值都保存在對應(yīng)的特殊功能寄存器中。
2.掉電模式的退出掉電模式的退出有兩種方法:硬件復(fù)位和外部中斷。硬件復(fù)位時要重新初始化SFR,但不改變片內(nèi)RAM的內(nèi)容。當(dāng)Vcc恢復(fù)到正常工作水平時,只要硬件復(fù)位信號維持lOms,便可使單片機(jī)退出掉電運行模式。
掉電和空閑模式下的WDT
掉電模式下振蕩器停止,也就意味著WDT停止計數(shù)。用戶在掉電模式下不需要操作WDT。
掉電模式的退出有兩種方法:硬件復(fù)位和外部中斷。當(dāng)用硬件復(fù)位退出掉電模式時,對WDT的操作與正常情況一樣。中斷方式退出掉電模式時,應(yīng)使中斷輸入保持足夠長時間的低電平,以使振蕩器達(dá)到穩(wěn)定。當(dāng)中斷變?yōu)楦唠娖街螅撝袛啾粓?zhí)行,在中斷服務(wù)程序中復(fù)位寄存器WDTRST。在外部中斷引腳保持低電平時,為防止WDT溢出復(fù)位,在系統(tǒng)進(jìn)入掉電模式之前先對寄存器WDTRST復(fù)位。
在進(jìn)入空閑模式之前,應(yīng)先設(shè)置特殊功能寄存器AUXR中的WDIDLE位,以確認(rèn)WDT是否繼續(xù)計數(shù)。當(dāng)WDIDLE=O時,空閑模式下的WDT保持繼續(xù)計數(shù)。為防止復(fù)位單片機(jī),用戶可設(shè)計一定時器。該定時器使器件定時退出空閑模式,然后復(fù)位WDTRST,再重新進(jìn)入空閑模式。
當(dāng)WDIDLE=1時,WDT在空閑模式下暫停計數(shù),退出空閑模式后,方可恢復(fù)計數(shù)。