51单片机电源管理寄存器PCON以及单片机的空闲、掉电和正常工作模式

①PCON       

电源管理寄存器在特殊功能寄存器(SFR)中,字节地址为87H,不能位寻址。PCON用来管理单片机的电源部分,包括上电复位检测、掉电模式等。单片机复位时PCON全部被清0。

位序号 D7 D6 D5 D4 D3 D2 D1 D0
位符号 SMOD SMOD0 LVDF P0F GF1 GF0 PD IDL

      SMOD ---该位与串口通信波特率有关

        SMOD=0;串口方式1,2,3时,波特率正常;

        SMOD=1;串口方式1,2,3时,波特率加倍;

      SMOD0,LVDF,P0F----这三位是STC单片机特有的功能,其他型号单片机未保留

      GF1,GF0----两个通用工作标志位,用户可以自由使用

      PD---掉电模式设定位

      PD=0;单片机进入正常工作状态。

      PD=1;单片机进入掉电模式,可由外部中断低电平触发或下降沿触发或者硬件复位模式唤醒

     IDL----空闲模式设定位

      IDL=0;单片机处于正常工作状态。

      IDL=1;单片机进入空闲模式,除CPU不工作外,其余仍继续工作,在空闲模式下可由任一个中断或硬件复位唤醒

②掉电模式和空闲模式对比

空闲模式

      当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。但假若定时器正在运行,那么计数器寄存器中的值还将会增加。单片机在空闲模式下可由任一个中断或硬件复位唤醒,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。 
      让单片机进入空闲模式的目的通常是为了降低系统的功耗,举个很简单的例子,大家都用过数字万用表,在正常使用的时候表内部的单片机处于正常工作模式,当不用时,又忘记了关掉万用表的电源,大多数表在等待数分钟后,若没有人为操作,它便会自动将液晶显示关闭,以降低系统功耗,通常类似这种功能的实现就是使用了单片机的空闲模式或是掉电模式。以STC89系列单片机为例,当单片机正常工作时的功耗通常为4mA~7mA,进入空闲模式时其功耗降至2mA,当进入掉电模式时功耗可降至0.1μA以下。

掉电模式

        当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作。使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。可由外部中断低电平触发或由下降沿触发中断或者硬件复位模式换醒单片机,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。

       之前在使用用液晶显示器和单片机模拟打地鼠有戏等简单位图游戏,要实现游戏“暂停”的功能,则需要单片机进入掉电模式,保持RAM和SFR,外部中断电平触发唤醒:

        代码如下:

void int0 () interrupt 0
{
     /*
      *外部中断零,电平触发模式
      */
      IE0=0;//软件清零
      delay();//防抖动,延迟100-300ms
      
       if( 0x02==pp )
       {
              pp=0;//标志位
              PCON=0x02;//进入掉电模式
       }
        else
              pp=0x02;
              //为下次进入掉电模式做准备
}
    设计编程思想:标志位

你可能感兴趣的:(单片机)