概述
介绍:STC89C51RC/RD+系列单片机内部集成了一个全双工的串行口通信,有俩个互相独立的接收、发送缓存器,可以同时接受和发送数据。发送缓存器只能发送而不能接收,接收缓存器只能接收而不能发送,因为俩个缓存器共用一个地址(99H),所以俩个缓存器统称为串行口特殊功能寄存器SBUF。
一、寄存器介绍:该系列设有俩个控制寄存器:串行控制寄存器SCON和波特率选择特殊功能寄存器PCON。
1、串行控制寄存器SCON使用介绍:
2、波特率选择特殊功能寄存器PCON(电源控制寄存器)使用介绍:
3、串口行数据缓冲寄存器SBUF介绍说明:数据的存放地址
4、与串口中断相关的寄存器IE、IPH、IP:
五、波特率介绍和计算方式:
介绍:串口通信的速率(发送和接收各数据位的时间间隔)
计算方式:
Bd=1 /(定时器溢出率)÷ 16
如:某定时器溢出率为 13us,那么Bd=(1/13us) ÷ 16=0.00480749MHz=4807.69Mz
二、串口中断结构和中断优先级:
中断结构
中断优先级
三、寄存器配置:
代码:
void UART_Init()
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0xF3; //设置定时初始值
TH1 = 0xF3; //设置定时重载值
ET1 = 0; //禁止定时器%d中断
TR1 = 1; //定时器1开始计时
//中断
EA=1; //启动所有中断
ES=1; //启动串口中断
}
四、通过SBUF接收和发送数据:
代码:
接收:SBUF数据可从电脑获取(数据可由软件定义)
void UART_SendByte(unsigned char Byte) //写入一个数据
{
SBUF=Byte;
while(TI==0); // TI:发送中断标志位
TI=0;
}
发送:电脑发送的数据可被SBUF获取
void UART_Routine() interrupt 4 //发送数据是通过中断发送的
{
if(RI==1) //防止发的时候也进入中断
//原因:接收完成和发送完成都会进入中断
{
P2=SBUF; // 使P2获取发送的数据
UART_SendByte(SBUF);
RI=0; //接收中断标志位
}
}
最后
以上就是舒服冬瓜为你收集整理的51单片机串行通信(UART)的全部内容,希望文章能够帮你解决51单片机串行通信(UART)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复