STC12系列單片機的空閑模式、休眠模式
1. 空閑模式
空閑模式是指只有單片機不工作的狀態。此時CPU無時鐘停止工作,但是外部中斷、外部低壓檢測電路、定時器、A/D轉換、串行口等仍正常運行。
在空閑模式下,RAM、堆棧指針(SP)、程序計數器(PC)、程序狀態字(PSW)、累加器(A)等寄存器都保持原有數據。I/O口保持著空閑模式被激活前那一刻的邏輯狀
態。此時單片機所有的外圍設備都能正常運行,當任何一個中斷產生時,它們都可以將單片機喚醒,單片機被喚醒后,CPU將繼續執行進入空閑模式語句的下一條指令。
怎樣退出空閑模式?
a.中斷:任何一個中斷的產生都會引起IDL/PCON.0被硬件清除,從而退出空閑模式;
b.外部RST引腳復位:將復位腳拉高,產生復位。再將RST腳拉低,結束復位,單片機從用戶程序的0000H處開始正常工作
空閑模式的目的?
讓單片機進入空閑模式的目的通常是為了降低系統的功耗,舉個很簡單的例子,大家都用過數字萬用表,在正常使用的時候表內部的單片機處于正常工作模式,當不用時,又忘記了關掉萬用表的電源,大多數表在等待數分鐘后,若沒有人為操作,它便會自動將液晶顯示關閉,以降低系統功耗,通常類似這種功能的實現就是使用了單片機的空閑模式或是掉電模式。以STC89系列單片機為例,當單片機正常工作時的功耗通常為4mA~7mA,進入空閑模式時其功耗降至2mA,當進入掉電模式時功耗可降至0.1μA以下。
2. 休眠模式(又叫掉電模式、停機模式)
當單片機進入掉電模式時,外部晶振停振、CPU、定時器、串行口全部停止工作,只有外部中斷繼續工作。使單片機進入休眠模式的指令將成為休眠前單片機執行的最后一條指令,進入休眠模式后,芯片中程序未涉及到的數據存儲器和特殊功能寄存器中的數據都將保持原值。可由外部中斷低電平觸發或由下降沿觸發中斷或者硬件復位模式換醒單片機,需要注意的是,使用中斷喚醒單片機時,程序從原來停止處繼續運行,當使用硬件復位喚醒單片機時,程序將從頭開始執行。
怎樣退出休眠模式?
a.可將CPU從休眠模式喚醒的外部管腳有:外部中斷0、外部中斷1、定時器0、定時器1、RxD、PWM0/PCA0/P3.7、PWM2/PCA2/P2.0、PWM3/PCA3/P2.4
b.外部復位也可以將MCU從掉電模式中喚醒,復位喚醒后的MCU將從用戶程序的0000H處開始正常工作。
控制單片機進入空閑模式和休眠模式的是電源管理寄存器PCON,這個寄存器的最低兩位,IDL和PD這兩位分別用來設定是否使單片機進入空閑模式和掉電模式。
將IDL/PCON.0置為1,則單片機就進入了空閑(IDLE)模式
將PD/PCON.1置為1,則單片機將進入掉電(Power Down)模式
更詳細的資料請參考STC12系列單片機數據手冊第二章:
評論