串口通信波特率问题:

学习使用普中科技51开发板,在串口通信实验教程中,应特别注意波特率适用问题

                            TMOD工作方式寄存器

TMOD T1定时/计数器 T0定时/计数器
(89H) D7 D6 D5 D4 D3 D2 D1 D0
位定义 GATE C/
T
M1 M0 GATE C/
T
M1 M0

T1/T2定时器有4种工作模式:                                                

模式0:13位定时计数模式                                                      
模式1: 16位定时计数模式
模式2:8位自动重装载模式
模式3:两个独立8位定时计数模式(只T0) 

定时器定时时间计算方法:

Td=(2^n-Count)×fosc/12    ,.......................................................................(公式1)                                

其中Td为计时时间,n为位数,fosc为晶振频率,

除以12因为:单指令周期  = 一个机器周期 = 6状态周期 = 12个时钟周期  (参见时钟电路与时序内容)

计数:2^n-Count

其中,

模式0不常用的;
模式1常用于定时;
模式2常用,例如串口波特率发生器
模式3不常用;                                       

                                                                                  串行口控制寄存器

位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
位定义 SM0 SM1 SM2 REN TB8 RB8 TI RI
功能 方式选择 多机控制 串行接收允许/禁止 发送的第9位 接收的第9位 发送中断有/无 接收中断有/无

 串行口分四种工作方式,由SM0、SM1二位决定,其定义如下:
SM0   SM1   工作方式     功能描述                                                     波特率

 0   0   方式0   8位移位寄存器                                             Fosc/12
 0   1   方式1   10位UART(包括一个起始位和停止位)                可变
 1   0   方式2   11位UART (包括一个起始位和停止位)        Fosc/64或fosc/32
 1   1   方式3   11位UART (包括一个起始位和停止位)                可变


 由公式1得

各种方式的波特率:

方式0的波特率BR =  fosc/12

方式2的波特率BR =(2^SMOD/64)· fosc 

方式1的波特率 BR=(2^SMOD/64)·(Td溢出率) .......................................................................(公式2)      

方式3的波特率 BR=(2^SMOD/64)·(Td溢出率) .......................................................................(公式3)    

 

经公式1与公式2化简得:

 Count=2^n - (12×64×BR)/(2^SMOD×fosc)

注意 2^n 是否足够减

 

posted on 2019-06-16 13:45  终点即是原点  阅读(531)  评论(0)    收藏  举报