|
發布時間: 2017-11-18 20:49
正文摘要:已經看了很久很久很久了一直未能解決這個問題...很絕望啊,國慶節就寫好的,一直找到現在都還不知道哪里出了問題,太難受了!!!這是定時采集溫度的單片機程序 #include <reg52.h> #include <intrins.h> ... |
| T0Init();放到while(1)里????其他沒看,就這個已經是致命問題了。 |
Laptop 發表于 2017-11-29 10:15 還沒有解決 |
| 還有就是最后那個定時器的中斷,用了寄存器using 1會有問題。。。不曉得為啥 |
wulin 發表于 2017-11-26 10:26 是的,如果沒有按鍵按下就還在數碼管,但本意也是如此 KEY2按下才會去做要做的,相當于確認鍵。 現在問題就是 定時器啟動的位置在數碼管后面在1s測量會有問題 其他是沒有問題的 |
Laptop 發表于 2017-11-25 21:25 你的問題根源根本不在定時器而是在smg()和smg2(),你在這兩個子程序里使用死循環while(1),到此除了中斷程序外其它程序都無法執行。 |
| !!!求大神 |
Laptop 發表于 2017-11-19 16:25 對的是這樣 不過 我定時的時間是50ms 利用中斷來增加定時時間。然后 關于設定 我也是這樣想的 設定一次就夠了 后面需要的時候再打開 但是因為這個定時器的打開在數碼管前和后有很大區別 在后面1s的時候有問題 然后我就調著調著就把啟動放在初始化里了 但是這其實影響不大 主要問題是 啟動在數碼管后面才是正確的但是有問題。。。放在前面就可以。。。很是郁悶 |
Laptop 發表于 2017-11-19 16:25 你還沒有掌握定時器的使用方法。普通51單片機如果外接12M晶振,定時器最大定時周期65.5ms,想得到更長的定時時間通常使用定時器中斷計數。不是特別需要不要在程序中頻繁更改定時器設定,而是根據需要打開或關閉定時器或定時器中斷。所以定時器初始化函數放在主循環前面,如果有必要改變定時器定時周期只要在其函數中打開定時器TR0前重裝TH0、TL0初值即可。 |
wulin 發表于 2017-11-19 07:13 定時器提前開的話還沒選擇幾秒測一次就已經測完了 |
|
void main() { T0Init(); while(1) { smg(); ds1302(); smg2(); } } |