
根据51单片机说明书介绍,当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作,称为休眠程序。执行掉电模式后一条指令再执行中断程序称为唤醒模式。
51单片机是对兼容英特尔8051指令系统的单片机的统称。
呵呵,最近刚好研究了一下这个问题 \x0d\x0a\x0d\x0a51单片机空闲和掉电模式应用\x0d\x0a我们知道单片机内部有一个电源管理寄存器PCON,这个寄存器的最低两位,IDL和PD这两位分别用来设定是否使单片机进入空闲模式和掉电模式。\x0d\x0a1. 空闲模式 当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。但假若定时器正在运行,那么计数器寄存器中的值还将会增加。单片机在空闲模式下可由任一个中断或硬件复位唤醒,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。???? 让单片机进入空闲模式的目的通常是为了降低系统的功耗,举个很简单的例子,大家都用过数字万用表,在正常使用的时候表内部的单片机处于正常工作模式,当不用时,又忘记了关掉万用表的电源,大多数表在等待数分钟后,若没有人为 *** 作,它便会自动将液晶显示关闭,以降低系统功耗,通常类似这种功能的实现就是使用了单片机的空闲模式或是掉电模式。以STC89系列单片机为例,当单片机正常工作时的功耗通常为4mA~7mA,进入空闲模式时其功耗降至2mA,当进入掉电模式时功耗可降至0.1μA以下。\x0d\x0a2.?? 休眠模式 当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作。使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。可由外部中断低电平触发或由下降沿触发中断或者硬件复位模式换醒单片机,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。【例】:开启两个外部中断,设置低电平触发中断,用定时器计数并且显示在数码管的前两位,当计到5时,使单片机进入空闲(休眠)模式,同时关闭定时器,当单片机响应外部中断后,从空闲(休眠)模式返回,同时开启定时器。程序代码如下:\x0d\x0a/************************************************************************\x0d\x0a************************************************************************/\x0d\x0a#define IdleMode() PCON|=0x01 //01为空闲模式\x0d\x0a // 当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状\x0d\x0a //芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。\x0d\x0a //但假若定时器正在运行,那么计数器寄存器中的值还将会增加。\x0d\x0a //单片机在空闲模式下可由任一个中断或硬件复位唤醒,\x0d\x0a //需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。\x0d\x0a #define PowerOFF() PCON |=0x02 //02掉电模式\x0d\x0a //进入掉电模式,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作\x0d\x0a //使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令\x0d\x0a //进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。\x0d\x0a //可通过外部中断唤醒,proteus仿真时无法唤醒\x0d\x0a #define EXT0_Init() EX0=1EA=1 //打开外部中断,以方便唤醒。唤醒后程序从原来停止处继续运行\x0d\x0a //电源管理模板程序 \x0d\x0a main()\x0d\x0a{\x0d\x0a EXT0_Init()\x0d\x0a while(1) // \x0d\x0a{\x0d\x0a if(time.sec==0){time.sec++PowerOFF()}\x0d\x0a //\x0d\x0a} \x0d\x0a}\x0d\x0a void EX0ISR(void) interrupt 0\x0d\x0a{\x0d\x0a //PCON&=0xfc //清除之前的掉电(空闲)模式\x0d\x0a}飞思卡尔单片机的休眠唤醒 *** 作步骤如下:1. 配置休眠模式:需要设置单片机进入哪种休眠模式,比如深度睡眠模式、待机模式等。
2. 初始化唤醒源:需要选择唤醒源,例如外部中断、定时器溢出、数据接收等。在初始化过程中还需要对唤醒源进行相应的配置。
3. 进入休眠模式:这个过程需要根据具体的休眠模式进行 *** 作,一般来说是关闭不必要的外设和中断,并且将所有的数据保存到存储介质中(比如闪存),最后就可以进入休眠状态了。
4. 处理唤醒事件:当唤醒事件被触发时,单片机会立即跳出休眠状态,并执行相关的唤醒 *** 作。这个过程需要根据具体的唤醒源进行相应的处理,比如清除定时器计数器、启用外部中断等。
需要注意的是,在进入休眠模式之前,需要将所有需要保留的数据保存到存储介质中,以确保单片机从休眠状态恢复后可以继续运行。同时,还需要合理地配置唤醒源,以确保单片机能够在需要唤醒时快速响应。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)