|
1.8 低功耗模式 |
单片机的一个重要的应用场合便是电池供电的设备。在这类设备中功耗是一个必须仔细考虑的问题。一个好的设计不仅需要稳定而强大的功能,还需要能够长时间运行,否则由于没电而导致不能工作就太可惜了。
现在的单片机均提供了省电保持和休眠两种低功耗模式来提高系统的使用时间。下面分别进行介绍。
当单片机进入省电保持模式时,其内部时钟振荡器停止工作,CPU及其内部所有的功能部件均停止工作。但是,此时片内RAM和全部的特殊功能寄存器的数据可以被保存。
单片机进入省电模式比较简单,执行在程序中设置PCON.1位为1后,即PD=1,系统便进入省电模式。
如果系统使用内部程序存储器,在省电模式下,ALE和 PSEN 引脚将保持低电平,P0~P3端口均保持相应的数据。而如果系统使用外部的程序存储器,则P0端口浮空,其余均和片内程序存储器的情况一样。
退出省电保持模式可以通过硬件复位或启动外部中断两种方式执行。如果通过硬件复位,则将使所有寄存器的内容重新初始化,但不会改变内部RAM中的数据。而如果通过外部中断,这个外部中断必须使系统恢复到全部进入省电保持模式之前的稳定水平。中断启动后,中断服务程序开始恢复正常操作。
在执行省电保持模式时,需要注意如下几点:
●在省电保持模式下,电源电压VCC可以下降到2V,但在进入省电保持模式之前VCC不能下降。
●如果需要退出省电保持模式,返回正常工作状态,则VCC必须首先恢复到正常的工作电压,并维持10ms左右的时间,确保内部振荡器稳定起振后,才可以退出省电保持模式。
当单片机进入休眠运行模式时,其内部时钟振荡器仍然运行,但CPU被冻结,不再工作。此时,和省电保持模式不同的是,单片机内部时钟信号仍然供给中断、串行口、定时/计数器等。
单片机进入休眠运行模式比较简单,在程序中设置PCON.0位为1后,即IDL=1后,系统便进入休眠运行模式。休眠运行模式下,电压VCC不能降低,但电流消耗将会大大减少,从而起到降低功耗的作用。
在休眠运行模式下,单片机CPU内部状态,如堆栈指针SP、程序计数器PC、程序状态字PSW、累加器A及所有其他寄存器均保持冻结前的内容不变,各端口的状态也保持不变,片内RAM中的数据不丢失,外部设备也可以正常运行。
系统进入休眠运行模式下后,可以采用硬件复位或外部中断两种方式退出休眠状态。如果采用硬件复位,由于在休眠运行模式下,振荡器仍然提供时钟信号,因此硬件复位只需要两个机器周期便可以完成。加在RST引脚上的复位信号可以直接将IDL清零,便可以退出休眠运行模式。此时,系统便从进入休眠模式的下一条指令开始继续执行下面的程序。
如果采用外部中断,此时任何的中断请求,都可以将IDL清零,从而退出休眠运行模式。系统仍然从进入休眠模式的下一条指令开始继续执行下面的程序。此时,可以使用通用标志位GF0和GF1来指示中断是在正常模式下还是在休眠模式下发生的。这便需要在设置休眠运行模式的指令前,先设置通用标志位GF0或GF1。当系统处于休眠运行模式时,如果被中断终止,可在中断服务例程中检测被设置的通用标志位,以便于确认系统中断是在何种情况下发生的。如果GF0或GF1为1,则表示是在休眠状态下发生的中断。