51单片机(AT89C52)串口收发程序
扫描二维码
随时随地手机看文章
#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; //关倍频
ES=1; //开串口中断
EA=1; //开总中断
}
void SerialService() interrupt 4
{
if(RI==1)
{
RI=0;
rtemp=SBUF; //读缓冲区
sflag=1;
}
}
void main()
{
SerialInit();
while(1)
{
if(sflag==1)
{
ES=0; //发送期间关闭串口中断
sflag=0;
SBUF=rtemp;
while(!TI);
TI=0;
ES=1; //发送完成开串口中断
}
}
}