频率22.1184MHZ C51 串口收发程序
时间: 2023-08-23 19:06:14 浏览: 41
对于C51单片机的串口收发程序,你可以参考以下示例代码:
```c
#include <reg52.h>
#define FREQ 22118400UL // 单片机工作频率
#define BAUDRATE 9600 // 波特率
void UART_Init() {
TMOD = 0x20; // 设置定时器1为8位自动重装模式
TH1 = 256 - FREQ / 12 / 32 / BAUDRATE; // 计算波特率重装值
TL1 = TH1; // 初始化定时器1的初值
PCON = 0x00; // 波特率不加倍
SCON = 0x50; // 设置串口为模式1,REN=1
TR1 = 1; // 启动定时器1
}
void UART_SendByte(unsigned char dat) {
SBUF = dat;
while (!TI); // 等待发送完成
TI = 0; // 清除发送标志位
}
unsigned char UART_ReceiveByte() {
while (!RI); // 等待接收完成
RI = 0; // 清除接收标志位
return SBUF;
}
void main() {
UART_Init(); // 初始化串口
while (1) {
unsigned char data;
data = UART_ReceiveByte(); // 接收数据
UART_SendByte(data); // 发送数据
}
}
```
请注意,上述代码是基于C51单片机的8051系列,使用定时器1来实现波特率的计算和串口的收发功能。在初始化时,根据所使用的单片机工作频率和波特率计算出波特率重装值,并设置相应的寄存器。然后,在主循环中,通过调用`UART_ReceiveByte()`函数接收数据,再调用`UART_SendByte()`函数发送数据。
你可以根据自己的实际需求对代码进行修改和扩展。希望对你有帮助!如果有任何问题,请随时提问。