在模式0和模式2下串口波特率固萣,模式0为Fosc/12模式2为Fosc/32或Fosc/64,具体由PCON寄存器的SMOD位决定
在模式1和模式3下,波特率是一个可变值波特率可以由定时器1产生(8052可以由定时2产生),那麼波特率到底为多少呢波特率由定时器1的溢出率来决定:
注意:2SMOD这里的SMOD是指数,SMOD为波特率双倍波特率位该位在PCON寄存器中。
当使用timer 1作为波特率产生器时通常需要将timer 1配置成8位自动重装的工作模式下,同时还要禁止timer 1中断那么timer 1的溢出率是怎样计算的呢?溢出率即溢出的频率假设晶振频率为12MHz,TH1值为0xFE则只需要两个时钟脉冲就会溢出,溢出的周期为2us那么溢出的频率就为500KHz。根据定时器一节定时时间有如下计算公式:
那么溢出频率自然就为:
所以最后推到出波特率为:
波特率的计算公式有了,那自然就可以根据波特率推导出TH1的初值了: