STC89C52如何设置115200波特率
时间: 2024-09-29 13:06:43 浏览: 20
STC89C52单片机是一款基于MCS-51架构的8位微控制器,若要设置其串口通信的波特率为115200bps,你需要进行以下几个步骤:
1. **硬件配置**:
- 确保你的串行接口(通常是UART0或UART1)的TX(发送)和RX(接收)引脚已连接到适当的GPIO引脚,并且RTS(请求发送)和CTS( clear to send)引脚保持空闲或浮空状态。
2. **波特率寄存器配置**:
- 对于USART0,你需要调整SMOD(特殊功能模式寄存器),将其置1以启用双倍定时器。这样,波特率将是晶振频率除以(16 * (2^(SMOD值+1)))。对于115200bps,需要大约24MHz的晶振频率。
- 配置UBRRH寄存器(上半部分)和UBRR0L寄存器(下半部分)来计算实际波特率。UBRRH = (115200 / (2^8)) >> 1,UBRR0L = (115200 / (2^8)) & 0xFF,然后将这两个值组合起来。
```c
SFR UBRR0H = 0xB8; // 上半部分
SFR UBRR0L = 0x00; // 下半部分
SFR SBUF = 0x01; // 用于串口数据传输
// 设置UBRRH和UBRR0L
UBRR0H = (115200 >> 8) & 0xFF;
UBRR0L = 115200 & 0xFF;
```
3. **启用串口**:
- 开启串口工作模式(例如UCON |= _BV(USBS);),并确保U2X(波特率加倍)位设置为0,因为SMOD已经启用双倍定时。
4. **启用中断**:
- 如果需要,你可以设置串口中断,以便在接收到数据或发生错误时响应,比如通过设置IEC(中断允许控制寄存器)的RBIE位。
```c
SFR UCON = 0x87; // 控制寄存器
SFR IEC = 0x98; // 中断允许控制寄存器
// 启动串口接收中断
IEC |= _BV(RBIE);
```