在项目中需要一个8*16的矩阵键盘,扫描得出键值之后通过串口发送,mcu用的是xMega,当然这个无关紧要,中间会有串口接收中断。
现在发现的现象是:按键迟滞,按键丢失
我想考虑的是:
1.按键扫描是用哪种方式好?
书本上用的 是 读取按键---延迟消抖---再次读取----得出键值
还有一种是 定时器中断(2ms)--读键值,计数---连续5次为同一键值 则认为有按键按下
还有一种反转法 这里按键太多 不太合适就不考虑了。
2.按键扫描定时器中断会不会与串口接收中断函数冲突?
如果串口连续接收,会导致按键丢失吗?
3.实验测试出现过一些奇怪现象,比如在输入 dianzi 时 会出现 diadnzi 类似这样的在后面出现前面键值重复,此现象还未考虑出原因 求教!
此帖出自
小平头技术问答
中断都是各有各的优先级,不会冲突!
定时器中断(2ms)--读键值,计数---连续N次为同一键值 则认为有按键按下。不过还要考虑是上升还是下降缘,要处理。
2.按键扫描定时器中断会不会与串口接收中断函数冲突?
不会。
3.实验测试出现过一些奇怪现象,比如在输入 dianzi 时 会出现 diadnzi 类似这样的在后面出现前面键值重复,此现象还未考虑出原因 求教!
那要查查。
楼主遇到的这个问题我估计是串口数据发送的速率快了(注意这里指的不是波特率。比如八位的单片机,发送完一个字节的数据后先延时一会再发送下一个字节的数据)
一周热门 更多>