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

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

[复制链接]
  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 160 天

    [LV.7]常住居民III

    23

    主题

    38

    回帖

    573

    积分

    高级会员

    积分
    573
    发表于 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
    回复 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9321

    回帖

    1万

    积分

    管理员

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


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

    使用道具 举报

  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 160 天

    [LV.7]常住居民III

    23

    主题

    38

    回帖

    573

    积分

    高级会员

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

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

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    回帖

    4

    积分

    新手上路

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

    使用道具 举报

    该用户从未签到

    550

    主题

    9321

    回帖

    1万

    积分

    管理员

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

    使用道具 举报

  • TA的每日心情
    慵懒
    13 小时前
  • 签到天数: 88 天

    [LV.6]常住居民II

    13

    主题

    330

    回帖

    762

    积分

    荣誉版主

    热心市民

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

    使用道具 举报

  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 160 天

    [LV.7]常住居民III

    23

    主题

    38

    回帖

    573

    积分

    高级会员

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

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-5 14:03 , Processed in 0.063141 second(s), 55 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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