在串行通訊中,收發(fā)雙方的數(shù)據(jù)傳送率(波特率)要有一定的約定。在8051串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器T1的溢出率控制。
方式0
方式0的波特率固定為主振頻率的1/12。
方式2
方式2的波特率由PCON中的選擇位SMOD來決定,可由下式表示:波特率=2的SMOD次方除以64再乘一個fosc,也就是當(dāng)SMOD=1時,波特率為1/32fosc,當(dāng)SMOD=0時,波特率為1/64fosc
方式1和方式3
定時器T1作為波特率發(fā)生器,其公式如下:
T1溢出率=T1計(jì)數(shù)率/產(chǎn)生溢出所需的周期數(shù)

式中T1計(jì)數(shù)率取決于它工作在定時器狀態(tài)還是計(jì)數(shù)器狀態(tài)。當(dāng)工作于定時器狀態(tài)時,T1計(jì)數(shù)率為fosc/12;當(dāng)工作于計(jì)數(shù)器狀態(tài)時,T1計(jì)數(shù)率為外部輸入頻率,此頻率應(yīng)小于fosc/24。產(chǎn)生溢出所需周期與定時器T1的工作方式、T1的預(yù)置值有關(guān)。
定時器T1工作于方式0:溢出所需周期數(shù)=8192-x
定時器T1工作于方式1:溢出所需周期數(shù)=65536-x
定時器T1工作于方式2:溢出所需周期數(shù)=256-x
因?yàn)榉绞?為自動重裝入初值的8位定時器/計(jì)數(shù)器模式,所以用它來做波特率發(fā)生器最恰當(dāng)。當(dāng)時鐘頻率選用11.0592MHZ時,取易獲得標(biāo)準(zhǔn)的波特率,所以很多單片機(jī)系統(tǒng)選用這個看起來“怪”的晶振就是這個道理。
下表列出了定時器T1工作于方式2常用波特率及初值。
常用波特率 Fosc(MHZ)SMODTH1初值
1920011.05921FDH
9600 11.05920 FDH
480011.0592 0FAH
240011.0592 0F4H
120011.0592 0E8H
例如
9600 11.0592 0FDH
T1溢出率=T1計(jì)數(shù)率/產(chǎn)生溢出所需的周期數(shù)
產(chǎn)生溢出所需的周期數(shù)=256-FD(253)=3
SMOD=(11059200/12)*3*1/32=9600
愛華網(wǎng)



