请问单片机4*4矩阵键盘如何检测并返回多个按键按下的键值和多个按键抬起的键值?(注:不使用死循环)

假如我按下按住按键1和按键2,都不抬起按键,程序能处理一次按键1按下的事件和按键2按下的事件,接着抬起按键1和按键2,程序能处理按键1抬起的事件和按键2抬起的事件。给出思... 假如我按下按住按键1和按键2,都不抬起按键,程序能处理一次按键1按下的事件和按键2按下的事件,接着抬起按键1和按键2,程序能处理按键1抬起的事件和按键2抬起的事件。给出思路或者程序都好。 展开
 我来答
硬件开发88
推荐于2017-12-15 · TA获得超过8674个赞
知道大有可为答主
回答量:1757
采纳率:84%
帮助的人:574万
展开全部
你按键要是没有松手检测的话,按键按下后程序会执行一次按键一的数据,然后在执行按键2的数据,按键1和按键2就成了循环检测了,执行两个按键事件,如果按键有松手检测的话,例如按键1按下,程序会在按键1哪里等待按键松手后,才会跳出按键,否则按键会一直死在哪里等待按键松手,希望我的回答对你有帮助!

那就用这种方法解决:

if(keyxxx == 0)
{
if(++i <= 10)
return;
//
if(keyxxx == 0)
{
i = 0;
//处理按键程序
}
}

if(keyxxx == 0)
{
if(++y <= 10)
return;
//
if(keyxxx == 0)
{
y = 0;
//处理按键程序
}
}
追问
这样处理那需要用到太多的计数变量了,并且这个还不包括按键抬起的处理
追答
这样是用很多计数变量,但是占用CPU资源很小
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2014-11-06 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
定时 5ms 检测一次,比较两次的结果,
无论是按下、还是释放,都可以检测出来。
更多追问追答
追问
可以说得详细一点吗?
追答
每扫描一行,就得到四位数。
扫描四行,把结果凑成16位。
这16位,就代表了全部的按键信息。
无论是按着、还是没按,都在这16位数里面。
然后,慢慢比较分析去吧。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式