KEIL C 如何跳出while迴圈 執行下指令? |
尚未結案
|
gbgb123321a
一般會員 發表:2 回覆:2 積分:0 註冊:2010-05-25 發送簡訊給我 |
想請教各位大大 :
目的: 讓sensor感測到碰撞40次以後 (即向右轉20次向左轉20次) 然後跳離這個while迴圈 執行"-------------------------"以下的迴圈,我有去網路上看如何跳離迴圈 好像可以用break但我這邊是用turn去設定20次後轉向 當每碰撞20次以後即會轉向 我想要右轉20次左轉20次然後跳離至"虛線下"的迴圈 如果會的大大謝謝幫忙~ void turn(int tolerance, int hitPower) { hitCount = hitPower; if (hitCount > tolerance) { direction = 1 - direction; hitCount = 0; } if (direction) RIGHT(); else LEFT(); } main() { while(1) { if(BUMPER_IN()) { BACK(); delay_100m(13); RIGHT(); turn(20, 1); delay_100m(2); } if(FALL_IN()) { BACK(); delay_100m(5); RIGHT(); turn(20, 1); delay_100m(5); } else FORWARD(); } } ---------------------------------------------------------------- { while(1) { if(BUMPER_IN()) { BACK(); delay_100m(2); RIGHT(); delay_100m(2); } if(FALL_IN()) { BACK(); delay_100m(5); RIGHT(); delay_100m(5); } else FORWARD(); } 編輯記錄
gbgb123321a 重新編輯於 2010-05-27 14:43:13, 註解 無‧
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
有一種標籤叫「goto」
可以解決「好像不能用break」的問題 ===================引 用 gbgb123321a 文 章=================== 想請教各位大大 : 目的: 讓sensor感測到碰撞40次以後 (即向右轉20次向左轉20次)然後跳離這個while迴圈 執行"-------------------------"以下的迴圈,我有去網路上看如何跳離迴圈 好像可以用break但我這邊是用turn去設定20次後轉向 當每碰撞20次以後即會轉向 我想要右轉20次左轉20次然後跳離至"虛線下"的迴圈 ...43... |
gbgb123321a
一般會員 發表:2 回覆:2 積分:0 註冊:2010-05-25 發送簡訊給我 |
有大大知道 goto用法嗎?
因為我這邊是想讓while迴圈 裡面碰撞次數達40次以後才跳到 第2個迴圈 這樣GOTO要怎麼寫阿? ===================引 用 GrandRURU 文 章=================== 有一種標籤叫「goto」 可以解決「好像不能用break」的問題 ===================引 用 gbgb123321a 文 章=================== 想請教各位大大 : 目的: 讓sensor感測到碰撞40次以後 (即向右轉20次向左轉20次)然後跳離這個while迴圈 執行"-------------------------"以下的迴圈,我有去網路上看如何跳離迴圈 好像可以用break但我這邊是用turn去設定20次後轉向 當每碰撞20次以後即會轉向 我想要右轉20次左轉20次然後跳離至"虛線下"的迴圈 ...43... |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
你可以參考一下這個
http://www.daxia.com/bibis/moredata30_1298158.shtml ===================引 用 gbgb123321a 文 章=================== 有大大知道goto用法嗎? 因為我這邊是想讓while迴圈 裡面碰撞次數達40次以後才跳到 第2個迴圈 這樣GOTO要怎麼寫阿? |
gbgb123321a
一般會員 發表:2 回覆:2 積分:0 註冊:2010-05-25 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
嗯…你說的意思是這樣嗎?
[code cpp] QQ: while(1) { if(A == B) { aa(); goto PP; } } PP: while(1) { if(C == D) { bb(); goto QQ; } } [/code] ===================引 用 gbgb123321a 文 章=================== 先謝謝大大的回覆: 我現在不太懂 要怎麼將我所要跳至的另外一個迴圈,定義成一個名稱 然後讓第一個迴圈裏面方向交換第二次時 if ..... goto "我所定義之名稱" /*如果方向交換第二次時goto另一迴圈*/ |
handystudio
高階會員 發表:1 回覆:81 積分:106 註冊:2005-03-26 發送簡訊給我 |
你程式非完整貼出,所以假設 => 因為你是先右轉,所以程式一開始時,direction = 1
你的條件是當左轉 而且 hitCount 等於 20 時跳出第一個while(1),也就是說當 右轉 或 hitCount 不等於 20時,執行第一個while(1){......}, 你可以把第一個while(1) 改成while((diriction == 1)||(hitCount != 20)) {......} 你可試試看 ===================引 用 gbgb123321a 文 章=================== 想請教各位大大 : 目的: 讓sensor感測到碰撞40次以後 (即向右轉20次向左轉20次)然後跳離這個while迴圈 執行"-------------------------"以下的迴圈,我有去網路上看如何跳離迴圈 好像可以用break但我這邊是用turn去設定20次後轉向 當每碰撞20次以後即會轉向 我想要右轉20次左轉20次然後跳離至"虛線下"的迴圈 如果會的大大謝謝幫忙~ void turn(int tolerance, int hitPower) { hitCount = hitPower; if (hitCount > tolerance) { direction = 1 - direction; hitCount = 0; } if (direction) RIGHT(); else LEFT(); } main() { while(1) { if(BUMPER_IN()) { BACK(); delay_100m(13); RIGHT(); turn(20, 1); delay_100m(2); } if(FALL_IN()) { BACK(); delay_100m(5); RIGHT(); turn(20, 1); delay_100m(5); } else FORWARD(); } } ---------------------------------------------------------------- { while(1) { if(BUMPER_IN()) { BACK(); delay_100m(2); RIGHT(); delay_100m(2); } if(FALL_IN()) { BACK(); delay_100m(5); RIGHT(); delay_100m(5); } else FORWARD(); }
------
歡迎光臨 輕巧工作室 網站 http://www.handystudio.tw 控制電路板客製設計、製作交貨 8051專題製作/專題客製 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |