波特率计算器
51/STM32/ESP32 串口波特率与分频寄存器计算,含误差分析与初始化代码
TH1 / TL1
253
0xFD
实际波特率
9600.00
bps
误差
0.0000%
初始化代码
/* 51 单片机 串口初始化 晶振 11.0592MHz 目标波特率 9600 */
/* 实际波特率 9600.00 误差 0.0000% SMOD=0 */
/* TH1 = 253 (0xFD) */
void UART_Init(void)
{
PCON &= 0x7F; /* SMOD=0 波特率不加倍 */
TMOD &= 0x0F;
TMOD |= 0x20; /* 定时器1 模式2(8位自动重装) */
TH1 = 0xFD; /* 定时器初值 */
TL1 = 0xFD;
TR1 = 1; /* 启动定时器1 */
SCON = 0x50; /* 串口模式1,允许接收 */
ES = 1; /* 允许串口中断 */
EA = 1; /* 开总中断 */
}常用波特率对照表
| 波特率 | TH1 | 实际波特率 | 误差 |
|---|---|---|---|
| 1200 | 0xE8 | 1200.00 | 0.0000% |
| 2400 | 0xF4 | 2400.00 | 0.0000% |
| 4800 | 0xFA | 4800.00 | 0.0000% |
| 9600 | 0xFD | 9600.00 | 0.0000% |
| 19200 | 0xFF | 28800.00 | 50.0000% |
| 38400 | 0xFF | 28800.00 | 25.0000% |
| 57600 | 超出范围 | — | — |
| 115200 | 超出范围 | — | — |