#include <reg51.h>
#define uchar unsigned char
uchar a;
uchar flag;
void uart_init();
void main()
{
uart_init();
while(1)
{
if(flag==1) // 如果收到數據
{
ES=0; //關閉串口中斷
flag=0; //標志位清零
SBUF=a; //將收到的數據發送至緩沖區
while(!TI); //等待數據發送結束
TI=0; // 將發送結束標志清零
ES=1; // 使能串口中斷
}
}
}
void serial() interrupt 4 // 串口中斷服務函數
{
a=SBUF; // 讀出接收到的數據
RI=0; // 清零接收標志位
flag=1; //標志位
}
void uart_init()
{
TMOD=0x20; // 設置定時器1 為方式2
TH1=0xfd; //裝入初值
TL1=0xfd;
TR1=1; //啟動定時器1
SM0=0;
SM1=1; //設置串口為方式1
REN=1; // 接受使能
EA=1; // 打開總中斷開關
ES=1; // 打開串口中斷開關
}