找回密码
 立即注册
查看: 81|回复: 2

8H4K64TL单片机IO口中断,如何延时去抖

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-04-22 11:17:03

16

主题

25

回帖

186

积分

注册会员

积分
186
发表于 2025-3-27 20:14:25 | 显示全部楼层 |阅读模式
使用STC8H4K64TL单片机IO口中断连接光耦做一个计数器,如何延时去抖,之前做矩阵键盘,IO赋值高电平,判断为低电平后,延时10ms,再判断,如果用中断,怎么延时去抖
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-3-27 21:30:06 | 显示全部楼层
用执行其他程序的时间消抖,不要使用延时函数,更不要在中断内使用延时函数
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2025-3-27 21:31:21 | 显示全部楼层
一个简单粗暴的解决思路:
搞个全局变量,中断触发只干一件事,赋值
去抖还用你原来的代码,读io状态改为都这个变量,用完重置变量


一个在中断内闭环的思路:
需要有个外部计时变量1ms加一这种、中断触发变量、触发时刻记录变量

触发间隔 = 外部计时变量 - 触发时刻记录变量
触发间隔 > x,作废,视为第一次触发

第一次触发,中断触发变量赋值,触发时刻记录变量赋值
后续触发,触发间隔 > 消抖时间,有效,执行
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 06:38 , Processed in 0.127900 second(s), 60 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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