单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9937|回复: 1
收起左侧

单片机空闲与掉电模式的应用

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



附上程序:
#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 | 显示全部楼层
楼主能写的详细一点吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

快速回复 返回顶部 返回列表