各位高手:
本人目前做一东西,G2553单片机,P2口的2.0 2.2为按键输入,通过RC电路消除抖动,上拉47k,下拉1000pF瓷片电容,然后下降沿触发中断,P2.1配置为PWM输出,2.3 2.4 2.5配置为输出外接发光二极管,低电平点亮发光二极管,P2.6 2.7接32768kHz的手表晶体,P2.0每次按下触发中断到中断复位程序是P2IFG为0x01,正常。P2.2每次按下触发中断时,设置断点查看P2IFG的值总是在 0x24,0x34,0x0c,0x04之间变化,一直没有弄清楚怎么回事,P2.0和P2.2公用一个中断入口地址,在中断函数当中通过switch case语句去判断是哪个按键按下。但是就出现了上面提到的问题,请各位高手不吝赐教。附一段程序
初始化时的程序:P2IE |= BIT0 + BIT2; //P2.0 .2中断使能
P2IFG &= ~(BIT0+ BIT2); //中断标志位清零
#pragma vector=PORT2_VECTOR
__interrupt void Port_2(void)
{
unsigned char Data_Temp;
Data_Temp = P2IFG;
P2IFG &= ~(BIT0 + BIT2);
Data_Temp &= 0x05;
switch(Data_Temp)
{
case 0x01: break;
case 0x04:break;
default:break;
}
}