本帖最后由 louant 于 2013-10-21 18:40 编辑
//说明:利用P1.5端口的中断功能,第一次进入中断,是系统进入低功耗LPM3;第二次进入中断,退出低功耗LPM3
int count = 0; //记录进入中断次数
void main()
{
WDTCTL = WDTPW + WDTHOLD;
P1IFG &= ~BIT5; //清除P1IFG
P1IE |= BIT5; //打开中断允许
P1IES |= BIT5; //选择下降沿触发
P4DIR |= BIT0; //P4。0输出
P4OUT |= BIT0; //P4.0灯点亮
_EINT();
while(1);
}
#pragma vector = PORT1_VECTOR
__interrupt void P1_5_ISR(void)
{
if( ( P1IFG & BIT5) == BIT5 ) //中断响应
{
P1IFG &= ~BIT5; //清除中断标志
count++;
if(count== 1) //第一次按下按键,进入低功耗
{
LPM3;
P4OUT &= ~BIT0; //流水灯关闭
}
else if(count== 2) //第二次按下按键,退出低功耗
{
LPM3_EXIT;
count = 0;
P4OUT |= BIT0; //流水灯打开
}
}
}
问题是:第一次进入中断可以进入低功耗模式,灯灭;第二次时没响应,不知道怎么回事。
是第一次进入低功耗以后一直处在低功耗之中,P1.5端口不能输入了么?
对于低功耗不是很了解,上述程序写法是否有错,希望能人给予解答,万谢!!!!
|