单片机掉电模式与空闲模式_第1页
单片机掉电模式与空闲模式_第2页
单片机掉电模式与空闲模式_第3页
单片机掉电模式与空闲模式_第4页
单片机掉电模式与空闲模式_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机掉电模式与空闲模式空闲模式当单片机进入空闲模式时,除CPU处于休眠状态外,其 余硬件全部处于活动状态,芯片中程序未涉及到的数据存储 器和特殊功能寄存器中的数据在空闲模式期间都将保持原 值。但假若定时器正在运行,那么计数器寄存器中的值还将 会增加。单片机在空闲模式下可由任一个中断或硬件复位唤 醒,需要注意的是,使用中断唤醒单片机时,程序从原来停 止处继续运行,当使用硬件复位唤醒单片机时,程序将从头 开始执行。让单片机进入空闲模式的目的通常是为了降低系统的 功耗,举个很简单的例子,大家都用过数字万用表,在正常 使用的时候表内部的单片机处于正常工作模式,当不用时, 又忘记了关掉万用表的电源,大

2、多数表在等待数分钟后,若 没有人为操作,它便会自动将液晶显示关闭,以降低系统功 耗,通常类似这种功能的实现就是使用了单片机的空闲模式 或是掉电模式。以STC89系列单片机为例,当单片机正常工 作时的功耗通常为4mA7mA,进入空闲模式时其功耗降至 2mA,当进入掉电模式时功耗可降至01“A以下。休眠模式当单片机进入掉电模式时,外部晶振停振、CPU、定时 器、串行口全部停止工作,只有外部中断继续工作。使单片 机进入休眠模式的指令将成为休眠前单片机执行的最后一 条指令,进入休眠模式后,芯片中程序未涉及到的数据存储 器和特殊功能寄存器中的数据都将保持原值。可由外部中断 低电平触发或由下降沿触发中断或

3、者硬件复位模式换醒单 片机,需要注意的是,使用中断唤醒单片机时,程序从原来 停止处继续运行,当使用硬件复位唤醒单片机时,程序将从 头开始执行。下面的例子演示单片机进入空闲和休眠模式,并且演示 出从空闲和休眠模式中唤醒的过程。【例】:在TX-1C实验板上完成如下描述,开启两个外 部中断,设置低电平触发中断,用定时器计数并且显示在数 码管的前两位,当计到5时,使单片机进入空闲(休眠)模式, 同时关闭定时器,当单片机响应外部中断后,从空闲(休眠) 模式返回,同时开启定时器。新建文件part3.4.1.c,程序代码如下:#include/52系列单片机头文件#defineucharunsignedch

4、ar#defineuintunsignedintsbitdula=P2 ;申明U1锁存器的锁存端sbitwela=P2 ;申明U2锁存器的锁存端ucharcodetable=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;ucharnum;voiddelayms(uint);voiddisplay(ucharshi,ucharge) 显示子函数dula=1;PO=tableshi;送十位段选数据dula=0;P0=0 xff;送位选数据前关闭所有显示,

5、防止打开位选锁 存时wela=1;原来段选数据通过位选锁存器造成混乱P0=0 xfe;送位选数据wela=0;delayms(5); 延时dula=1;PO=tablege;送个位段选数据dula=0;P0=0 xff;wela=l;PO=Oxfd;wela=0;delayms(5);voiddelayms(uintxms)uinti,j;for(i=xms;i0;i-)/i=xms 即延时约 xms 毫秒for(j=110;j0;j-);voidmain()uchara,b,num1;TMOD=0 x01;设置定时器0为工作方式1(00000001)TH0=(65536-50000)/256

6、;TL0=(65536-50000)%256;EA=1;ET0=1;EX0=1;EX1=1;TR0=1;while(l)if(num=20)num=0;numl+;if(num1=6)ETO=O;PCON=0 x02;(或 PCON=0 x01;)a=num1/10;b=num1%10;display(a,b);voidtimerO()interrupt1TH0=(65536-50000)/256;TL0=(65536-50000)%256;num+;voidex_intO()interruptOPCON=0;ETO=1;voidex_int1()interrupt2PCON=0;ET0=1;

7、分析:EA=1;开总中断ET0=1;开定时器0中断EX0=1;开外部中断0EX1=1;开外部中断1TR0= 1;启动定时器0主程序中有“ETO=O”下句是“PCON=0 x02”意思是在 进入休眠模式之前要先把定时器关闭,这样方可一直等待外 部中断的产生,如果不关闭定时器,定时器的中断同样也会 唤醒单片机,使其退出休眠模式,这样我们便看不出进入休 眠模式和返回的过程。voidex_intO()interruptOPCON=0;ETO=1;这是外部中断0服务程序,当进入外部中断服务程序后, 首先将PCON中原先设定的休眠控制位清除(如果不清除, 程序也可以正常运行,大家最好亲自做实验验证),接下来再 重新开启定时器0。下载程序后,实验现象如下:数码管从“00”开始递增 显示,到“05”后,再过一秒后,数码管变成只显示一个“5”, 单片机进入休眠或空闲模式,用导线一端连接地,另一端接 触P3.2或P3.3,数码管重新从“06”开始显示,递增下去。整 个过程演示了单片机从正常工作模式进入休眠模式或空闲 模式,然后再从休眠

温馨提示

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

评论

0/150

提交评论