我用的是扫描法检测按键 但是按下一次就会扫描很多次 如何更改函数使得按下抬起一次作为一次的输入
char keyScan(void)
{
char key = 0;
char row,col;
// char key_now ;
// char key_past;
P9DIR = 0XF0;
P9REN = 0X0F;
P9OUT = 0X0F;
if((P9IN & 0X0f) != 0X0f) //判断是否有有键按下(检测输入是否全部为高),若有 往下执行
{
delays();
if((P9IN&0x0f)!=0x0f) //再次判断列中是否是干扰信号,不是则向下执行
{
row = P9IN&0x0f;
P9DIR = 0X0F;
P9REN = 0XF0;
P9OUT = 0XF0;
col = P9IN&0xf0;
// if((key_past==0)&&(key_now==1))
{ key = row|col;
// key_past = key_now;
// key_now = 0;
}
}
}
return key;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我加的是 while((P9IN&0xf0)!=0xf0);//等待按键抬起
多谢指点
一周热门 更多>