|
你一開始這么說就不用改那么多次
- #include <REG52.h>
- // 定義類型別名
- typedef unsigned char u8; // 0 到 255
- typedef unsigned int u16; // 0 到 65535
- // 延時函數(shù),產(chǎn)生約 50 毫秒的延時
- void Delay50ms(void) //@11.0592MHz
- {
- unsigned char data i, j; // 定義循環(huán)變量
- i = 90; // 外層循環(huán)次數(shù)
- j = 163; // 內(nèi)層循環(huán)次數(shù)
- do
- {
- while (--j); // 內(nèi)層循環(huán)
- }
- while (--i); // 外層循環(huán)
- }
- // 定義按鍵和 LED 引腳
- sbit Kzong = P3^1; // 總按鍵連接到 P3.1
- sbit K1 = P3^2; // 按鍵 1 連接到 P3.2
- sbit K2 = P3^3; // 按鍵 2 連接到 P3.3
- sbit LED1 = P2^0; // LED1 連接到 P2.0
- sbit LED2 = P2^1; // LED2 連接到 P2.1
- u8 Off_Delay = 0; // 關(guān)燈延時計(jì)數(shù)器,初始化為 0
- void main()
- {
- while(1) // 主循環(huán)
- {
- if(Kzong == 0) // 如果總按鍵被按下
- {
- if(Off_Delay == 0) // 如果延時計(jì)數(shù)器為 0
- {
- LED1 = 0; // 開啟 LED1
- LED2 = 0; // 開啟 LED2
- }
- if(K1 == 0) // 如果按鍵 1 被按下
- {
- Delay50ms(); // 延時 50ms
- if(K1 == 0) // 確認(rèn)按鍵 1 仍被按下
- {
- LED1 = !LED1; // 切換 LED1 狀態(tài)
- while(K1 == 0); // 等待按鍵 1 釋放
- }
- }
- if(K2 == 0) // 如果按鍵 2 被按下
- {
- Delay50ms(); // 延時 50ms
- if(K2 == 0) // 確認(rèn)按鍵 2 仍被按下
- {
- LED2 = !LED2; // 切換 LED2 狀態(tài)
- while(K2 == 0); // 等待按鍵 2 釋放
- }
- }
- Off_Delay = 200; // 設(shè)置關(guān)燈延時計(jì)數(shù)器為 200
- }
- else // 如果總按鍵沒有被按下
- {
- if(Off_Delay != 0) // 如果延時計(jì)數(shù)器不為 0
- {
- Delay50ms(); // 延時 50ms
- Off_Delay = Off_Delay - 1; // 遞減延時計(jì)數(shù)器
- if(Off_Delay == 0) // 如果計(jì)數(shù)器減到 0
- {
- LED1 = 1; // 熄滅 LED1
- LED2 = 1; // 熄滅 LED2
- }
- }
- }
- }
- }
復(fù)制代碼 |
|