可不可以这样认为:你以松手后执行指令,但松手后与未按键都是同一电平,相当于一直判定为你不按键在执行,那你的键盘当然失去了作用,要明白,键盘识别都是靠电平变化来实现的
改成:
if(k1==0)//假设你要检测的按键是k1
{
delay();//延时5毫秒
if(k1==0)//如果按键真的按下
{
while(!k1);//等待按键松开
语句1;
语句2;
}
}
改成这样应该可以,你试下
while(……);
加了“;”后while就会执行;前的空语句,就不能执行后面的语句的!!
while(temp!=0xf0) // 变成while(temp!=0xf0); 就不行了
{
temp=P3;
temp=temp&0xf0;
}
这个while语句应该说根本就是没用的,你按下去肯定就已经执行到while(temp!=0xf0),因为你之前就有了if(temp!=0xf0),所以这根本没有意义,如果要换成一直按着执行程序的话至少也应该加个延迟函数吧,应该要超过一两秒吧。。。。但是那样有太浪费时间和资源了。。想想其他办法吧