#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RX = P3^0; // 串口接收引脚
uchar receivedData = 0; // 存储接收到的数据
// 串口初始化函数
void InitUART() {
TMOD = 0x20; // 设置定时器1为模式2(8位自动重装)
SCON = 0x50; // 设置串口工作在模式1(8位数据,可变波特率)
TH1 = 0xFD; // 设置波特率为9600,晶振频率11.0592MHz
TR1 = 1; // 启动定时器1
}
// 串口接收中断处理函数
void UART_ISR() interrupt 4 {
if (RI) { // 接收到数据
RI = 0; // 清除接收中断标志
// 获取接收到的数据
uchar data = SBUF;
// 忽略最高位的数据位(第8位)
receivedData = data & 0x7F;
}
}
// 延时函数
void Delay(uint del) {
uint i, j;
for (i = 0; i < del; i++) {
for (j = 0; j < 1827; j++) {
// 空循环
}
}
}
void main() {
InitUART(); // 初始化串口
// 启用全局中断
EA = 1;
// 启用串口接收中断
ES = 1;
while (1) {
// 在这里可以使用 receivedData 变量进行处理,比如打印到LCD等
// 这里只是简单的延时示例,可根据需要修改
Delay(100);
}
}
|