keil4 stc89c52 顯示data不夠 dht11沒有資料
阿新 • • 發佈:2019-01-30
最近遇到了一個十分坑爹的問題,就是在除錯我的畢業設計時候。在加入dht11的例程時,怎麼都讀取不到dht11的資料。
1. 懷疑dht11是不是壞的,因為在之前的連線過程中,發現我還想把正負極接反了,導致整個板子都沒電。後來,有同學告訴我多半是時序問題,我還不相信。
2. 買了一個新的dht11,這時候,把我的程式燒進去,還是讀取不到資料。這個時候,單獨把店家給的例程燒進去,微控制器能夠讀取到資料。但是我把例程加到我的程式裡頭,無論如何就是讀取不到資料。
3.因為dht11中有幾個延時函式,要比較準確控制這幾個延時。沒有辦法,去實驗室用示波器看了一下波形,發現單獨的例程和我的程式在dht11資料口上的波形大致相似,這就讓我十分納悶。
4.後來突然意識到,我改過了我的資料儲存的區域。因為程式碼比較多,又分了幾個檔案,導致data區域不夠了。在編譯選項那裡,改成了放在compact區域。查過資料,發現放在xdata會比放在data區慢。沒有辦法,只有去優化程式碼,在允許的條件下,把int定義的變數都改成unsigned char,最後又改成了smalll。
5.經過修改後,把例程移植到我的程式中,發現能夠正常讀取到資料。
沒有辦法,去實驗室用示波器看了一下波形,