STC12系列单片机的空闲模式、休眠模式
1. 空闲模式
空闲模式是指只有单片机不工作的状态。此时CPU无时钟停止工作,但是外部中断、外部低压检测电路、定时器、A/D转换、串行口等仍正常运行。
在空闲模式下,RAM、堆栈指针(SP)、程序计数器(PC)、程序状态字(PSW)、累加器(A)等寄存器都保持原有数据。I/O口保持着空闲模式被激活前那一刻的逻辑状
态。此时单片机所有的外围设备都能正常运行,当任何一个中断产生时,它们都可以将单片机唤醒,单片机被唤醒后,CPU将继续执行进入空闲模式语句的下一条指令。
怎样退出空闲模式?
a.中断:任何一个中断的产生都会引起IDL/PCON.0被硬件清除,从而退出空闲模式;
b.外部RST引脚复位:将复位脚拉高,产生复位。再将RST脚拉低,结束复位,单片机从用户程序的0000H处开始正常工作
空闲模式的目的?
让单片机进入空闲模式的目的通常是为了降低系统的功耗,举个很简单的例子,大家都用过数字万用表,在正常使用的时候表内部的单片机处于正常工作模式,当不用时,又忘记了关掉万用表的电源,大多数表在等待数分钟后,若没有人为操作,它便会自动将液晶显示关闭,以降低系统功耗,通常类似这种功能的实现就是使用了单片机的空闲模式或是掉电模式。以STC89系列单片机为例,当单片机正常工作时的功耗通常为4mA~7mA,进入空闲模式时其功耗降至2mA,当进入掉电模式时功耗可降至0.1μA以下。
2. 休眠模式(又叫掉电模式、停机模式)
当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作。使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。可由外部中断低电平触发或由下降沿触发中断或者硬件复位模式换醒单片机,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
怎样退出休眠模式?
a.可将CPU从休眠模式唤醒的外部管脚有:外部中断0、外部中断1、定时器0、定时器1、RxD、PWM0/PCA0/P3.7、PWM2/PCA2/P2.0、PWM3/PCA3/P2.4
b.外部复位也可以将MCU从掉电模式中唤醒,复位唤醒后的MCU将从用户程序的0000H处开始正常工作。
控制单片机进入空闲模式和休眠模式的是电源管理寄存器PCON,这个寄存器的最低两位,IDL和PD这两位分别用来设定是否使单片机进入空闲模式和掉电模式。
将IDL/PCON.0置为1,则单片机就进入了空闲(IDLE)模式
将PD/PCON.1置为1,则单片机将进入掉电(Power Down)模式
更详细的资料请参考STC12系列单片机数据手册第二章:
- STC12系列单片机C语言的延时程序(12-01)
- STC12系列单片机解密介绍(11-25)
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)