第2个回答 2019-06-03
首先确定定时器1为自动重装模式,并根据想要得到的波特率设置TH1和TL1的初值。
再确定串口的工作方式。一般发送使用查询,接收使用中断功能发送。当然如果开启了串口的中断功能,还得开启总中断功能。下面是一个11.0592MHz晶振下的例子:
#include
"reg51.h"
void
initUart(void)
{
TMOD|=0x20;//
初始化定时器1为8位自动重装模式
SCON=0x50;//
配置串口工作模式,使能了串口接收中断
TH1=0xfd;//
配置波特率
TL1=0xfd;
TR1=1;//
启动定时器1
ES=1;//
打开串口中断允许
}
void
uart(void)
interrupt
4
{
if(RI)//可以在这里添加接收中断的语句
{
RI=0;
}
else
TI=0;
}
void
main(void)
{
initUart();
EA=1;
while(1){;}
}