stc32、stc8h系列,矩阵按键移植避坑
移植经典51矩阵按键到这两个系列单片机时,矩阵按键会失灵(要么没反应,要么有一部分按键失灵),行列扫描法、反转法,三行代码版本等等都是如此。无奈分析了官方的代码,既然都用定时器了,还来个void IO_KeyDelay(void);看看延时时间很短,于是查看手册,发现有那么一句(手册上没重点标明),应该就是这句在作妖了。
在移植的代码中加人
void IO_delay(void)
{
_nop_();
_nop_();
//不灵敏就再加一句
}
在IO赋值后,立刻读取的地方加这个延时
P0 = 0xf0;//X低,读Y
IO_KeyDelay();
IO_KeyState1 = P0 & 0xf0;
所有经典51矩阵按键在这两个单片机上都正常运行
现在 STC8H 太快了,同频比 STC89 快了 13.2倍以上
另外 I/O口 模式设置完成后,拉高拉低也要时间,
初始化I/O口的工作模式后,加些延时,如 1mS再像过去一样工作
神农鼎 发表于 2024-2-29 10:32
现在 STC8H 太快了,同频比 STC89 快了 13.2倍以上
矩阵键盘程序网上很多,自己搜藏的也不少,直接拿来用都是不行的,而且让人摸不着头
拿官方的代码,兼容自己已有程序,代码改动量太大
这样修改是最方便的,之前的程序都可以直接验证 兄弟,官方的代码在哪里看的?
深圳国芯人工智能有限公司-实验箱 (stcai.com)
在定时器中段里写按键识别状态机,可以实现单击 双击 长按等各种按键事件 linkliang 发表于 2024-4-23 17:33
兄弟,官方的代码在哪里看的?
16-IO行列扫描键盘数码管显示键值和调整时间
页:
[1]