通常情况下一个我们要求硬件系统可以独立工作很久,但如果单片机始终高速运行,假设单片机运行电流为5mA,加上外围电路20mA,那么一节5600mAh的电池也只能用几天,这就要求我们需要在单片机需要运行的时候开启,不需要的时候关闭或者进入省电模式。
省电有多种方式,可以降低时钟频率,也可以进入省电模式。
时钟频率:一般我们会选择外部晶体时钟,具体选择方法为在烧录程序时不勾选“选择使用内部IRC时钟(不选为外部时钟)”选项。
时钟分配:如果希望降低功耗,可对时钟进行分频,利用时钟分频控制寄存器CLK_DIV可进行时钟分频,从而使单片机在较低频率下工作。
例如:
CLK_DIV = 0x03; //使单片机工作在8T模式
可编程时钟输出:可编程时钟输出功能有很多,比如可以提供占空比50%的脉冲、输出时钟等。
相关寄存器如下:
PCAWAKEUP位表示在掉电模式下允许PCA上升沿或者下降沿中断唤醒单片机;
RXD_PIN_IE表示在掉电模式下允许PxD下降沿唤醒单片机;
T1_PIN_IE和T0_PIN_IE表示在掉电模式下允许T1和T0的溢出中断唤醒单片机;
CLKOUT0/P1.0与CLKOUT1/P1.1分别受T0和T1的控制,相应的定时器应该工作在模式2(8位自动重载),不要允许相应的中断位。
T1CLKO与T0CLKO置位时,允许相应的引脚作为时钟输出,输出时钟频率的计算公式为Tx溢出率/2,此时应区分C/T位。
T0x12和T1x12位为T0和T1的速度控制位,置位时为不分频,清零表示12分频。
软件复位:IAP_CONTR寄存器可以实现软件复位
内部低压检测复位:
中断:打开EPCA_LVD(PCA和LVD中断共同允许位),ELVDI(低压检测单独允许位),EA总中断。LVDF为中断标志位,软件清零。
看门狗:
在stc-isp软件中有相应的计算软件。
省电模式:正常模式下,典型功耗为2.7~5mA,掉电模式下典型功耗为0.1uA,空闲模式下典型功耗为1.8mA。
PD置位时进入Power Down模式,可由外部中断低电平触发或下降沿触发,在此模式下,内部时钟停振,此时CPU、串行口、定时器停止工作,只有外部中断工作,RxD可以唤醒,所以单片机来不及接收串行数据,应先发送唤醒帧,延时一定时间后再发送数据帧,以免数据帧丢失。低压检测可以工作在Power Down模式下。
IDL置位时进入空闲模式。此时外部中断,外部低压检测电路,定时器、A/D转换,串行口都在工作,看门狗是否工作取决于其控制位的选择。
以上图片截取自STC中文手册。