欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: C語言for(i=0;i<120;i++)---i是什么含義 為什么從120改成500 LED一直是常亮了 [打印本頁]

作者: QWE4562012    時間: 2021-11-3 14:58
標題: C語言for(i=0;i<120;i++)---i是什么含義 為什么從120改成500 LED一直是常亮了
for(i=0;i<120;i++)---i是什么含義  為什么從120改成500  LED一直是常亮了

LED proteus (1).png (46.08 KB, 下載次數: 73)

LED proteus (1).png

LED proteus (2).png (36.55 KB, 下載次數: 55)

LED proteus (2).png

作者: dhz0105    時間: 2021-11-3 16:40
因為你的i最大255
作者: npn    時間: 2021-11-3 16:43
unsigned char范圍0~255
作者: ankangyu    時間: 2021-11-3 16:53
建議,學習一下各種類型得定義,以及范圍
作者: 188610329    時間: 2021-11-3 16:54
因為,i++ 到255之后又變回0,所以, 你的  i 永遠小于500,因此,for(i=0;i<500;i++) 可以近似的看成 while(1); 進了循環之后不會出來。程序就卡死在那里了。

最后,這個帶參delayms 應該是計算過的,看上去是12T的單片機 配合前面的while 延時1ms 就需要 for 120 次。所以就算你要改也不應該改 i 這里,而應該改 Delayms() 括號里的數字才對。
作者: 一片一城    時間: 2021-11-3 20:35
既然是仿真,那么在P1.0接示波器看看一個波形的時間是多少。
作者: wps10025    時間: 2021-11-3 20:42
溢出了,改成unsigned int i 就行了。那個i意思就是讓CPU在for循環里面轉圈圈,i就是記了多少圈,超過了范圍就出去了。依次來達到延時目的
作者: QWE4562012    時間: 2021-11-4 17:04
謝謝網友熱線支持  對C不會
作者: 13205495918    時間: 2021-11-4 19:03
你的那個定義的變量i是無符號字符型,賦給i的值超出這個這個變量的取值范圍了。要在0~255之間進行選擇
作者: 傻笑是    時間: 2021-11-4 19:59
i的值為255最大,超過之后,數值無法確定
作者: baobao125    時間: 2021-11-4 21:54
跟我一樣,一開始看不懂拿程序來改數值看效果
作者: 陸離孩子    時間: 2021-11-5 02:30
unsigned char最大數值255,改成500后會一直循環,將unsigned char改為unsigned int,就可以了,這是C語言里數據類型,建議看一下
作者: QWE4562012    時間: 2021-11-6 17:22
這個變量i用的<120,為什么是120這個數字?
作者: QWE4562012    時間: 2021-11-6 17:22
這個變量i用的<120,為什么是120這個數字?
作者: Hephaestus    時間: 2021-11-6 18:57
QWE4562012 發表于 2021-11-6 17:22
這個變量i用的<120,為什么是120這個數字?

你改成60跑一下就知道了。
作者: 188610329    時間: 2021-11-6 22:34
QWE4562012 發表于 2021-11-6 17:22
這個變量i用的<120,為什么是120這個數字?

說明你雖然上論壇求助, 也只是問問而以。 連答復都懶得看……

在5樓已經跟你說過為什么是120這個數字了,你居然還問……
作者: hhdsdy    時間: 2021-11-6 22:43
188610329 發表于 2021-11-6 22:34
說明你雖然上論壇求助, 也只是問問而以。 連答復都懶得看……

在5樓已經跟你說過為什么是120這個數字 ...

論壇很多提問的都是這樣,有時候真的懶得回復。這個帖子很早就看到了,一直沒有回復的興趣。
作者: 1314520jieber    時間: 2021-11-6 22:45
188610329 發表于 2021-11-3 16:54
因為,i++ 到255之后又變回0,所以, 你的  i 永遠小于500,因此,for(i=0;i

寫法屬實有問題,如果這個delayms是一個延時固定毫秒級函數的話,調用處應該是改寫傳入參數(括號里的數值),而不是改這個for循環,如果多處調用delayms函數,按樓主的改法,到處都得改了,費時費力了,僅僅是測試的話,無所謂
作者: rayin    時間: 2021-11-7 17:17
i 被定義為unchar, 變化范圍在0-255, i<150 ,i增加到151后就退出循環了. i<500, i增加到255后就不能再增加了條件式一直滿足,所以就是死循環. i 定義改為unsigned int ,就又能愉快的玩耍了.
作者: 君工創    時間: 2021-11-7 21:56
我也曾經遇到過同樣的問題,不能大于255。
作者: iwillw    時間: 2021-11-8 17:39
unchar最大值255,要改為int類型,這是一個延時函數,參數要選對!
作者: wspytu    時間: 2021-11-8 18:53
i定義的uchar型,程序執行LED=~LED后,就一直在delay中,調不出來了
作者: Hephaestus    時間: 2021-11-8 20:00
樓主不光是不懂不同類型都有多大范圍,函數調用也完全理解錯誤。想把延遲增加3倍,把Delay里面的參數增加3倍就可以了,而不要去瞎改已經寫好的Delay函數。




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