找回密码
 立即注册
查看: 1128|回复: 6

stc32、stc8h系列,矩阵按键移植避坑

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-04-10 16:59:05

45

主题

69

回帖

1225

积分

金牌会员

积分
1225
发表于 2024-2-29 09:42:46 | 显示全部楼层 |阅读模式
移植经典51矩阵按键到这两个系列单片机时,矩阵按键会失灵(要么没反应,要么有一部分按键失灵),行列扫描法、反转法,三行代码版本等等都是如此。

无奈分析了官方的代码,既然都用定时器了,还来个void IO_KeyDelay(void);看看延时时间很短,于是查看手册,发现有那么一句(手册上没重点标明),应该就是这句在作妖了。
在移植的代码中加人

void IO_delay(void)
{
        _nop_();
        _nop_();
       //不灵敏就再加一句
}

在IO赋值后,立刻读取的地方加这个延时

P0 = 0xf0;  //X低,读Y
IO_KeyDelay();

IO_KeyState1 = P0 & 0xf0;


所有经典51矩阵按键在这两个单片机上都正常运行
20240229093610.png
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2024-2-29 10:32:42 | 显示全部楼层
现在 STC8H 太快了,同频比 STC89 快了 13.2倍以上


另外 I/O口 模式设置完成后,拉高拉低也要时间,
初始化I/O口的工作模式后,加些延时,如 1mS再像过去一样工作
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-04-10 16:59:05

45

主题

69

回帖

1225

积分

金牌会员

积分
1225
发表于 2024-2-29 13:30:43 | 显示全部楼层
神*** 发表于 2024-2-29 10:32
现在 STC8H 太快了,同频比 STC89 快了 13.2倍以上

矩阵键盘程序网上很多,自己搜藏的也不少,直接拿来用都是不行的,而且让人摸不着头
拿官方的代码,兼容自己已有程序,代码改动量太大
这样修改是最方便的,之前的程序都可以直接验证
回复 支持 反对

使用道具 举报 送花

0

主题

2

回帖

8

积分

新手上路

积分
8
发表于 2024-4-23 17:33:27 | 显示全部楼层
兄弟,官方的代码在哪里看的?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2024-4-23 19:08:16 | 显示全部楼层
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-4-23 21:22:09 来自手机 | 显示全部楼层
在定时器中段里写按键识别状态机,可以实现单击 双击 长按等各种按键事件
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-04-10 16:59:05

45

主题

69

回帖

1225

积分

金牌会员

积分
1225
发表于 2024-4-24 08:43:25 | 显示全部楼层
linkl*** 发表于 2024-4-23 17:33
兄弟,官方的代码在哪里看的?

16-IO行列扫描键盘数码管显示键值和调整时间
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 20:46 , Processed in 0.189282 second(s), 92 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表