|
#include <reg51.h>
/*
// 按下按鍵為高,松開(kāi)為低。
//
*/
sbit led=P2^0; // 定義LED連接的端口,假設(shè)連接到P2.0
sbit BUTTON_PIN=P1^0; // 定義按鈕連接的端口,假設(shè)連接到P1.0
bit flag = 0; // 用于標(biāo)記按鍵狀態(tài)
unsigned int count = 0; // 用于計(jì)時(shí)
void delay_ms(unsigned int ms) {
// 簡(jiǎn)單的延時(shí)函數(shù),用于延時(shí)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) // 檢測(cè)按鍵是否按下
{
count++; // 開(kāi)始計(jì)時(shí)
if (count < 500) // 短按判斷(假設(shè) 500 個(gè)單位時(shí)間為短按閾值)
{
flag = 1; // 標(biāo)記短按
}
else // 長(zhǎng)按
{
flag = 2; // 標(biāo)記長(zhǎng)按
}
}
else // 按鍵松開(kāi)
{
if (flag == 1) // 短按處理
{
led = 0; // 點(diǎn)亮 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) // 長(zhǎng)按處理
{
led = ~led; // 閃爍 LED
delay_ms(500); // 閃爍間隔 500ms
}
flag = 0; // 重置標(biāo)記
count = 0; // 重置計(jì)時(shí)
}
}
}
|
|