51单片机串行通信UART

介绍: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;      //接收中断标志位
	}
	
}

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...