8051 1個按鈕控制3個動作問題 |
尚未結案
|
ootorigou
一般會員 發表:3 回覆:0 積分:0 註冊:2012-01-13 發送簡訊給我 |
小弟是用Keil uVision4寫的,程式一開始P3連接的LED做跑馬燈,當按住PB1一段時間後,跑馬燈停止,進入設定區1,這時RedLED會一亮一滅,讓我知道已經進入設定區,再按一次PB1,會進入設定區2,再按一次PB1,會進入設定區3,再按一次回到設定區1。 char code port3[] = {0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}; //0-8問題出在第一次按住後,他會做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 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 } } } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |