本文只討論串口通信工作方式1的波特率。公式:波特率=(2^SMOD/32)*(T1溢出率)
其中,當(dāng)SMOD=0,波特率正常
當(dāng)SMOD=1,波特率加倍.
T1溢出率就是T1定時(shí)器溢出的頻率,只要算出T1定時(shí)器每溢出一次所需的時(shí)間T,就可以算出溢出率1/T.單位為Hz。
T1定時(shí)器使用工作方式2(TMOD=0X20),即8位初值自動重裝的定時(shí)器。其工作過程是,在TLX和THX中裝好相同的初值,在時(shí)鐘的作用下TLX加一計(jì)數(shù),當(dāng)TLX加滿溢出后,CPU會自動將THX的值裝入TLX中......如此循環(huán)。
每計(jì)一個(gè)數(shù)的時(shí)間為一個(gè)機(jī)器周期,一個(gè)機(jī)器周期為12個(gè)時(shí)鐘周期。如采用11.0592MHz的晶振,機(jī)器周期為12*(1/11.0592MHz)(s),那么定時(shí)器溢出一次的時(shí)間為(256-X)*12/11.0592MHz(s),其中X為裝入的初值。取倒數(shù)即為T1的溢出率。
如要設(shè)為波特率為9600,此處SMOD取0,則9600=(1/32)*11059200/((256-X)*12),解得X=253,即十六進(jìn)制的0xfd。
評論