標題: 這單片機程序如果第二個for里面b>0改為>=0就無法正常實現(xiàn)LED的閃爍? [打印本頁]

作者: luogu34    時間: 2022-11-18 15:37
標題: 這單片機程序如果第二個for里面b>0改為>=0就無法正常實現(xiàn)LED的閃爍?
新手菜鳥,大佬勿噴。
請問下面這串代碼如果第二個for里面b>0改為>=0就無法正常實現(xiàn)LED的閃爍是什么原因?麻煩各位大佬給個提示。謝謝了

51hei.png (85.55 KB, 下載次數(shù): 51)

51hei.png

作者: Hephaestus    時間: 2022-11-18 19:42
b是unsigned char,永遠大于等于0,這似乎是小學(xué)數(shù)學(xué)問題。
作者: silence991    時間: 2022-11-18 19:59
修改a和b的類型為整數(shù)就可以了
作者: awedf    時間: 2022-11-18 20:07
unsigned char表示0~255,永遠大于等于0
作者: ningsy    時間: 2022-11-18 20:22
unsigned char b,當最后一步b=0時,0=0,for條件一直為真,但b-1又不存在,所以進入死循環(huán)跳不出來了。
作者: Hephaestus    時間: 2022-11-18 20:52
ningsy 發(fā)表于 2022-11-18 20:22
unsigned char b,當最后一步b=0時,0=0,for條件一直為真,但b-1又不存在,所以進入死循環(huán)跳不出來了。

誰告訴你b-1不存在?b-1=255這么簡單的問題都不知道嗎?
作者: luogu34    時間: 2022-11-18 20:56
好了,迷糊了我
作者: 名字不是重點    時間: 2022-11-19 14:07
luogu34 發(fā)表于 2022-11-18 20:56
好了,迷糊了我

別迷糊~~6樓道 出真相了:

不就是要數(shù)組逆向嗎?
for(b=0;b<8;b++)
{
P2=~S[7-b];
delay();
}
這就逆向了。就這么簡單的。
作者: luogu34    時間: 2022-11-20 00:51
名字不是重點 發(fā)表于 2022-11-19 14:07
別迷糊~~6樓道 出真相了:

不就是要數(shù)組逆向嗎?

感謝你

作者: 188610329    時間: 2022-11-20 01:17
名字不是重點 發(fā)表于 2022-11-19 14:07
別迷糊~~6樓道 出真相了:

不就是要數(shù)組逆向嗎?

暈啊…… 有必要繞路走么?

  1. for(b=8;b>0;)
  2. {
  3. b--;
  4. P2=~S[b];
  5. delay();
  6. }
復(fù)制代碼

不就好了? 何必一頭 做加法 一頭還要 再去減?
作者: sgq657785    時間: 2022-11-20 01:43
因為unsignrd char 包括0-255,所以等于0是肯定成立的,所以永遠不會結(jié)束for循環(huán),也就是變成死循環(huán)了!
作者: Hephaestus    時間: 2022-11-20 03:04
本帖最后由 Hephaestus 于 2022-11-20 18:19 編輯
188610329 發(fā)表于 2022-11-20 01:17
暈啊…… 有必要繞路走么?

for(b=8;b>0;)

這個論壇真奇怪,10樓偷偷改了自己的帖子居然沒有顯示編輯時間。
作者: 188610329    時間: 2022-11-20 16:19
Hephaestus 發(fā)表于 2022-11-20 03:04
敲黑板!
你的代碼缺[]

這東西你敲黑板沒用, 要去敲管理員,

為什么  你[]  里缺個 b 可以發(fā)出來.
為什么人家  [7-b]  也可以發(fā)出來.
唯獨 []  里面只放一個字母 不管是 i 或者 b 都發(fā)不出來?

你要是真的在用心逛論壇,就會見怪不怪,或者,就算要敲也不是敲黑板了。
作者: Longan.Wang    時間: 2022-11-21 10:03
你b的類型是unsigned char,如果結(jié)束條件是b>=0,在b==0時條件成立,當b再減1時,告訴你此時b就變成了255了,b>=0這個條件還是成立,但是此時再繼續(xù)操作,數(shù)組就已經(jīng)越界了,這是一個致命的錯誤。。。
作者: Longan.Wang    時間: 2022-11-21 10:06
sgq657785 發(fā)表于 2022-11-20 01:43
因為unsignrd char 包括0-255,所以等于0是肯定成立的,所以永遠不會結(jié)束for循環(huán),也就是變成死循環(huán)了!

如果是死循環(huán),LED還是要閃爍!
所以不是死循環(huán),是出現(xiàn)了數(shù)組越界的致使錯誤!
作者: Longan.Wang    時間: 2022-11-21 10:09
ningsy 發(fā)表于 2022-11-18 20:22
unsigned char b,當最后一步b=0時,0=0,for條件一直為真,但b-1又不存在,所以進入死循環(huán)跳不出來了。

b的類型是unsigned char,如果結(jié)束條件是b>=0,在b==0時條件成立,當b再減1時,告訴你此時b就變成了255了,b>=0這個條件還是成立,但是此時再繼續(xù)操作,數(shù)組就已經(jīng)越界了,這是一個致命的錯誤。。!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1