目标:串口通信的编程
(2)串口初始化步骤
①确定T1的工作方式(TMOD寄存器);
②确定串口工作方式(SCON寄存器);
③计算T1的初值(设定波特率),装载TH1、TL1;
④启动T1(TCON中的TR1位);
⑤如果使用中断,需开启串口中断控制位(IE寄存器)。
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
void UsartInit()
{
SCON = 0x50; //串口通信工作方式1
TMOD = 0x20; //计数器工作方式2
PCON = 0x80; //波特率加倍
TH1 = 0xf3; // 计数器的初值设置,波特率是4800b/s
TL1 = 0xf3;
ES = 1; //接受中断标志位之一,在scon里
EA = 1; // 打开总中断
TR1 = 1; //打开计数器
}
void main()
{
UsartInit();
while(1);
}
void Usart() interrupt 4
{
u8 receiveData; //随便申请个变量
receiveData = SBUF; //外部数据传入单片机的SBUF
RI = 0; //观察串口方式1的的工作方式发现接受完RI置1,这里的步骤是软件清0,位下一次传入数据做准备
SBUF = receiveData; //这个步骤是输出数据,把数据放进SBUF中
while(!TI); //当TI=1时跳出此循环,表示数据全部传入SBUF了
TI = 0; //软件清0,为下一次做准备
}
网友评论