串口通信波特率问题:
学习使用普中科技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 是否足够减