标题: 单片机空闲与掉电模式的应用 [打印本页]

作者: hujia    时间: 2014-11-8 14:41
标题: 单片机空闲与掉电模式的应用
  个人总结单片机省电的两个模式的使用:     
  单片机正常工作时的功耗通常是4mA~7mA,进入空闲模式是其功耗降至2mA,进入掉电模式是的功耗可降至0.1uA以下。
   当单片机进入空闲模式时,除CPU处于休眠状态外,其他硬件全部都处于活动状态,芯片内部程序所设计的寄存器都保持原值。
   当单片机进入掉电模式时,外部晶振停振,CPU,定时器、串行口全部停止工作,只有外部中断继续工作。同样芯片内部程序所设计的寄存器都保持原值。
   值得注意的是,两者使用中断唤醒单片机时,程序从原来停止处继续运行;当使用硬件复位唤醒单片机时,程序将从头开始执行。
运行效果图:
运行视频:(当数码管走到5时,就自动停止,需要外部中断0才能激活程序,数码管继续运行下去)


http://player.youku.com/player.php/sid/XMjA4NjM0NTky/v.swf
附上程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delayms(uint);
void display(uchar shi,uchar ge);
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x98};
uchar num;
void main()
{
       uchar a,b,num1;
       TMOD=0x01;
       TH0=(65536-50000)/256;
       TL0=(65536-50000)%256;
       EA=1;
       ET0=1;
       EX0=1;
       TR0=1;
       while(1)
       {
              if(num>=20)
              {
                     num=0;
                     num1++;
                     if(num1==6)
                     {
                            ET0=0;
                            PCON=0x02;
                     }
                     a=num1/10;
                     b=num1%10;
              }
              display(a,b);
       }   
}
void display(uchar a,uchar b)
{
       P2=0xbf;
       P0=table[a];
       delayms(5);
       P2=0x7f;
       P0=table;
       delayms(5);   
}
void timer0() interrupt 1
{
       TH0=(65536-50000)/256;
       TL0=(65536-50000)%256;
       num++;  
}
void ex_int0() interrupt 0
{
       PCON=0;
       ET0=1;
}
void delayms(uint z)
{
       uint x,y;
       for(x=z;x>0;x--)
              for(y=110;y>0;y--);
}


作者: yulin3192    时间: 2019-7-18 10:08
楼主能写的详细一点吗




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1