void main()
{
WDTCTL=WDTPW+WDTHOLD;
FLL_CTL0|=XCAP18PF; //设置晶振匹配电容为18pf左右
P1IES|=BIT5;
P1IE|=BIT5;
P1IFG=0;
P3DIR|=0XFF;
P4DIR|=0XFF;
P3OUT|=0XFF;
P4OUT|=0XFF; //P4.0设为输入,模式灯亮
P4OUT&=~BIT0; //开模式指示灯
BTCTL=BT_ADLY_250;
IE2=BTIE; //允许BasicTimer中断
_EINT(); //允许总中断
LPM3;
while(1)
{
}
//............按键中断........................//
#pragma vector=PORT2_VECTOR //P1口中断源
__interrupt void P1_ISR(void)
{
switch (P1IFG)
{
case BIT5: key_status=1; //按键进入防抖状态
key_waitkey=1; //按键进入工作模式
P4OUT^=BIT4;
break;
default: P1IFG &= ~0xe0; // P1.5-P1.7 IO口中断标志位清除
break;
}
P1IFG=0; // IO口中断标志位清除
LPM3_EXIT;
}
程序中断能进,但是switch(P1IFG)进不去case BIT5,从仿真器看P1IFG的值,无按键的情况下是0x01,有按键是0xe1;这是什么情况啊,求大神拯救。 |