c51 串口 波特率的計算
串行口的四種工作方式對應著(zhù)三種波特率。由于輸人的移位時(shí)鐘的來(lái)源不同,所以,各種方式的波特率計算公式也不同。
一、方式0的波特率
方式0時(shí),移位時(shí)鐘脈沖由56(即第6個(gè)狀態(tài)周期,第12個(gè)節拍)給出,即每個(gè)機器周期產(chǎn)生一個(gè)移位時(shí)鐘,發(fā)送或接收一位數據。所以,波特率為振蕩頻率的十二分之一,并不受 PCON寄存器中SMOD的影響,即:
方式0的波特率=fosc/12
三、方式l和方式3的波特率
方式1和方式3的移位時(shí)鐘脈沖由定時(shí)器T1的溢出率決定,故波特宰由定時(shí)器T1的
溢出率與SMOD值同時(shí)決定,即:
方式1和方式3的波特率=2SMOD/32·T1溢出率
其中,溢出率取決于計數速率和定時(shí)器的預置值。計數速率與TMOD寄存器中C/T的狀態(tài)有關(guān)。當C/T=0時(shí),計數速率=fosc/2;當C/T=1時(shí),計數速率取決于外部輸入時(shí)鐘頻率。
當定時(shí)器Tl作波特率發(fā)生器使用時(shí),通常選用可自動(dòng)裝入初值模式(工作方式2),在
工作方式2中,TLl作為計數用,而自動(dòng)裝入的初值放在THl中,設計數初值為x,則每過(guò)“256一x”個(gè)機器周期,定時(shí)器T1就會(huì )產(chǎn)生一次溢出。為了避免因溢出而引起中斷,此時(shí)應禁止T1中斷。這時(shí),溢出周期為:
系統晶振頻率選為11.0592MHZ就是為了使初值為整數,從而產(chǎn)生精確的波特率。
如果串行通信選用很低的波特率,可將定時(shí)器Tl置于工作方式0或工作方式1,但在
這種情況下,T1溢出時(shí),需用中斷服務(wù)程序重裝初值。中斷響應時(shí)間和執行指令時(shí)間會(huì )使波特率產(chǎn)生一定的誤差,可用改變初值的辦法加以調整。
表6—2列出了各種常用的波特率及其初值。
評論