在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)電源管理寄存器PCON的用法

        單片機(jī)電源管理寄存器PCON的用法

        作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò) 收藏
        我們知道單片機(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ū)念^開(kāi)始執(zhí)行。
        讓單片機(jī)進(jìn)入空閑模式的目的通常是為了降低系統(tǒng)的功耗,舉個(gè)很簡(jiǎn)單的例子,大家都用過(guò)數(shù)字萬(wàn)用表,在正常使用的時(shí)候表內(nèi)部的單片機(jī)處于正常工作模式,當(dāng)不用時(shí),又忘記了關(guān)掉萬(wàn)用表的電源,大多數(shù)表在等待數(shù)分鐘后,若沒(méi)有人為操作,它便會(huì)自動(dòng)將液晶顯示關(guān)閉,以降低系統(tǒng)功耗,通常類(lèi)似這種功能的實(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ū)念^開(kāi)始執(zhí)行。
        【例】:開(kāi)啟兩個(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í)開(kāi)啟定時(shí)器。
        程序代碼如下:
        #include //52系列單片機(jī)頭文件
        #define uchar unsigned char
        #define uint unsigned int
        sbit dula=P2^6; //申明U1鎖存器的鎖存端
        sbit wela=P2^7; //申明U2鎖存器的鎖存端
        uchar code table[]={
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71};
        uchar num;
        void delayms(uint);
        void display(uchar shi,uchar ge) //顯示子函數(shù)
        {
        dula=1;
        P0=table[shi]; //送十位段選數(shù)據(jù)
        dula=0;
        P0=0xff; //送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開(kāi)位選鎖存時(shí)
        wela=1; //原來(lái)段選數(shù)據(jù)通過(guò)位選鎖存器造成混亂
        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);
        }
        void delayms(uint xms)
        {
        uint i,j;
        for(i=xms;i>0;i--) //i=xms即延時(shí)約xms毫秒
        for(j=110;j>0;j--);
        }
        void main()
        {
        uchar a,b,num1;
        TMOD=0x01; //設(shè)置定時(shí)器0為工作方式1(0000 0001)
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%6;
        EA=1;
        ET0=1;
        EX0=1;
        EX1=1;
        P0=1;
        while(1)
        {
        if(num>=20)
        {
        num=0;
        num1++;
        if(num1==6)
        {
        ET0=0;
        PCON=0x02; (或PCON=0x01;)
        }
        a=num1/10;
        b=num1;
        }
        display(a,b);
        }
        }
        void timer0() interrupt 1
        {
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%6;
        num++;
        }
        void ex_int0() interrupt 0
        {
        PCON=0;
        ET0=1;
        }
        void ex_int1() interrupt 2
        {
        PCON=0;
        ET0=1;
        }
        分析:
        (1) EA=1; 開(kāi)總中斷
        ET0=1; 開(kāi)定時(shí)器0中斷
        EX0=1; 開(kāi)外部中斷0
        EX1=1; 開(kāi)外部中斷1
        P0=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)入休眠模式和返回的過(guò)程。
        (3)void ex_int0() interrupt 0
        {
        PCON=0;
        ET0=1;
        }
        這是外部中斷0服務(wù)程序,當(dāng)進(jìn)入外部中斷服務(wù)程序后,首先將PCON中原先設(shè)定的休眠控制位清除(如果不清除,程序也可以正常運(yùn)行,大家最好親自做實(shí)驗(yàn)驗(yàn)證),接下來(lái)再重新開(kāi)啟定時(shí)器0。在使用是還是保留中斷喚醒的中斷服務(wù)程序?yàn)楹谩?br />(4)下載程序后,實(shí)驗(yàn)現(xiàn)象如下:數(shù)碼管從“00”開(kāi)始遞增顯示,到“05”后,再過(guò)一秒后,數(shù)碼管變成只顯示一個(gè)“5”,單片機(jī)進(jìn)入休眠或空閑模式,用導(dǎo)線(xiàn)一端連接地,另一端接觸P3.2或P3.3,數(shù)碼管重新從“06”開(kāi)始顯示,遞增下去。整個(gè)過(guò)程演示了單片機(jī)從正常工作模式進(jìn)入休眠模式或空閑模式,然后再?gòu)男菝吣J交蚩臻e模式返回到正常工作模式。
        (5)測(cè)試過(guò)程大家可將數(shù)字萬(wàn)用表調(diào)節(jié)到電流檔,然后串接入電路中,觀(guān)察單片機(jī)在正常工作模式、休眠模式、空閑模式下流過(guò)系統(tǒng)的總電流變化情況,經(jīng)測(cè)試可發(fā)現(xiàn)結(jié)果如下:正常工作電流>空閑模式電流>休眠模式電流。

        電源管理寄存器PCON
          PCON主要是為CHMOS型單片機(jī)的電源控制而設(shè)置的專(zhuān)用寄存器,單元地址是87H,其結(jié)構(gòu)格式如下:
        表2 PCON電源管理寄存器結(jié)構(gòu)
        PCON D7 D6 D5 D4 D3 D2 D1 D0
        位符號(hào) SMOD - - - GF1 GF0 PD IDL
        在CHMOS型單片機(jī)中,除SMOD位外,其他位均為虛設(shè)的,SMOD是串行口波特率倍增位,當(dāng)SMOD=1時(shí),串行口波特率加倍。系統(tǒng)復(fù)位默認(rèn)為SMOD=0。
        各位的定義: SMOD:該位與串口通信有關(guān)。
        SMOD=0; 串口方式1,2,3時(shí),波特率正常。
        SMOD=1; 串口方式1,2,3時(shí),波特率加倍。
        GF1,GF0:兩個(gè)通用工作標(biāo)志位,用戶(hù)可以自由使用。
        PD:掉電模式設(shè)定位。
        PD=0 單片機(jī)處于正常工作狀態(tài)。
        PD=1 單片機(jī)進(jìn)入掉電(Power Down)模式,可由外部中斷或硬件復(fù)位模式喚醒,進(jìn)入掉電模式后,外部晶振停振,CPU、定時(shí)器、串行口全部停止工作,只有外部中斷工作。
        IDL:空閑模式設(shè)定位。
        IDL=0 單片機(jī)處于正常工作狀態(tài)。
        IDL=1 單片機(jī)進(jìn)入空閑(Idle)模式,除CPU不工作外,其余仍繼續(xù)工作,在空閑模式下可由任一個(gè)中斷或硬件復(fù)位喚醒。


        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉