资讯详情

C51 按键消抖两种逻辑(51单片机)

📅 2026/10/22 22:59:24 | 华诺云谱 👁 阅读
C51 按键消抖两种逻辑(51单片机)
C51 按键消抖两种逻辑51单片机前提按键按下拉低IO松开为高电平消抖原理机械按键通断瞬间有10ms左右抖动毛刺方式1检测到低电平 → 延时消抖按下触发最常用逻辑读到IO为低先延时10ms过滤抖动再次判断IO是否还是低确认是真按下再执行功能。sbit key P3^2;void Delay10ms(void) //粗略延时{unsigned char i,j;for(i20;i0;i--)for(j248;j0;j--);}void KeyScan1(void){if(key 0) //检测到低电平疑似按下{Delay10ms(); //等待抖动消失if(key 0) //二次确认确实按下{// 执行按键功能}}}✅特点按下一瞬间就触发缺点阻塞式delay延时期间CPU啥事不能干。方式2检测低电平后while等待直到松开松开触发等待释放逻辑检测到按键按下低→延时消抖确认按下 →while循环卡死一直等到按键变回高电平松开再执行功能void KeyScan2(void){if(key 0){Delay10ms();if(key 0){while(key 0); //阻塞等待按键保持低就一直卡在这里直到松手变高Delay10ms(); //松开也要消抖// 执行按键功能}}}✅特点松手那一刻才执行函数适合防止长按重复触发同样是阻塞代码。核心区别方式1按下触发方式2等待松开再执行执行时机确认按下立刻执行按键松开之后才执行长按行为长按会反复扫描多次触发长按只会等松手执行1次阻塞点仅delay短暂阻塞while会长期阻塞按住不放代码停住补充上面两个都是阻塞式消抖项目高级写法是定时器中断做非阻塞消抖不用delay和while死等。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑