㈠ 51單片機串口通信定時器初值怎麼計算公式和計算原理是什麼
串口通信方式1和方式3,要用T1來控制波特率。
T1,使用定時方式2,其初始值,和晶振頻率、波特率、SMOD的關系式如下:
T1初值 = 256 - fosc * (SMOD + 1) / (384 * 波特率)
--我不明白波特率跟這個定時器的關系。麻煩你詳細一點!
這個關系,是由硬體決定的,只有搞微電子的,才能弄明白。
軟體人員,編程的時候,會用這個公式即可,也沒有必要弄明白這個。
基本上,也沒有幾個人,能夠弄明白集成電路內部,究竟是怎麼處理的。
其它的很多人,好像是很明白,其實都是在瞎編理由,包括寫書的那些人。
㈡ 51單片機串列口工作在方式0,如何求波特率,及定時器初值!
方式0的波特率是系統時鍾的十二分之一,為固定波特率,與定時器無關
定時器計算: 溢出中斷的定時器 指令周期是 系統時鍾的十二分之一 ,16方式
fosc=11.0592M
fcyc=11059200/12 , 定時時間 tmer ms
TH=(65535-timer*1000/fcyc)/256
TL=(65535-timer*1000/fcyc)%256
㈢ 單片機C51定時器,定時方式0,初始值計算
就是你的方法算啊,方式0就是只用到13位其餘的位用零填,之後再將它換成16進制的就可以了,就像11110 0000 1100用0填後是1111 0000 0000 1100B,再將它換成16進制數,也就是TH0=0F0H,TLO=00CH.
其實用C或用方式1就好多了。不用那麻煩的。
㈣ 單片機定時器初值計算
呵呵 幫你分析一下啊
定時時間2ms=(2的16次方-時間常數X)12/f 即晶振為12M f=12*1000000
2ms=(2的16次方-時間常數X)12/(12*1000000)
2*0.001=(2的16次方-時間常數X)12/(12*1000000)
2*0.001=(2的16次方-時間常數X)/(1000000)
2000=65536-時間常數X
時間常數X=65536-2000
TH0=(65536-2000)/256; 就是轉換成十六進制 再除以256 取整數 即高8位送時間常數寄存器的高8位計數器
TL0=(65536-2000)%256; 就是轉換成十六進制 再除以256 取余數 即低8位送時間常數寄存器的低8位計數器
哈哈 滿意就選滿意回答吧
㈤ 51定時器初值計算有什麼簡便演算法嗎
51單片機定時器初值計算:
void main(void)
{
s1=1;
TMOD=0x01; //使用定時器T0的模式1
TH0=(65536-46083)/256; //定時器T0的高8位設置初值
TL0=(65536-46083)%256; //定時器T0的低8位設置初值
函數功能:定時器T0的中斷服務函數
void Time0(void ) interrupt 1 using 0 //定時器T0的中斷編號為1,使用第1組工作寄存器
{
count++; //每產生1次中斷,中斷累計次數加1
if(count==20) //如果中斷次數計滿20次
count=0; //中斷累計次數清0
s++; //秒加1
定時器初值 46083 是怎麼計算出來的? 一般我們如用 AT892051的話 定時50MS 就是 TH0=(65536-50000)/256。使用的12M晶體 ,20次為1S。
使用說明
以12M晶振為例:每秒鍾可以執行1000000次機器周期個機器周期。而T 每次溢出最多65536 個機器周期。我們盡量應該讓溢出中斷的次數最少(如50ms),這樣對主程序的干擾也就最小。
開發的時候可能會根據需要更換不同頻率的晶振(比如c51單片機,用11.0592M的晶振,很適合產生串口時鍾,而12M晶振很方便計算定時器的時間),使用插接式比較方便。
對12MHz 1個機器周期 1us 12/fosc = 1us,方式0 13位定時器最大時間間隔 = 2^13 = 8.192ms,方式1 16位定時器最大時間間隔 = 2^16 = 65.536ms,方式2 8位定時器最大時間間隔 = 2^8 = 0.256ms =256 us。
定時5ms,計算計時器初值 M = 2^K-X*Fosc/12 12MHz。方式0: K=13,X=5ms,Fosc=12MHz 則 M = 2^13 - 5*10^(-3)*12*10^6/12= 3192 = 0x0C78。
THx = 0CH,TLx = 78H,方式1: K=16,X=5ms,Fosc=12MHz 則 M = 2^16 - 5*10^(-3)*12*10^6/12= 60536 = 0xEC78。
THx = ECH,TLx = 78H,50ms 12MHz THx = 3CH,TLx = B0H,10ms THx = D8H,TLx = F0H。
㈥ 51單片機中定時器初始值是怎樣計算的呀
下面按外接,12MHz晶振算..在P1.0處輸出1MS方波
ORG 00
AJMP MAIN
ORG 0BH
LALL T0INT
RETI
ORG 30H
MAIN:
LCALL T0INIT
AJMP $
T0INIT:
MOV TMOD,#01H
LCALL T0LOAD
SETB TR0
SETB ET0
SETB EA
RET
T0LOAD:
MOV TL0,#0F0H ;初值計算,65536US-1MS=D8F0H
MOV TH0,#0D8H
RET
T0INT:
LCALL T0LOAD
JB P1.0,NEXT
SETB P1.0
RET
NEXT:
CLR P1.0
RET
END
大概應該就是這樣的..
㈦ 請問單片機定時器的初值是怎麼設的
如果你用T0,就用TH0=0X__;TL0=0X__;復初值,TH0為高8位,TL0為低8位;T1、T2是一樣的。