131 1300 0010
其他
當(dāng)前位置: 首頁(yè)>> 元件技術(shù)>>其他>>
  • 導(dǎo)航欄目
  • 二極管
  • 整流橋
  • MOS管
  • 其他
  • 單片機(jī)空閑模式和掉電模式的設(shè)定方法
    單片機(jī)空閑模式和掉電模式的設(shè)定方法
  • 單片機(jī)空閑模式和掉電模式的設(shè)定方法
  •   發(fā)布日期: 2019-03-20  瀏覽次數(shù): 1,144

    我們知道單片機(jī)內(nèi)部有一個(gè)電源管理寄存器PCON,這個(gè)寄存器的最低兩位,IDL和PD這兩位分別用來(lái)設(shè)定是否使單片機(jī)進(jìn)入空閑模式和掉電模式。

    1.空閑模式

     

    當(dāng)單片機(jī)進(jìn)入空閑模式時(shí),除CPU處于休眠狀態(tài)外,其余硬件全部處于活動(dòng)狀態(tài),芯片中程序未涉及到的數(shù)據(jù)存儲(chǔ)器和特殊功能寄存器中的數(shù)據(jù)在空閑模式期間都將保持原值。但假若定時(shí)器正在運(yùn)行,那么計(jì)數(shù)器寄存器中的值還將會(huì)增加。單片機(jī)在空閑模式下可由任一個(gè)中斷或硬件復(fù)位喚醒,需要注意的是,使用中斷喚醒單片機(jī)時(shí),程序從原來(lái)停止處繼續(xù)運(yùn)行,當(dāng)使用硬件復(fù)位喚醒單片機(jī)時(shí),程序?qū)念^開始執(zhí)行。

    讓單片機(jī)進(jìn)入空閑模式的目的通常是為了降低系統(tǒng)的功耗,舉個(gè)很簡(jiǎn)單的例子,大家都用過數(shù)字萬(wàn)用表,在正常使用的時(shí)候表內(nèi)部的單片機(jī)處于正常工作模式,當(dāng)不用時(shí),又忘記了關(guān)掉萬(wàn)用表的電源,大多數(shù)表在等待數(shù)分鐘后,若沒有人為操作,它便會(huì)自動(dòng)將液晶顯示關(guān)閉,以降低系統(tǒng)功耗,通常類似這種功能的實(shí)現(xiàn)就是使用了單片機(jī)的空閑模式或是掉電模式。以STC89系列單片機(jī)為例,當(dāng)單片機(jī)正常工作時(shí)的功耗通常為4mA~7mA,進(jìn)入空閑模式時(shí)其功耗降至2mA,當(dāng)進(jìn)入掉電模式時(shí)功耗可降至0.1μA以下。

    2.休眠模式

    當(dāng)單片機(jī)進(jìn)入掉電模式時(shí),外部晶振停振、CPU、定時(shí)器、串行口全部停止工作,只有外部中斷繼續(xù)工作。使單片機(jī)進(jìn)入休眠模式的指令將成為休眠前單片機(jī)執(zhí)行的最后一條指令,進(jìn)入休眠模式后,芯片中程序未涉及到的數(shù)據(jù)存儲(chǔ)器和特殊功能寄存器中的數(shù)據(jù)都將保持原值??捎赏獠恐袛嗟碗娖接|發(fā)或由下降沿觸發(fā)中斷或者硬件復(fù)位模式換醒單片機(jī),需要注意的是,使用中斷喚醒單片機(jī)時(shí),程序從原來(lái)停止處繼續(xù)運(yùn)行,當(dāng)使用硬件復(fù)位喚醒單片機(jī)時(shí),程序?qū)念^開始執(zhí)行。
     

    單片機(jī)空閑模式和掉電模式的設(shè)定方法

    下面的例子演示單片機(jī)進(jìn)入空閑和休眠模式,并且演示出從空閑和休眠模式中喚醒的過程。

    【例】:在TX-1C實(shí)驗(yàn)板上完成如下描述,開啟兩個(gè)外部中斷,設(shè)置低電平觸發(fā)中斷,用定時(shí)器計(jì)數(shù)并且顯示在數(shù)碼管的前兩位,當(dāng)計(jì)到5時(shí),使單片機(jī)進(jìn)入空閑(休眠)模式,同時(shí)關(guān)閉定時(shí)器,當(dāng)單片機(jī)響應(yīng)外部中斷后,從空閑(休眠)模式返回,同時(shí)開啟定時(shí)器。

    新建文件part3.4.1.c,程序代碼如下:

    #include//52系列單片機(jī)頭文件

    #defineucharunsignedchar

    #defineuintunsignedint

    sbitdula=P2^6;//申明U1存器的鎖存端

    sbitwela=P2^7;//申明U2鎖存器的鎖存端

    ucharcodetable[]={

    0x3f,0x06,0x5b,0x4f,

    0x66,0x6d,0x7d,0x07,

    0x7f,0x6f,0x77,0x7c,

    0x39,0x5e,0x79,0x71};

    ucharnum;

    voiddelayms(uint);

    voiddisplay(ucharshi,ucharge)//顯示子函數(shù)

    {

    dula=1;

    P0=table[shi];//送十位段選數(shù)據(jù)

    dula=0;

    P0=0xff;//送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開位選鎖存時(shí)

    wela=1;//原來(lái)段選數(shù)據(jù)通過位選鎖存器造成混亂

    P0=0xfe;//送位選數(shù)據(jù)

    wela=0;

    delayms(5);//延時(shí)

    dula=1;

    P0=table[ge];//送個(gè)位段選數(shù)據(jù)

    dula=0;

    P0=0xff;

    wela=1;

    P0=0xfd;

    wela=0;

    delayms(5);

    }

    voiddelayms(uintxms)

    {

    uinti,j;

    for(i=xms;i》0;i--)//i=xms即延時(shí)約xms毫秒

    for(j=110;j》0;j--);

    }

    voidmain()

    {

    uchara,b,num1;

    TMOD=0x01;//設(shè)置定時(shí)器0為工作方式1(00000001)

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

    EA=1;

    ET0=1;

    EX0=1;

    EX1=1;

    TR0=1;

    while(1)

    {

    if(num》=20)

    {

    num=0;

    num1++;

    if(num1==6)

    {

    ET0=0;

    PCON=0x02;(或PCON=0x01;)

    }

    a=num1/10;

    b=num1%10;

    }

    display(a,b);

    }

    }

    voidtimer0()interrupt1

    {

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

    num++;

    }

    voidex_int0()interrupt0

    {

    PCON=0;

    ET0=1;

    }

    voidex_int1()interrupt2

    {

    PCON=0;

    ET0=1;

    }

    分析:

    (1)EA=1;開總中斷

    ET0=1;開定時(shí)器0中斷

    EX0=1;開外部中斷0

    EX1=1;開外部中斷1

    TR0=1;啟動(dòng)定時(shí)器0

    (2)主程序中有“ET0=0;”下句是“PCON=0x02;”意思是在進(jìn)入休眠模式之前要先把定時(shí)器關(guān)閉,這樣方可一直等待外部中斷的產(chǎn)生,如果不關(guān)閉定時(shí)器,定時(shí)器的中斷同樣也會(huì)喚醒單片機(jī),使其退出休眠模式,這樣我們便看不出進(jìn)入休眠模式和返回的過程。

    (3)voidex_int0()interrupt0

    {

    PCON=0;

    ET0=1;

    }

    這是外部中斷0服務(wù)程序,當(dāng)進(jìn)入外部中斷服務(wù)程序后,首先將PCON中原先設(shè)定的休眠控制位清除(如果不清除,程序也可以正常運(yùn)行,大家最好親自做實(shí)驗(yàn)驗(yàn)證),接下來(lái)再重新開啟定時(shí)器0。

    (4)下載程序后,實(shí)驗(yàn)現(xiàn)象如下:數(shù)碼管從“00”開始遞增顯示,到“05”后,再過一秒后,數(shù)碼管變成只顯示一個(gè)“5”,單片機(jī)進(jìn)入休眠或空閑模式,用導(dǎo)線一端連接地,另一端接觸P3.2或P3.3,數(shù)碼管重新從“06”開始顯示,遞增下去。整個(gè)過程演示了單片機(jī)從正常工作模式進(jìn)入休眠模式或空閑模式,然后再?gòu)男菝吣J交蚩臻e模式返回到正常工作模式。

    (5)測(cè)試過程大家可將數(shù)字萬(wàn)用表調(diào)節(jié)到電流檔,然后串接入電路中,觀察單片機(jī)在正常工作模式、休眠模式、空閑模式下流過系統(tǒng)的總電流變化情況,經(jīng)測(cè)試可發(fā)現(xiàn)結(jié)果如下:正常工作電流》空閑模式電流》休眠模式電流。


  • ·上一篇:
    ·下一篇:
  • 其他關(guān)聯(lián)資訊
    深圳市日月辰科技有限公司
    地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
    電話:0755-2955 6626
    傳真:0755-2978 1585
    手機(jī):131 1300 0010
    郵箱:hu@szryc.com

    深圳市日月辰科技有限公司 版權(quán)所有:Copyright?2010-2023 elibeatofitness.com 電話:13113000010 粵ICP備2021111333號(hào)