写一个51单片机的按键消抖程序
时间: 2023-04-12 20:01:19 浏览: 157
以下是一个简单的51单片机按键消抖程序:
#include <reg51.h>
sbit key = P1^0; // 定义按键所在的引脚
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i = 0; i < t; i++)
for(j = 0; j < 125; j++);
}
void main()
{
unsigned char key_state = 0; // 按键状态,0表示未按下,1表示按下
while(1)
{
if(key == 0) // 检测按键是否按下
{
delay(20); // 延时20ms
if(key == 0) // 再次检测按键是否按下
{
if(key_state == 0) // 如果之前未按下
{
key_state = 1; // 标记为按下
// 这里可以添加按键按下后的操作
}
}
}
else // 按键未按下
{
if(key_state == 1) // 如果之前已经按下
{
key_state = 0; // 标记为未按下
// 这里可以添加按键松开后的操作
}
}
}
}
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)