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

按鈕控制程式問題

尚未結案
ootorigou
一般會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-01-13 10:32:23 IP:218.170.xxx.xxx 訂閱
        程式一開始做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();
}
編輯記錄
ootorigou 重新編輯於 2012-01-12 19:33:54, 註解 無‧
ootorigou 重新編輯於 2012-01-12 19:39:40, 註解 無‧
ootorigou 重新編輯於 2012-01-12 19:41:14, 註解 無‧
kib72377
高階會員


發表:1
回覆:217
積分:238
註冊:2004-11-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-01-13 11:15:21 IP:125.233.xxx.xxx 未訂閱
 增加一個變數記錄 設定區番號 
每次PB1==0時,設定區番號 1,若番號>3則令番號=1.

whil(1)
{
if (PB1==0)
{
改變設定區番號
}
if (番號==1)
{
設定區1該做的事
}
else if(番號==2)
{
做設定區2該做的事
}
.....其他自己想
}
dootf
一般會員


發表:3
回覆:10
積分:7
註冊:2011-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-01-16 06:39:42 IP:123.193.xxx.xxx 未訂閱
下面是我的做法,給你參考看看:

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)
{

}
}
系統時間:2024-04-20 6:46:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!