请问如何用单片机 获取矩阵键盘各按键的按下与松开的状态
2个回答
展开全部
用按键等待程序
,把第二次判断有无按键按下的if语句变为
while(P1!=0xf0);
//若按键一直处于按下状态,则等待按键释放
;若按键释放,则往下执行
Key_Value
=
Keyscan();
SBUF=Key_Value;
这样,把主循环while(1)变为
while(1)
{
P1
=
0xf0;
if(P1
!=
0xf0)
//判断有无按键按下
{
Delay_1ms(20);
//按键消抖
while(P1!=0xf0);
//若按键一直处于按下状态,则等待按键释放
;若按键释放,则往下
执行
Key_Value
=
Keyscan();
SBUF=Key_Value;
}
}
但看了你的程序
,
虽然不知道你的按键扫描程序keyscan()写的怎么样,但是按照一般思路,按键消抖都在按键扫描程序里面,你这里把按键扫描程序
Key_Value
=
Keyscan();
SBUF=Key_Value;
放在目标执行程序位置,结构上感觉冗余了,希望能帮到你!
,把第二次判断有无按键按下的if语句变为
while(P1!=0xf0);
//若按键一直处于按下状态,则等待按键释放
;若按键释放,则往下执行
Key_Value
=
Keyscan();
SBUF=Key_Value;
这样,把主循环while(1)变为
while(1)
{
P1
=
0xf0;
if(P1
!=
0xf0)
//判断有无按键按下
{
Delay_1ms(20);
//按键消抖
while(P1!=0xf0);
//若按键一直处于按下状态,则等待按键释放
;若按键释放,则往下
执行
Key_Value
=
Keyscan();
SBUF=Key_Value;
}
}
但看了你的程序
,
虽然不知道你的按键扫描程序keyscan()写的怎么样,但是按照一般思路,按键消抖都在按键扫描程序里面,你这里把按键扫描程序
Key_Value
=
Keyscan();
SBUF=Key_Value;
放在目标执行程序位置,结构上感觉冗余了,希望能帮到你!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询