while迴圈用法問題....已拿掉while可是還是一樣 |
答題得分者是:daniel__lee
|
iestlpeggy
一般會員 發表:17 回覆:18 積分:7 註冊:2007-12-26 發送簡訊給我 |
請問,我想把這一個程式變成只執行一次
然後我去改了while()裡面的值,可是迴圈還是一樣一直執行 因為我是讓他抓DATA_7SEG的值, 所以有改過(i=0xFF)可是沒反應 可以教教我嗎 [code c#] #include sbit wled =P0^7; sbit K1 =P1^1; char DATA_7SEG[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF}; /*--------------------------------*/ delay(int d) { int i,j; for(i=0;i } /*--------------------------------*/ main() { int i; while(1) { for(i=0;i<9;i ) { P0=DATA_7SEG[i]; delay(100); while(1) if(K1==1)break; delay(100); } } } [/code] 感恩~Q 當我把16&17程式拿掉,還是有無窮回圈 可是這時我已經沒有while 這一個指令了,那怎麼還有無窮回圈 編輯記錄
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
iestlpeggy
一般會員 發表:17 回覆:18 積分:7 註冊:2007-12-26 發送簡訊給我 |
===================引 用 taishyang 文 章=================== 假如程式可以compiler & link的話,單步trace就知道問題在哪邊了 你好,我這一個程式 其實就是跑馬燈的程式 燒錄進51也OK能動作, 就只差在我不知道需要改while 改成怎樣,他才可以 DATA_7SEG[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF} 從0x00~0xFF ,就不會再跳回去0xFF 必須要按RESET之後重置 |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
iestlpeggy
一般會員 發表:17 回覆:18 積分:7 註冊:2007-12-26 發送簡訊給我 |
|
sansam
高階會員 發表:4 回覆:141 積分:164 註冊:2007-08-20 發送簡訊給我 |
|
iestlpeggy
一般會員 發表:17 回覆:18 積分:7 註冊:2007-12-26 發送簡訊給我 |
|
iestlpeggy
一般會員 發表:17 回覆:18 積分:7 註冊:2007-12-26 發送簡訊給我 |
|
daniel__lee
高階會員 發表:18 回覆:124 積分:113 註冊:2002-11-10 發送簡訊給我 |
你所要的功能可以用很簡單的方式完成 範例如下你參考看看
[code cpp] #include sbit wled =P0^7; sbit K1 =P1^1; //char DATA_7SEG[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF}; /*--------------------------------*/ delay(int d) { int i,j; for(i=0;i } /*--------------------------------*/ unsigned char SEG=0; void main() { P0=0x00; while(1) { if(SEG>=0xff)SEG=0; SEG<<=1; SEG|=0x01; delay(100); P0=SEG; } } [/code]
------
~ 勿在浮沙上面築高塔 ~
編輯記錄
daniel__lee 重新編輯於 2008-07-09 19:52:40, 註解 無‧
|
daniel__lee
高階會員 發表:18 回覆:124 積分:113 註冊:2002-11-10 發送簡訊給我 |
沒看清楚你的意思,如果你只要跑一次 把if 註解掉就行了
[code cpp] #include sbit wled =P0^7; sbit K1 =P1^1; //char DATA_7SEG[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF}; /*--------------------------------*/ delay(int d) { int i,j; for(i=0;i } /*--------------------------------*/ unsigned char SEG=0; void main() { P0=0x00; while(1) { // if(SEG>=0xff)SEG=0; SEG<<=1; SEG|=0x01; delay(100); P0=SEG; } } [/code]
------
~ 勿在浮沙上面築高塔 ~ |
iestlpeggy
一般會員 發表:17 回覆:18 積分:7 註冊:2007-12-26 發送簡訊給我 |
|
iestlpeggy
一般會員 發表:17 回覆:18 積分:7 註冊:2007-12-26 發送簡訊給我 |
我發現再你的程式上我在加上判斷K1的那一段
就可以達到我要的功能了 謝謝你耐心的回答 [code cpp] #include sbit wled =P0^7; sbit K1 =P1^1; //char DATA_7SEG[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF}; /*--------------------------------*/ delay(int d) { int i,j; for(i=0;i } /*--------------------------------*/ unsigned char SEG=0; void main() { P0=0x00; while(1) { while(1) if(K1==1)break; delay(100); // if(SEG>=0xff)SEG=0; SEG<<=1; SEG|=0x01; delay(100); P0=SEG; } } [/code] |
daniel__lee
高階會員 發表:18 回覆:124 積分:113 註冊:2002-11-10 發送簡訊給我 |
|
iestlpeggy
一般會員 發表:17 回覆:18 積分:7 註冊:2007-12-26 發送簡訊給我 |
===================引 用 daniel__lee 文 章=================== 還好你有發現!! ,我剛看到你的回覆時有點OOXX 正要回覆你說自己都不動腦........ 呵呵 哈哈,一定要的嘛.... 問問題也是要自己去思考問題 這樣我覺得比較好 感恩捏 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |