#include <REGX52.H>
#include <stdio.h>
#include <intrins.h>
//串口初始化
void UARTInit()
{
EA =1;//打开总中断
ES =1;//打开串口中断
SM0 =0;//工作方式为1 8位UART波特率可变
SM1 =1;
REN =1;//串口允许接收
TR1 =1;//定时器1产生波特率
TMOD |=0x20;//0010 0000 8位自动重装载定时器,当溢出时将TH1存放的值自动重装入TL1
//通过比特率的计算公式 9600 计算出TH1 TL1
TH1 =0XFD;
TL1 =0XFD;
}
void Delay1000ms() //@12.000MHz//延迟1秒
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 154;
k = 122;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
UARTInit();
while(1)
{
TI =1;
puts("51单片机优秀");//自动换行
while(!TI);
TI =0;
Delay1000ms();//延迟一秒
}
}
/*************************************
说明
使用printf()puts()前都应该置位TI = 1;
printf()puts() 使用putchar函数发送字节
void putchar(uchar sbyte )
{
while(!TI); //等待发送完
SBUF=sbyte;
}
所以第一次调用putchar前没TI=1永远等待
*************************************/
AT89C52串口通信发送汉字
最新推荐文章于 2024-01-21 12:07:25 发布