您的位置 首页 报告

单片机电源办理寄存器PCON的用法

我们知道单片机内部有一个电源管理寄存器PCON,这个寄存器的最低两位,IDL和PD这两位分别用来设定是否使单片机进入空闲模式和掉电模式。1

咱们知道单片机内部有一个电源办理寄存器PCON,这个寄存器的最低两位,IDL和PD这两位别离用来设定是否使单片机进入闲暇形式和掉电形式。
1. 闲暇形式
当单片机进入闲暇形式时,除CPU处于休眠状况外,其他硬件悉数处于活动状况,芯片中程序未涉及到的数据存储器和特别功用寄存器中的数据在闲暇形式期间都将坚持原值。但假若定时器正在运转,那么计数器寄存器中的值还将会添加。单片机在闲暇形式下可由任一个中止或硬件复位唤醒,需求留意的是,运用中止唤醒单片机时,程序从本来中止处持续运转,当运用硬件复位唤醒单片机时,程序将从头开端履行。
让单片机进入闲暇形式的意图一般是为了下降体系的功耗,举个很简单的比如,咱们都用过数字万用表,在正常运用的时分表内部的单片机处于正常作业形式,当不用时,又忘记了关掉万用表的电源,大多数表在等候数分钟后,若没有人为操作,它便会主动将液晶显现封闭,以下降体系功耗,一般相似这种功用的完成便是运用了单片机的闲暇形式或是掉电形式。以STC89系列单片机为例,当单片机正常作业时的功耗一般为4mA~7mA,进入闲暇形式时其功耗降至2mA,当进入掉电形式时功耗可降至0.1μA以下。
2. 休眠形式
当单片机进入掉电形式时,外部晶振停振、CPU、定时器、串行口悉数中止作业,只要外部中止持续作业。使单片机进入休眠形式的指令将成为休眠前单片机履行的最终一条指令,进入休眠形式后,芯片中程序未涉及到的数据存储器和特别功用寄存器中的数据都将坚持原值。可由外部中止低电平触发或由下降沿触发中止或许硬件复位形式换醒单片机,需求留意的是,运用中止唤醒单片机时,程序从本来中止处持续运转,当运用硬件复位唤醒单片机时,程序将从头开端履行。
【例】:敞开两个外部中止,设置低电平触发中止,用定时器计数而且显现在数码管的前两位,当计到5时,使单片机进入闲暇(休眠)形式,一起封闭定时器,当单片机呼应外部中止后,从闲暇(休眠)形式回来,一起敞开定时器。
程序代码如下:
#include //52系列单片机头文件
#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) //显现子函数
{
dula=1;
P0=table[shi]; //送十位段选数据
dula=0;
P0=0xff; //送位选数据前封闭一切显现,避免翻开位选锁存时
wela=1; //本来段选数据通过位选锁存器形成紊乱
P0=0xfe; //送位选数据
wela=0;
delayms(5); //延时
dula=1;
P0=table[ge]; //送个位段选数据
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即延时约xms毫秒
for(j=110;j>0;j–);
}
void main()
{
uchar a,b,num1;
TMOD=0x01; //设置定时器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; 开总中止
ET0=1; 开定时器0中止
EX0=1; 开外部中止0
EX1=1; 开外部中止1
P0=1; 发动定时器0
(2)主程序中有“ET0=0;”下句是“PCON=0x02;”意思是在进入休眠形式之前要先把定时器封闭,这样方可一向等候外部中止的发生,假如不封闭定时器,定时器的中止相同也会唤醒单片机,使其退出休眠形式,这样咱们便看不出进入休眠形式和回来的进程。
(3)void ex_int0() interrupt 0
{
PCON=0;
ET0=1;
}
这是外部中止0服务程序,当进入外部中止服务程序后,首先将PCON中原先设定的休眠操控位铲除(假如不铲除,程序也能够正常运转,咱们最好亲身做试验验证),接下来再从头敞开定时器0。在运用是仍是保存中止唤醒的中止服务程序为好。
(4)下载程序后,试验现象如下:数码管从“00”开端递加显现,到“05”后,再过一秒后,数码管变成只显现一个“5”,单片机进入休眠或闲暇形式,用导线一端连接地,另一端触摸P3.2或P3.3,数码管从头从“06”开端显现,递加下去。整个进程演示了单片机从正常作业形式进入休眠形式或闲暇形式,然后再从休眠形式或闲暇形式回来到正常作业形式。
(5)测验进程咱们可将数字万用表调理到电流档,然后串接入电路中,调查单片机在正常作业形式、休眠形式、闲暇形式下流过体系的总电流改变状况,经测验可发现成果如下:正常作业电流>闲暇形式电流>休眠形式电流。

电源办理寄存器PCON
  PCON主要是为CHMOS型单片机的电源操控而设置的专用寄存器,单元地址是87H,其结构格局如下:
表2 PCON电源办理寄存器结构
PCON D7 D6 D5 D4 D3 D2 D1 D0
位符号 SMOD – – – GF1 GF0 PD IDL
在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。体系复位默以为SMOD=0。
各位的界说: SMOD:该位与串口通讯有关。
SMOD=0; 串口方法1,2,3时,波特率正常。
SMOD=1; 串口方法1,2,3时,波特率加倍。
GF1,GF0:两个通用作业标志位,用户能够自在运用。
PD:掉电形式设定位。
PD=0 单片机处于正常作业状况。
PD=1 单片机进入掉电(Power Down)形式,可由外部中止或硬件复位形式唤醒,进入掉电形式后,外部晶振停振,CPU、定时器、串行口悉数中止作业,只要外部中止作业。
IDL:闲暇形式设定位。
IDL=0 单片机处于正常作业状况。
IDL=1 单片机进入闲暇(Idle)形式,除CPU不作业外,其他仍持续作业,在闲暇形式下可由任一个中止或硬件复位唤醒。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/260758.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部