我們知道微控制器內部有乙個電源管理暫存器
pcon
,這個暫存器的最低兩位,
idl和
pd這兩位分別用來設定是否使微控制器進入空閒模式和掉電模式。
1.空閒模式
當微控制器進入空閒模式時,除
cpu處於休眠狀態外,其餘硬體全部處於活動狀態,晶元中程式未涉及到的資料儲存器和特殊功能暫存器中的資料在空閒模式期間都將保持原值。但假若定時器正在執行,那麼計數器暫存器中的值還將會增加。微控制器在空閒模式下可由任乙個中斷或硬體復位喚醒,需要注意的是,使用中斷喚醒微控制器時,程式從原來停止處繼續執行,當使用硬體復位喚醒微控制器時,程式將從頭開始執行。
讓微控制器進入空閒模式的目的通常是為了降低系統的功耗,舉個很簡單的例子,大家都用過數字萬用表,在正常使用的時候表內部的微控制器處於正常工作模式,當不用時,又忘記了關掉萬用表的電源,大多數表在等待數分鐘後,若沒有人為操作,它便會自動將液晶顯示關閉,以降低系統功耗,通常類似這種功能的實現就是使用了微控制器的空閒模式或是掉電模式。以
stc89
系列微控制器為例,當微控制器正常工作時的功耗通常為
4ma~
7ma,進入空閒模式時其功耗降至
2ma,當進入掉電模式時功耗可降至
0.1μa
以下。2.
休眠模式
當微控制器進入掉電模式時,外部晶振停振、
cpu、定時器、序列口全部停止工作,只有外部中斷繼續工作。使微控制器進入休眠模式的指令將成為休眠前微控制器執行的最後一條指令,進入休眠模式後,晶元中程式未涉及到的資料儲存器和特殊功能暫存器中的資料都將保持原值。可由外部中斷低電平觸發或由下降沿觸發中斷或者硬體復位模式換醒微控制器,需要注意的是,使用中斷喚醒微控制器時,程式從原來停止處繼續執行,當使用硬體復位喚醒微控制器時,程式將從頭開始執行。
下面的例子演示微控制器進入空閒和休眠模式,並且演示出從空閒和休眠模式中喚醒的過程。
【例】:
在tx-1c
實驗板上完成如下描述,開啟兩個外部中斷,設定低電平觸發中斷,用定時器計數並且顯示在數碼管的前兩位,當計到
5時,使微控制器進入空閒(休眠
)模式,同時關閉定時器,當微控制器響應外部中斷後,從空閒(休眠
)模式返回,同時開啟定時器。
新建檔案
part3.4.1.c
,程式**如下:
#include//52
系列微控制器標頭檔案
#defineucharunsignedchar
#defineuintunsignedint
sbitdula=p2^6;//
申明u1
鎖存器的鎖存端
sbitwela=p2^7;//
申明u2
鎖存器的鎖存端
ucharcodetable=;
ucharnum;
voiddelayms(uint);
voiddisplay(ucharshi,ucharge)//
顯示子函式
voiddelayms(uintxms)
voidmain()
a=num1/10;
b=num1%10;
}display(a,b);}}
voidtimer0()interrupt1
voidex_int0()interrupt0
voidex_int1()interrupt2
分析:(1)ea=1;
開總中斷
et0=1;
開定時器0中斷
ex0=1;
開外部中斷
0ex1=1;
開外部中斷
1tr0=1;
啟動定時器
0(2)
主程式中有
「et0=0;」
下句是「pcon=0x02;」
意思是在進入休眠模式之前要先把定時器關閉,這樣方可一直等待外部中斷的產生,如果不關閉定時器,定時器的中斷同樣也會喚醒微控制器,使其退出休眠模式,這樣我們便看不出進入休眠模式和返回的過程。
(3)voidex_int0()interrupt0
這是外部中斷
0服務程式,當進入外部中斷服務程式後,首先將
pcon
中原先設定的休眠控制位清除
(如果不清除,程式也可以正常執行,大家最好親自做實驗驗證
),接下來再重新開啟定時器0。
(4)「00」
開始遞增顯示,到
「05」
後,再過一秒後,數碼管變成只顯示乙個
「5」,微控制器進入休眠或空閒模式,用導線一端連線地,另一端接觸
p3.2
或p3.3
,數碼管重新從
「06」
開始顯示,遞增下去。整個過程演示了微控制器從正常工作模式進入休眠模式或空閒模式,然後再從休眠模式或空閒模式返回到正常工作模式。
(5)測試過程大家可將數字萬用表調節到電流檔,然後串接入電路中,觀察微控制器在正常工作模式、休眠模式、空閒模式下流過系統的總電流變化情況,經測試可發現結果如下:正常工作電流
>
空閒模式電流
>
休眠模式電流。
微控制器空閒與掉電模式
特別對於電池供電系統來說,功耗是首要考慮的問題.我們知道微控制器內部有乙個電源管理暫存器pcon,這個暫存器的最低兩位,idl和pd這兩位分別用來設定是否使微控制器進入空閒模式和掉電模式。1.空閒模式 當微控制器進入空閒模式時,除cpu處於休眠狀態外,其餘硬體全部處於活動狀態,晶元中程式未涉及到的資...
微控制器莫名掉電
開發乙個低功耗專案,坑爹的地方不是乙個兩個。真的是服了。今天又被萬用表坑了一次。系統進入低功耗之後電流在幾十個ua左右,這時候使用觸控按鍵喚醒系統沒有問題,可以正常喚醒執行,但是使用指紋模組喚醒的話就會導致掉電,為什麼呢?指紋模組耗電量太大?的確指紋模組的耗電量是很大,峰值電流140ma,我就想是不...
微控制器的IO模式
以nuvoton的m0516為例,io引腳可以配置為四種模式 1,高阻輸入模式,這種方式只用於輸入資料的讀取。2,開漏模式,這種方式若不接上拉電阻時,則可以輸出高阻或低電平兩種狀態,作為輸出是一般需要外接上拉電阻的。3,準雙向模式,這種方式具有輸入和輸出的功能。當io輸出為高電平時,其驅動能力很弱,...