#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; // 重置計時
}
}
}
|