串口通讯编程。要求1)波特率4800;2)使用中断/查询方式;3)完成发送、接收;4)串口使用工作方式1.
时间: 2023-06-27 13:06:23 浏览: 184
以下是串口通讯的基本步骤:
1. 配置串口工作方式1,即8位数据位,无校验位,1位停止位。
2. 配置波特率为4800,可通过波特率发生器或者设置寄存器来实现。
3. 配置发送和接收缓冲区,并开启相应中断。如果使用查询方式,可以不需要开启中断。
4. 发送数据时,将要发送的数据写入发送缓冲区,并等待发送完成标志位。
5. 接收数据时,等待接收完成标志位,并从接收缓冲区读取数据。
下面是一个简单的示例代码,仅供参考:
```c
#include <reg52.h>
#define UART_BAUDRATE 4800 // 波特率
sbit LED = P1^0; // LED 灯
void UART_Init() {
TMOD = 0x20; // 定时器1工作在模式2
TH1 = 256 - (11059200/12/32/UART_BAUDRATE);
TL1 = TH1;
TR1 = 1; // 启动定时器1
ET1 = 0; // 不使用定时器1中断
SCON = 0x50; // 8位数据位,无校验位,1位停止位
ES = 1; // 开启串口中断
EA = 1; // 开启总中断
}
void UART_SendByte(unsigned char dat) {
SBUF = dat;
while (!TI); // 等待发送完成
TI = 0; // 清除发送完成标志位
}
unsigned char UART_RecvByte() {
while (!RI); // 等待接收完成
RI = 0; // 清除接收完成标志位
return SBUF;
}
void UART_ISR() interrupt 4 {
if (TI) {
TI = 0; // 清除发送完成标志位
}
if (RI) {
RI = 0; // 清除接收完成标志位
unsigned char dat = SBUF;
LED = !LED; // 接收到数据时,LED 灯反转
}
}
void main() {
UART_Init(); // 初始化串口
while (1) {
UART_SendByte('H'); // 发送字符'H'
UART_SendByte('i'); // 发送字符'i'
UART_SendByte('!'); // 发送字符'!'
delay(1000); // 延时1秒
}
}
```
阅读全文