線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2152
推到 Plurk!
推到 Facebook!

8051 1個按鈕控制3個動作問題

尚未結案
ootorigou
一般會員


發表:3
回覆:0
積分:0
註冊:2012-01-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-01-13 10:02:17 IP:218.170.xxx.xxx 訂閱
        小弟是用Keil uVision4寫的,程式一開始P3連接的LED做跑馬燈,當按住PB1一段時間後,跑馬燈停止,進入設定區1,這時RedLED會一亮一滅,讓我知道已經進入設定區,再按一次PB1,會進入設定區2,再按一次PB1,會進入設定區3,再按一次回到設定區1。
問題出在第一次按住後,他會做Red->Green->Yellow->Red循環,直到放開按鈕,請問要怎樣修改。謝謝各位大大


[code cpp]
#include

void RedLed();
void GreenLed();
void YellowLed();
sbit Red = P2^3; //綠LED接至P2.4
sbit Yellow = P2^5; //黃LED接至P2.5
char code port3[] = {0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}; //0-8

void main()
{
while(1)
//LED做跑馬燈
delay(500); P3=port3[i]; delay2(100); P3 = 0xff; if(PB1==0) { delay(1000); if(PB1==0) //進入RedLed()
bouncer();
}
}
//LED跑完1圈後回到第1個LED時間 }
}

void RedLed()
{ unsigned char i,j;
while(1)
Red = ~Red; //讓RedLed一亮一滅
if(PB2 == 0) { bouncer();
break; }
//七段顯示器數字減1
bouncer();
break;
{
GreenLed(); //呼叫GeenLed
}
Green= 0xff;
{
delay(300);
//七段顯示器數字加1
...
if(PB3 == 0) {
...
}
if(PB1==0) //再按一次PB1到Yellow
bouncer();
}
}
}

void YellowLed()
{ unsigned char i,j;
while(1)
Yellow = ~Yellow; //讓YellowLed一亮一滅
if(PB2 == 0) { bouncer();
break; }
//七段顯示器數字減1
bouncer();
break;
{
RedLed(); //呼叫RedLed
}
}
}
[/code]
系統時間:2024-04-18 20:34:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!