npn 發表于 2021-10-24 18:15
8位單片機向16位變量賦值,是分成兩條指令完成的。
先賦值高8位,此時中斷觸發改變了該變量的值。
中斷返 ...
lkc8210 發表于 2021-10-24 19:06
不太可能
我試過停止定時器再賦值再運行定時器都會出現這種情況
TR0 = 0;TMR_XX_OT=270;TR0 = 1;
188610329 發表于 2021-10-24 19:25
你的問題不是 定時器賦值,而是那個TMR_XX_OT 的判斷,必須放到定時器里判斷是否為0,不能放在外面判斷。
188610329 發表于 2021-10-24 21:08
你按我寫的改了之后,不就知道了?
lkc8210 發表于 2021-10-24 21:38
改了后可以是可以,但是為什么1T會這樣,12T就正常?
lkc8210 發表于 2021-10-24 21:38
改了后可以是可以,但是為什么1T會這樣,12T就正常?
188610329 發表于 2021-10-25 00:24
不是 1T 的問題, 12T也會有這個問題,只是相比1T不容易出現(或者說不容易顯現出來)。而且你原程序,不 ...
wulin 發表于 2021-10-24 21:16
從邏輯上看程序沒有問題,但同一個16位變量在主函數和中斷中都可以操作容易出錯,有前輩就此問題詳細闡述 ...
TTQ001 發表于 2021-10-25 08:50
應該是代碼的原因。 請仔細檢查程序。
lkc8210 發表于 2021-10-25 11:12
10樓有新發現但審批遲了
我試過停止定時器再賦值再運行定時器
lkc8210 發表于 2021-10-25 11:22
在STC89上可以正常運行
應該不會是代碼或邏輯的問題
188610329 發表于 2021-10-25 13:56
說了,不是賦值的問題,是判斷的問題,
你要關定時器的話,得在 if 之前關,然后,整個 if 結束之后開才能徹 ...
Jiang_YY 發表于 2021-10-25 16:07
TR0 = 0;TMR_XX_OT=270;TR0 = 1;
你在關閉定時器后清除一下定時器中斷標志,然后加2個NOP,看看。
按你 ...
yzwzfyz 發表于 2021-10-25 17:31
都是不認真讀手冊的結果:
15. TMOD &= 0xF0; //設置定時器模式
npn 發表于 2021-10-25 19:38
你遇到的問題和這個程序一樣,很多新人都會遇到:
lkc8210 發表于 2021-10-26 01:14
有點覆雜
借鑒了你, 188610329總和wulin總的回覆
188610329 發表于 2021-10-26 17:59
雖然,你這個修正解決了你目前的問題,但是,這個方案是有缺陷的:如果你程序比較長,定時器定時比較短, ...

sunny118 發表于 2022-1-5 22:23
怎么后面的幾個程序中定時器中斷響應后沒有重復初值了?
sunny118 發表于 2022-1-5 22:23
怎么后面的幾個程序中定時器中斷響應后沒有重復初值了?
老董 發表于 2024-7-7 16:42
引腳設置了 嗎?P0M0 P0M1--P7M0 P7M1
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |