#include <reg51.h>
/*
// 按下按键为高,松开为低。
//
*/
sbit led=P2^0; // 定义LED连接的端口,假设连接到P2.0
sbit BUTTON_PIN=P1^0; // 定义按钮连接的端口,假设连接到P1.0
bit flag = 0; // 用于标记按键状态
unsigned int count = 0; // 用于计时
void delay_ms(unsigned int ms) {
// 简单的延时函数,用于延时ms毫秒
unsigned int i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 335; j++);
}
void main()
{
P1 = 0x00; // 初始化 P1 口为高电平
while (1)
{
if (BUTTON_PIN == 1) // 检测按键是否按下
{
count++; // 开始计时
if (count < 500) // 短按判断(假设 500 个单位时间为短按阈值)
{
flag = 1; // 标记短按
}
else // 长按
{
flag = 2; // 标记长按
}
}
else // 按键松开
{
if (flag == 1) // 短按处理
{
led = 0; // 点亮 LED
delay_ms(500); // 闪烁间隔 500ms
delay_ms(500); // 闪烁间隔 500ms
delay_ms(500); // 闪烁间隔 500ms
delay_ms(500); // 闪烁间隔 500ms
delay_ms(500); // 闪烁间隔 500ms
delay_ms(500); // 闪烁间隔 500ms
led = 1;
}
else if (flag == 2) // 长按处理
{
led = ~led; // 闪烁 LED
delay_ms(500); // 闪烁间隔 500ms
}
flag = 0; // 重置标记
count = 0; // 重置计时
}
}
}
|