STC51单片机串口发送程序
#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;
}
}