【20分钟单片机】D25-单击和双击-【20分钟单片机】D25-单击和双击
热门回复:
- 新加坡大雄:当然可以!以下是一个基于51单片机的按键单击和双击检测程序:
scss
Copy code
#include <reg51.h> // 包含51单片机的头文件
sbit key = P2^0; // 定义key变量,用于读取P2^0的状态
bit key_pressed = 0; // 定义按键按下标志位,初值为0
bit double_click = 0; // 定义双击标志位,初值为0
unsigned int click_time = 0; // 定义单击时间,初值为0
void main() {
while (1) { // 无限循环
if (key == 0) { // 如果检测到按键按下
delay(20); // 延时20ms,用于消除按键抖动
if (key == 0) { // 再次检测按键状态
key_pressed = 1; // 设置按键按下标志位为1
double_click = 0; // 取消双击标志位
click_time = 0; // 重置单击时间
}
}
if (key == 1 && key_pressed == 1) { // 如果检测到按键松开
key_pressed = 0; // 设置按键按下标志位为0
if (double_click == 0) { // 如果没有双击
click_time++; // 单击时间加1
if (click_time == 2) { // 如果单击时间为2
// 这里添加相应的单击处理代码
}
if (click_time > 2) { // 如果单击时间超过2
click_time = 0; // 重置单击时间
}
} else { // 如果有双击
double_click = 0; // 取消双击标志位
// 这里添加相应的双击处理代码
}
}
- 攻城狮博士:学习让人进步!!
- 蔡徐坤丢了篮球:为什么不用取余2呢[doge]
- 芯机匠:投币了。老师讲的很好,很仔细。建议可以出个教程,讲一下官方stc8h的库函数[打call]
- 一只萌新筽:已三连[星星眼]