访问电脑版页面

导航:老古开发网手机版51单片机51单片机串口

8051单片机串口波特率和定时器1的初值计算

导读:在模式0和模式2下,串口波特率固定,模式0为Fosc/12。模式2为Fosc/32或Fosc/64,具体由PCON寄存器的SMOD位决定。在模式1和模式3下,波特率是一个可变值,波特率可以由定时器1产生(8052可以由定时2产生),那么波特率到
关键字:
8051单片机,定时器1,串口波特率,初值计算,

在模式0和模式2下,串口波特率固定,模式0为Fosc/12。模式2为Fosc/32或Fosc/64,具体由PCON寄存器的SMOD位决定。

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

波特率的计算公式有了,那自然就可以根据波特率推导出TH1的初值了:
BAUD_RATE=(2SMOD/32)*(OSC_FREQ(Hz)/((256-TH1)*12))
32*12*(256-TH1)=(2SMOD*OSC_FREQ(Hz))/BAUD_RATE
256-TH1=(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)
TH1=256-(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)
假设晶振频率为11.0592MHz,波特率为9600,SMOD=0,TH1初值应该为多少呢?根据上面公式可以计算得TH1=256-11059200/(9600*32*12)=0xFD。


来源:互联网   作者:karen  2018/12/5 19:00:01
栏目: [ 51单片机串口]

相关阅读

51单片机的串口通信协议

51单片机串口通讯编程的方式解析

在VB下PC机与MCS-51单片机的串行通信

C51单片机串口的使用方法解析

AT89S51单片机串行口的内部结构及功能介绍

如何计算8051单片机的波特率

MCS-51单片机多机通信的工作原理解析

AT89S51单片机串行口的结构

51单片机IO口模拟串口的实现

51单片机IO口模拟串口通讯的设计

51单片机串口通信的原理与应用流程解析

51单片机三种模拟串口的设计方案解析

如何设置51单片机的串行口来实现与PC机通信

AT89S51单片机串行口的内部结构及工作原理介绍

AT89S51单片机串行口的内部结构解析

51单片机与PC机的串口通讯设计

8051单片机的UART0串口初始化

51单片机实现串口接收和发送数据的两种方法解析

C51单片机串口通讯的硬件电路图

8051单片机实现高速串行通信的设计