iT邦幫忙

0

想請教一個問題

請問一下 我這個程式用在switch 裡 用while 為什麼會出現warning??請求大神幫忙

還是要怎麼改才正確 謝謝^^

https://ithelp.ithome.com.tw/upload/images/20190326/20113989zlXa0IGyJL.jpg

2 個回答

1
海綿寶寶
iT邦超人 1 級 ‧ 2019-03-26 20:40:05

先針對這次的問題回答
warning訊息是「statement is unreachable」
指的是「永遠不會執行到」Delay_uSec(2000)這列程式碼

因為

3266 while(1)   //這是永不停止的無窮迴圈
3267    PE5=0;  //而迴圈裡只會執行這列

在不知道這3000多列的程式在做什麼的前提之下
可能的改法如下

3262 case 52: {
3263    PA12 = 0;
3264    PB11 = 0;
//3265    {                 //刪掉
//3266    while(1)          //刪掉
3267    PE5 = 0;
3268    Delay_uSec(2000);
3269    PE5 = 1;
3270    Delay_uSec(8000);
3271    }
3272    break;

另外講點良心的建議
你的問題一路看下來
真的只有四個字可以形容:越級打怪
建議你真的要考慮一下
要不要修正一下目前的工作內容
真心不騙

看更多先前的回應...收起先前的回應...

感謝大大回覆與解說
因這個while迴圈 我一定要執行 要怎麼改寫呢?
因為PE5這個是一顆LED燈 我想要讓他漸漸變亮或變暗 所以我才這麼寫的
因為不會PWM的設定 還是大大肯教學一下 PWM的簡易寫法呢QQ

不會 PWM 的設定

我也不會

沒關係 還是很感謝 大神您的幫忙 感恩^^

先把C語言基本語法學好吧.你基本的迴圈,判斷,程式流程會怎樣走都
沒掌握好,就一路寫下來,基礎不打穩,東拼西湊,這樣不會比較快的.

如果 while(1) 是你寫的...

while(1)是「無窮迴圈」,是「永遠執行不會離開」的情境
最常見的例子是「自動販賣機」和「ATM」
一般的程式裡如果這麼寫
要不就是迴圈裡面有符合某特定條件的 break(離開迴圈)
要不就是程式寫錯

嗯 我再檢查一下 程式內容 謝謝 感恩

INT中斷控制???

1
asqweff11
iT邦新手 5 級 ‧ 2019-03-27 09:34:30

土法煉鋼的PWM呼吸燈可以這樣寫就好了

int count1=0,count2=10000;

while(1)
{
	PE5=0;
	Delay_uSec(count1);
	PE5=1;
	Delay_uSec(count2);

	if(count1>=10000)
	{
		count1=0;
		count2=10000;
	}
	else
	{
		count1+=1000;
		count2-=1000;
	}
}

count數字再自己調看看

感謝a30309598大神的幫法 我試試看 真的非常感恩~^^

我要發表回答

立即登入回答