楼上的朋友,可否说的再详细一下。即使进入电平变化中断又如何呢?查询也只能查询标志位,两个按键同时按下,GBIF=1;没法区分,更没法用软件优先响应了。
今天我在板子上焊了个LED,上电后单片机进入睡眠,按下接在GPI1上的按键KEY1,引脚电平变化中断唤醒单片机,GPIF置位;也可以按下GPI2上的按键KEY2后,通过INT下降沿中断唤醒单片机并置位INTF。总中断GIE=0;这样就不会进入中断函数,但是某一个按键按下后都会有相应的中断标志位置位。通过查询这两个标志位可以做出响应,无须进入中断函数
while(1)
{
SLEEP();
if(INTIF==1)//KEY2按下或者KEY1,KEY2同时都按下熄灭LED
{LED=0;//熄灭LED
INTF=0;
GBIF=0;}
if(GBIF==1&&INTF==0)//仅KEY1按下时点亮LED
{
LED=1;//点亮LED
}
}
这个程序单个按键按下时可以很好的响应,两个一起按下就乱了,并非灭掉LED, 灭掉后很快亮了;按理说不应该这样。
|