|
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RX = P3^0; // 串口接收引腳
uchar receivedData = 0; // 存儲接收到的數(shù)據(jù)
// 串口初始化函數(shù)
void InitUART() {
TMOD = 0x20; // 設(shè)置定時器1為模式2(8位自動重裝)
SCON = 0x50; // 設(shè)置串口工作在模式1(8位數(shù)據(jù),可變波特率)
TH1 = 0xFD; // 設(shè)置波特率為9600,晶振頻率11.0592MHz
TR1 = 1; // 啟動定時器1
}
// 串口接收中斷處理函數(shù)
void UART_ISR() interrupt 4 {
if (RI) { // 接收到數(shù)據(jù)
RI = 0; // 清除接收中斷標(biāo)志
// 獲取接收到的數(shù)據(jù)
uchar data = SBUF;
// 忽略最高位的數(shù)據(jù)位(第8位)
receivedData = data & 0x7F;
}
}
// 延時函數(shù)
void Delay(uint del) {
uint i, j;
for (i = 0; i < del; i++) {
for (j = 0; j < 1827; j++) {
// 空循環(huán)
}
}
}
void main() {
InitUART(); // 初始化串口
// 啟用全局中斷
EA = 1;
// 啟用串口接收中斷
ES = 1;
while (1) {
// 在這里可以使用 receivedData 變量進(jìn)行處理,比如打印到LCD等
// 這里只是簡單的延時示例,可根據(jù)需要修改
Delay(100);
}
}
|
|