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