按鈕控制程式問題 |
尚未結案
|
ootorigou
一般會員 發表:3 回覆:0 積分:0 註冊:2012-01-13 發送簡訊給我 |
程式一開始做LED跑馬燈,按住PB1一段時間後會到設定區1,再按一次到設定區2,再按一次到設定3,再按一次回到設定區1。
問題出在if(PB1==0)那邊,第一次按住後會做Red->Green->Yellow->Red循環,請問該怎麼去做修改,謝謝各位大大。 #include sbit Red = P2^3; //綠LED接至P2.4 sbit Yellow = P2^5; while(1) //P3的LED跑馬燈 delay(5000); P3=port3[i]; delay2(1000); P3 = 0xff; if(PB1==0) { delay(500); //PB1按住一段時間後到設定區1 } delay(500); } } //---------------------------------------設定區1 { delay(3000); //七段顯示器數字加1 bouncer(); .... break; } //七段顯示器數字減1 bouncer(); break; //再按一次進入設定區2 bouncer(); } } Green = 0xff; while(1) Green = ~Green; if(PB2 == 0) { bouncer(); .... if(PB3 == 0) { bouncer(); ... break; { bouncer(); YellowLed(); } //---------------------------------------設定區3 void YellowLed() { unsigned char i,j; { delay(3000); //七段顯示器數字加1 if(PB3 == 0) { } if(PB1==0) { bouncer(); RedLed(); } |
kib72377
高階會員 發表:1 回覆:217 積分:238 註冊:2004-11-12 發送簡訊給我 |
|
dootf
一般會員 發表:3 回覆:10 積分:7 註冊:2011-10-02 發送簡訊給我 |
下面是我的做法,給你參考看看:
unsigned int i=0; //設定為全域變數 void main(void) { while(1) { if (P3 != 0xff) { i=(i 1)%(j-1); //j代表選項數量,此例為2 .............; //軟體解彈跳功能 } switch(i) { case 0: function1(); break; case 1: function2(); break; } } } void function1(void) { while(P3==0xff) { } } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |