当体系时钟产生器根本功能树立之后,CPU内状况寄存器SR的SCG1,SCG0,CPUOFF,OSCOFF位是重要的低功耗操控位。只需恣意中止被呼应,上述操控位就被压入仓库保存,中止处理之后,又可康复从前的作业方法。在中止处理子程序履行期间,经过直接拜访仓库数据,能够操作这些操控位;这样答应程序在中止回来(RETI)后,以另一种功耗方法持续运转。
各操控位的效果如下:
SCG1: 复位,使能SMCLK;置位,制止SMCLK。
SCG0: 复位,激活直流产生器,只要SCG0置位,而且DCOCLK没有被用作MCLK或SMCLK时,直流产生器才干被制止。
OSCOFF:复位,激活LFXT1,只要当OSCOFF被置位而且LFXT1CLK不用于MCLK或SMCLK时,FLXT1才干被制止;当运用晶体振荡器封闭选项OSCOFF时,需求考虑晶体振荡器的发动设置时刻
CPUOFF:复位,激活MCLK;置位,封闭MCLK。
操控位SCG1、SCG0、CPUOFF、OSCOFF可由软件配制成六种不同的作业形式:
作业形式操控位CPU状况、振荡器及时钟
SCG1=0CPU活动
SCG0=0MCLK活动
AMCPUOFF=0 SMCLK活动
OSCOFF=0 ACLK活动
SCG1=0CPU制止
LPM0SCG0=0MCLK制止
OSCOFF=0SMCLK活动
CPUOFF=1 ACLK活动
SCG1=0CPU制止
MCLK制止
LPM1SCG0=1假如DCOCLK位用作MCLK或SMCLK,则直流产生器制止,
不然,依然活动
OSCOFF=0 SMCLK活动
CPUOFF=1ACLK活动
SCG1=1CPU制止
假如DCO未被用作MCLK或SMCLK,主动制止
SCG0=0MCLK制止
LPM2OSCOFF=0 SMCLK制止
CPUOFF=1 ACLK活动
SCG1=1 CPU制止
DCO被制止,直流产生器被制止
SCG0=1MCLK制止
LPM3OSCOFF=0 SMCLK制止
CPUOFF=1 ACLK活动
SCG1=1CPU制止
SCG0=1DCO被制止,直流产生器被制止
LPM4OSCOFF=1一切振荡器中止作业
MCLK、SMCLK制止
CPUOFF=1 ACLK制止
低功耗的规划技巧问题
1.LPM4:在振荡器封闭形式期间,处理机的一切部件作业中止,此刻的电流耗费最小。此刻只要在体系上电电路检测到低点电平或任一恳求异步呼应中止的外部中止事情时才会重新作业。因此在规划应含有或许需求用到的外部中止才选用这种形式,不然产生不行意料的成果。
2.LPM3:在DC产生封闭期间,只要晶振是活动的。但此刻设置根本时序条件的DC产生器的DC电流被封闭。由于此电路的高阻规划,使功耗被按捺。当从DC封闭到发动DC需求一段时刻(ns~us)
3.LPM2:在此期间晶振和DC产生器是作业的,所以能够完成快速发动
4.LPM1:在此期间振荡器现已作业,所以不存在发动延时问题
_BIS_SR(LPM3_bits) _BIC_SR_IRQ(LPM3_bits)
LPM3 LPM3_EXIT
体系呼应中止过程:
1.硬件主动中止服务
a.PC入栈
b.SR入栈
c.中止向量赋给PC
d.GIE、SCG1、CPOOFF和OSCOFF清楚
e.IFG标志位铲除(单源中止标志比方WDTIFG)
2.履行中止处理子程序
3.履行RETI指令
4.SR出栈
5.PC出栈
低功耗使用
void main(void)
{
WDTCTL=WDT_ADLY_1000;
IE1 | = WDTIE;
P1DIR | = 0X01;
_EINT();
for(;;)
{
LPM3;
_NOP();
}
}
interrupt[WDT_VECTOR]watchdog_timer(void)
{
P1OUT ^ = 0X01;
}