//****** 包含头文件 ******//
#include <reg52.h>
//****** 定义变量 ******//
#define XTAL 11059200 //晶振频率
#define baudrate 9600 //波特率
//****** 声明函数 ******//
void UartInit();
void SendByte();
void SendString();
//****** 主函数 ******//
void main()
{
UartInit();
SendString("test");
while(1);
}
//****** 串口初始化 ******//
void UartInit(void)
{
SCON=0x50;//0101 0000 B,即RI=0,TI=0,REN=1,SM2=0,SM1=1,SM0=0
PCON=0x00;//0000 0000 B,即SMOD=0
TMOD=0x20;//0010 0000 B,即M0=0,M1=1,定时器1,方式2
TH1=256-(XTAL/(32*12*baudrate));
TL1=256-(XTAL/(32*12*baudrate));
TCON=0x40;//0100 0000 B,即TR1=1,定时器1运行
IE=0x90;//1001 0000 B,即ES=1,EA=1,打开串口中断,打开总中断
}
//****** 发送一个字节 ******//
void SendByte(unsigned char c)
{
SBUF=c;
while(!TI);
TI=0;
}
//****** 发送字符串 ******//
void SendString(unsigned char *s)
{
while(*s!='\0')
{
SendByte(*s);
s++;
}
}
//****** 串口中断接收数据 ******//
void UartReceive () interrupt 4
{
unsigned char receiveData;
if(RI)
{
RI=0;
receiveData=SBUF;
SBUF=receiveData;
while(!TI);
TI=0;
}
}
04-06
2370
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)