![]() |
發布時間: 2020-5-12 20:17
正文摘要:程序燒錄的時候有斷開重連,stc-isp也沒報錯,握手后寫入是顯示成功的。電路的小燈是上電以后燈就一直亮,然后復位鍵按了也沒反應,不會出現按下復位燈滅然后再亮的那種反應。 代碼如下。是很簡單的小燈閃爍的代碼 ... |
moon20000boy 發表于 2020-5-13 23:38 我直接用10定義串口電壓測出來是對的,應該是led電路出問題了,我感覺可能是三極管的原因,我去查查 |
我代碼改了一下,燒錄進去還是沒反應。我懷疑是晶振壞了,我測了一下晶振顯示數值是2.03-2.04和2v-1.98v。但是換了幾個晶振好像壓差都是0.4v、0.5v。led還是常量不閃爍 那就是你再改下你代碼中的 led = ~led; 說實話位反轉我從來沒用過取反,我都是直接異或反轉電平,你可以試試 led^=led; 取反這個操作是按位取反,就1位的這種不知道是不是不應該這么操作,我都是異或,你試試吧 |
moon20000boy 發表于 2020-5-12 22:02 我代碼改了一下,燒錄進去還是沒反應。我懷疑是晶振壞了,我測了一下晶振顯示數值是2.03-2.04和2v-1.98v。但是換了幾個晶振好像壓差都是0.4v、0.5v。led還是常量不閃爍 |
一樓說得很對,就是延時問題,你把這個void delay_100(unsigned char j) 改為void delay_100(unsigned long j) ,這樣才符合你要輸入值1000000 |
原來你這個函數也是從官方軟件里提供的,你可以設置成延時100ms,這樣你直接調用里寫Delay100ms(5);延時500ms就可以明顯看到結果了
![]() |
我上邊說錯了,你要是賦值1000000,unsigned int 最大才65535,仍然盛不下,得需要unsigned long了,建議你調整那個delay函數 |
你好,你這個函數void delay_100(unsigned char j) 參數是unsigned char 類型,最大255,應該改成unsigned int 類型,因為你調用時賦值是1000000,程序沒有報錯,運行的時候估計最大只能延時255*100us,或者干脆是1000000直接取了低位,延時太小,所以你肉眼看不到閃爍,一直為亮 |