#include<reg52.h>
#define uchar unsigned char
unsigned char rtemp,sflag;
unsigned char code Buffer[] = "Welcome To The MCU World."; //所要發送的數據
unsigned char *p;
unsigned char TestBuff[3];
unsigned char mode=0;
unsigned char ArrayIndex=0;
void SerialInit() //11.0592M晶振,波特率19200
{
TMOD=0x20; //設置定時器1工作方式為方式2
TH1=0xfd;
TL1=0xfd;
TR1=1; //啟動定時器1
SM0=0; //串口方式1
SM1=1;
REN=1; //允許接收
PCON=0x80; //關倍頻
ES=1; //開串口中斷
EA=1; //開總中斷
}
void SerialSend(unsigned char temp)
{
ES=0; //發送期間關閉串口中斷
SBUF=temp;
while(!TI);
TI=0;
ES=1; //發送完成開串口中斷
}
void SerialService() interrupt 4
{
if(RI==1)
{
RI=0;
if(mode==0)
{//如果處於通的測試模式
TestBuff[ArrayIndex]=SBUF; //讀緩沖區
ArrayIndex++;
}
if(ArrayIndex==3)
{
sflag=1;
}
}
}
void main(void)
{
SerialInit();
p = Buffer;
while(*p != '\0')
{
SerialSend(*p);
p++;
}
ArrayIndex=0;
while(sflag)
{
p = TestBuff;
while(*p != '\0')
{
SerialSend(*p);
p++;
}
sflag=0;
}
}