㈠ 51定時器初值怎麼算
首先,51單片機是加一計數,到65536溢出,所以定時時間(經過的脈沖個數,如果一個脈沖是1us,剛好延時50ms是50000個脈沖)是65536減初值
,初值又分高8位和低8
位,高8位的1代表256,因此高8位的數值所代表的數是256的整數倍,低位最大不超過255,所以一定是除以256之後的余數,用公式是這樣:
初值=65536-定時脈沖個數=th0*256+tl0
反過來看你就很明白了
㈡ 51單片機的定時器初值到底是TH0 = (65536-x) /256;還是TH0 = (65535-x) /256;
51單片機的定時器初值確定時,我們通常使用65536減去定時脈沖個數來計算。這是因為16位計數器的最大可寫入數值為65535。假設定時周期為1微秒,且頻率為12MHz,即一個脈沖到來即溢出,此時應寫入65535,即65536-1。
因此,(65536-x)/256是正確的計算方法。考慮到定時時間不可能為零,(65536-x)/256的結果不會是256,小於256的數都可以裝入。同樣地,對於TL0來說,也不會是256,因為256的倍數除以256後余數為0。
實際上,不管是65535還是65536,對TH0寫入的結果是一樣的。但對於TL0(或整個計數器來說),理論上存在一個脈沖的差別。假設定時周期為1微秒,寫入65535時,定時器一打開,脈沖立即到來,可能不到1微秒。而寫入65534,則需兩個脈沖才會溢出,時間肯定大於1微秒。
這種方法用於實現這么小的定時,顯然是不準確的。還有中斷響應時間、主程序響應時間等都需要考慮。對於長時間定時,這個誤差是可以忽略的。要想減小誤差,可以提高晶振或系統時鍾的頻率。當定時脈沖個數較多時,就不必糾結這一個脈沖的誤差了,同時中斷響應時間和中斷程序處理的時間也減小了,大多數情況下是可以忽略的。
㈢ 單片機中 定時器/計數器 的計數初值是怎麼計算得出的(計數和定時計算方式是否不同)--初學單片機
計數初值的計算:
定時或計數方式下計數初值如何確定:定時器選擇不同的工作方式,不同的操作模式其計數值均不相同。若設最大計數值為M,各操作模式下的M值為:
模式0:M=2^13=8192
模式1:M=2^16=65536
模式2:M=2^8=256
模式3:M=256,定時器T0分成2個獨立的8位計數器,所以THO、TLO的M均為256。
因為MCS-51的兩個定時器均為加1計數器,當初值到最大值(00H或0000H)時產生溢出,將TF位置1,可發出溢出中斷,因此計數器初值X的計算式為:X=M-計數值。
式中的M由操作模式確定,不同的操作模式計數器的長不相同,故M值也不相同。而式中的計數值與定時器的工作方式有關。
1、計數工作方式時
計數工作方式時,計數脈沖由外部引入,是對外部沖進行計數,因此計數值根據要求確定。其計數初值:X=M-計數值。
2、定時工作方式時
定時工作方式時,計數脈沖由內部供給,對機器周期進行計數,計數脈沖頻率fcont=fosc*1/12、計數周期T=1/fcont=12/fosc定時工作方式的計數初值X等於:
X=M-計數值=M-t/T=M-(fosc*t)/12
式中:fosc為振盪器的振盪頻率,t為要求定_的時間。
(3)單片機定時器計數初值的計算公式擴展閱讀:
定時器工作方式的設定:
定時器有兩種工作方式:定時和計數。由TMOD的D6位和D2位決定,其中D6位決定T1的工作方式,D2位決定T0的工作方式。值為0時工作在定時方式,值為1時工作在計數方式。並且有四種操作模式:
1、模式0:13位計數器,TLi只用低5位。
2、模式1:16位計數器。
3、模式2:8位自動重裝計數器,THi的值在計數中不變, TLi 溢出時,THi中的值自動裝入TLi中。
4、模式3:T0分成2個獨立的8位計數器,T1停止計數。