【51单片机】利用【时间延迟】的原理规避【按键抖动问题】

前言

大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁

目录

三.【控制LED状态】

1.按键抖动问题

  • 我们发现中间存在:
  • 2个抖动时间段(按下时)(松开时)
  • 1个中间时间段
  • 我们要采用【时间延迟】的原理规避这一现象

2.我们要采用【时间延迟】的原理规避这一现象

  • 自定义延时子程序传送门:传送门
  1. 我们在第一个抖动时间段(按下时)设置一个延时程序
  2. 在中间时间段时,设置一个判断按键状态的while循环while(P3_1==0);,使他实现【到达中间时间段,停下等待按钮状态:实现按下进入循环,松手跳出循环继续程序】
  3. 我们在第二个抖动时间段(松手时)设置一个延时程序
cpp 复制代码
#include <REGX52.H>

void Delay(unsigned int xms)		
{
	unsigned char i, j;

	while(xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	   xms--;
	}
}

void main()
{
	   while(1)
		{
		  if(P3_1==0)//按下
			{		
					Delay(20);//在前一段抖动时间延时
					
					while(P3_1==0);//到达中间时间段,停下等待按钮状态:实现按下进入循环,松手跳出循环继续程序
					
					Delay(20);//在后一段抖动时间延时
				
					P2_0=~P2_0;//取反
			}
		}
}
  • 现象:我们烧写入单片机后,可以发现按下k1按键,d1灯亮并保持;再次按下,d1灯灭并保持;
相关推荐
银发控、6 小时前
MySQL联合索引
数据库·mysql
予枫的编程笔记6 小时前
【MySQL修炼篇】从踩坑到精通:事务隔离级别的3大异常(脏读/幻读/不可重复读)解决方案
数据库·mysql·后端开发·数据库事务·事务隔离级别·rr级别·脏读幻读不可重复读
一起养小猫7 小时前
Flutter for OpenHarmony 实战:记账应用数据统计与可视化
开发语言·jvm·数据库·flutter·信息可视化·harmonyos
世界尽头与你7 小时前
(修复方案)CVE-2023-22047: Oracle PeopleSoft Enterprise PeopleTools 未授权访问漏洞
数据库·安全·oracle·渗透测试
韩立学长7 小时前
【开题答辩实录分享】以《智能大学宿舍管理系统的设计与实现》为例进行选题答辩实录分享
数据库·spring boot·后端
Henry Zhu1238 小时前
数据库(五):反规范化
数据库
Mr_Xuhhh8 小时前
MySQL函数详解:日期、字符串、数学及其他常用函数
java·数据库·sql
he___H9 小时前
Redis高级数据类型
数据库·redis·缓存
霖霖总总9 小时前
[小技巧60]深入解析 MySQL Online DDL:MySQL Online DDL、pt-osc 与 gh-ost 机制与最佳实践
数据库·mysql
爱学习的阿磊9 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python