首先确定定时器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){;}
}
设置系统时钟-》设定分频-》设定引脚输出输入方式(推挽或漏极开路)-》设定定时器1工作模式在八位自动重载模式-》载入定时器初始值-》开启定时器1-》开启串口0中断使能-》开启总中断使能-》开启串口0接受允许-》设定串口0工作模式-》初始化完成。
将数据压入发送缓冲寄存器 用while 语句等待发送标志位被置位 然后清0,以为数据发送完成。
1.设置定时器1的工作方式
2.设置串口的工作方式
3.设置波特率
4.开总中断,开串口中断
5.启动定时器1
确定T1 工作方式初始值 启动T1 确定串口工作方式