目录
介绍
断电和空闲模式功能用于节省微控制器的功耗。8051具有内置省电功能,在功耗主要限制的嵌入式应用中非常有用。
8051功率控制逻辑
8051有两种省电模式:
- 掉电模式
- 空闲模式
掉电和空闲模式之间的区别
如上图8051功率控制逻辑所示,有两个控制位,IDL和PD,分别用于空闲和掉电模式。
在掉电模式下,提供给系统的振荡器时钟为OFF,即CPU和外设时钟在此模式下保持无效。
在空闲模式下,只有提供给CPU的时钟才会被禁用,而外设时钟将在此模式下保持活动状态。
因此,在省电模式下节省的功率大于空闲模式。
下表显示了8051系列控制器在正常(有效),空闲和掉电模式下所需的电源电流。
如上表所示,很明显,掉电模式下的功耗小于正常模式或空闲模式。
8051具有用于功率控制的功率控制寄存器。我们来看看电源控制寄存器。
PCON寄存器:电源控制寄存器
PCON(电源控制)寄存器用于强制8051微控制器进入省电模式。8051的功率控制寄存器包含两个省电模式位和一个串行波特率控制位。
Bit 7 – SMOD
1 = UART模式1,2和3中的波特率加倍。
0 =对波特率没有影响。
Bit 3:2 – GF1 & GF0:
这些是用户的通用位。
Bit 1 – PD:断电
1 =启用掉电模式。在此模式下,振荡器时钟关闭,CPU和外设时钟都停止。硬件复位可以取消此模式。
0 =禁用掉电模式。
Bit 0 – IDL:空闲
1 =启用空闲模式。CPU时钟关闭,而定时器,串口,中断等内部外围模块正常工作。中断和H / W复位可以取消此模式。
0 =禁用空闲模式。
例
让AT89C51单片机编程切换端口1的引脚0,并通过外部中断1强制单片机进入空闲(休眠)模式。我们通过外部中断0将微控制器唤醒到正常模式。
编程步骤
- 启用全局和外部0和外部1中断。EA = 1,EXx = 1。
- 选择中断类型,即选择下降沿中断,ITx = 0。
- 如果需要,通过IP寄存器设置中断优先级。
- 控制器睡眠模式也可以通过复位引脚取消。
- 通过PCON寄存器启用和禁用空闲(休眠)模式。
这里,在external1中断ISR中启用睡眠模式,在external0中断ISR中禁用睡眠模式。
空闲(睡眠)模式程序
/*
* 8051_Idle_mode
* http://www.qutaojiao.com
*/
#include <reg51.h> /* Include x51 header file */
sbit test = P1^0;
void delay(k) /* mSecond Delay function for Xtal 11.0592 MHz */
{
int i,j;
for (i=0;i<k;i++)
for (j=0;j<112;j++);
}
void ExtInt_Init() /* External interrupt initialize */
{
IT0 = 1; /* Interrupt0 on falling edge */
EX0 = 1; /* Enable External interrupt0 */
IT1 = 1; /* Interrupt1 on falling edge */
EX1 = 1; /* Enable External interrupt1 */
EA = 1; /* Enable global interrupt */
IP = 0x01; /* Set highest priority for Ext. interrupt0 */
}
void External0_ISR() interrupt 0 /* External int0 ISR */
{
PCON = 0x00; /* Disable Idle & Power Down mode */
}
void External1_ISR() interrupt 2 /* External int1 ISR */
{
PCON = 0x01; /* Enable Idle mode */
/* Enable Power Down mode by PCON = 0x02; */
}
void main()
{
ExtInt_Init();
while(1) /* Toggle P1.0 continuous */
{
test = 0;
delay(30);
test = 1;
delay(30);
}
}
余下程序:
掉电模式
要启用掉电模式,请设置PD位,即PCON = 0x02。另请注意,只有硬件复位才能取消此模式。
注意:根据英特尔的MCS-51系列用户手册:
“ 80C51断电退出的唯一方法是硬件复位。重置重新定义了所有SPRS,但不会更改片上RAM。“
但根据Atmel的AT89s51数据表:
“退出掉电模式可以通过硬件复位或激活已启用的外部中断(INT0或INT1)来启动。重置重新定义了SFR,但不会改变片上RAM。“
因此AT89s51控制器也可以通过复位和外部中断退出掉电模式。
本节课程序: