在串行通信中,波特率的设置与单片机外接的晶振有关,还与定时计数中的初值设置有关。串行通信方式0,其波特率(Baud)是固定的,但是方式一的波特率是可调的。通常结合定时计数器使用,以T1作为串行波特率发生器使用,其工作于方式2(之所以选择这个方式是因为该方式为自动重装载方式,可以为以后免去不少麻烦)。串行通信的Baud是由T1的计数溢出率决定的,有
Baud=2smod/32 *(定时器1溢出率),溢出率为溢出周期的倒数。假定计数初值为X,则计数溢出周期为
12/fosc *(256-X);则有
Baud=(2smod/32) * fosc/[12*(256-X)],一般来说,事先都会知道要设置的波特率是多少,从而根据上述公司,可以推出求初值X的计算公式。
当所取晶振为11.0592M时,不同的波特率所对应的初值如图: