单片机电源管理寄存器PCON的用法.doc_第1页
单片机电源管理寄存器PCON的用法.doc_第2页
单片机电源管理寄存器PCON的用法.doc_第3页
单片机电源管理寄存器PCON的用法.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机电源管理寄存器PCON的用法 2010-07-01 08:35:26| 分类: 单片机 | 标签: |字号大中小 订阅 我们知道单片机内部有一个电源管理寄存器PCON,这个寄存器的最低两位,IDL和PD这两位分别用来设定是否使单片机进入空闲模式和掉电模式。1. 空闲模式当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都 将保持原值。但假若定时器正在运行,那么计数器寄存器中的值还将会增加。单片机在空闲模式下可由任一个中断或硬件复位唤醒,需要注意的是,使用中断唤醒单 片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。让单片机进入空闲模式的目的通常是为了降低系统的功耗,举个很简单的例子,大家都用过数字万用表,在正常使用的时候表内部的单片机处于正常工作模式,当不 用时,又忘记了关掉万用表的电源,大多数表在等待数分钟后,若没有人为操作,它便会自动将液晶显示关闭,以降低系统功耗,通常类似这种功能的实现就是使用 了单片机的空闲模式或是掉电模式。以STC89系列单片机为例,当单片机正常工作时的功耗通常为4mA7mA,进入空闲模式时其功耗降至2mA,当进入 掉电模式时功耗可降至0.1A以下。2. 休眠模式当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作。使单片机进入休眠模式的指令将成为休眠前单片机执行 的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。可由外部中断低电平触发或由下降沿触发中断或者 硬件复位模式换醒单片机,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。【例】:开启两个外部中断,设置低电平触发中断,用定时器计数并且显示在数码管的前两位,当计到5时,使单片机进入空闲(休眠)模式,同时关闭定时器,当单片机响应外部中断后,从空闲(休眠)模式返回,同时开启定时器。程序代码如下:#include /52系列单片机头文件#define uchar unsigned char#define uint unsigned intsbit dula=P26; /申明U1锁存器的锁存端sbit wela=P27; /申明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=tableshi; /送十位段选数据dula=0;P0=0xff; /送位选数据前关闭所有显示,防止打开位选锁存时wela=1; /原来段选数据通过位选锁存器造成混乱P0=0xfe; /送位选数据wela=0;delayms(5); /延时dula=1;P0=tablege; /送个位段选数据dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delayms(5);void delayms(uint xms) uint i,j;for(i=xms;i0;i-) /i=xms即延时约xms毫秒for(j=110;j0;j-);void main()uchar a,b,num1;TMOD=0x01; /设置定时器0为工作方式1(0000 0001)TH0=(65536-50000)/256; TL0=(65536-50000)%256;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%10;display(a,b);void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;num+;void ex_int0() interrupt 0PCON=0;ET0=1;void ex_int1() interrupt 2PCON=0;ET0=1;分析:(1) EA=1; 开总中断ET0=1; 开定时器0中断EX0=1; 开外部中断0EX1=1; 开外部中断1P0=1; 启动定时器0(2)主程序中有“ET0=0;”下句是“PCON=0x02;”意思是在进入休眠模式之前要先把定时器关闭,这样方可一直等待外部中断的产生,如果不关闭定时器,定时器的中断同样也会唤醒单片机,使其退出休眠模式,这样我们便看不出进入休眠模式和返回的过程。(3)void ex_int0() interrupt 0PCON=0;ET0=1;这是外部中断0服务程序,当进入外部中断服务程序后,首先将PCON中原先设定的休眠控制位清除(如果不清除,程序也可以正常运行,大家最好亲自做实验验证),接下来再重新开启定时器0。在使用是还是保留中断唤醒的中断服务程序为好。(4)下载程序后,实验现象如下:数码管从“00”开始递增显示,到“05”后,再过一秒后,数码管变成只显示一个“5”,单片机进入休眠或空闲模式,用 导线一端连接地,另一端接触P3.2或P3.3,数码管重新从“06”开始显示,递增下去。整个过程演示了单片机从正常工作模式进入休眠模式或空闲模式, 然后再从休眠模式或空闲模式返回到正常工作模式。(5)测试过程大家可将数字万用表调节到电流档,然后串接入电路中,观察单片机在正常工作模式、休眠模式、空闲模式下流过系统的总电流变化情况,经测试可发现结果如下:正常工作电流空闲模式电流休眠模式电流。电源管理寄存器PCONPCON主要是为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)模式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论