#include<reg52.h>
#define uchar unsigned char
uchar rtemp,sflag;
void SerialInit() //11.0592M晶振,波特率9600
{
TMOD=0x20; //設置定時器1工作方式為方式2
TH1=0xfd;
TL1=0xfd;
TR1=1; //啟動定時器1
SM0=0; //串口方式1
SM1=1;
REN=1; //允許接收
PCON=0x00; //關(guān)倍頻
ES=1; //開串口中斷
EA=1; //開總中斷
}
void SerialService() interrupt 4
{
if(RI==1)
{
RI=0;
rtemp=SBUF; //讀緩沖區(qū)
sflag=1;
}
}
void main()
{
SerialInit();
while(1)
{
if(sflag==1)
{
ES=0; //發(fā)送期間關(guān)閉串口中斷
sflag=0;
SBUF=rtemp;
while(!TI);
TI=0;
ES=1; //發(fā)送完成開串口中斷
}
}
}