51单片机:如何使用串口波特率计算器及其详解

目录

一、如何使用串口波特率计算器

1.以此为例:

2.生成代码如下:

3.需要手动配置中断系统

1.原理图

2.配置代码

二、如何理解软件生成的波特率

 1.以该代码为例子进行分析

2.串口模式图

三、如何计算波特率

参考STC89C52手册P235

四、如何调用串口中断函数


 

一、如何使用串口波特率计算器

1.以此为例:

a29e2c4595d24f0d8f96852560839b1c.png

2.生成代码如下:

void Uart1_Init(void)	//9600bps@11.0592MHz
{
	SCON = 0x50;		//8位数据,可变波特率
	AUXR |= 0x40;		//定时器时钟1T模式
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0xE0;			//设置定时初始值
	TH1 = 0xFE;			//设置定时初始值
	ET1 = 0;			//禁止定时器中断
	TR1 = 1;			//定时器1开始计时
}

3.需要手动配置中断系统

1.原理图

0428d792fa9e46e2bb0056395c668dfd.png

2.配置代码

	//手动配置中断系统
	ES=1;
	EA=1;
	PS=0;

 

二、如何理解软件生成的波特率

void UART_Init()			
{
	//由软件自动生成
    SCON=0x50;				//STC89C52操作手册P235方式1
	PCON &= 0x7F;			//波特率不倍速
	TMOD &= 0x0F;			//设置定时器1模式
	TMOD |= 0x20;			//设置定时器1模式
	TL1 = 0xFA;			//设置定时初始值
	TH1 = 0xFA;			//设置定时重载值
	ET1 = 0;			//禁止定时器中断
	TR1 = 1;			//定时器1开始计时
	
	
	//需要手动配置中断系统
	ES=1;
	EA=1;
	PS=0;
}

 1.详解

  由于配置是8位自动重载,TL1=TH1=0xFA ,0xFA=250;
    总计八位,那么数据范围0~255(256溢出)
    256-250=6
    那么每计6个数溢出一次

    晶体振荡器的输出经12 分频后得到输入的时钟脉冲
    一个机器周期内有12 个振荡周期。故其频率为晶振频率的1/12。
    此设备是11.0592M 的晶振,1.085μs为一个输入脉冲的时间
    则6.51μs溢出一次
    1/6.51,则0.1536098MHz就是定时器的溢出率
    再看PCON=0111 1111
    可知SMOD=0(参考串口模式图)
    那么波特率=0.1536098MHz   /2  /16
    波特率为0.00480030625MHz约等于4800Hz
    约等于没有误差

2.串口模式图

fd39e3a187034a0b91eae374ad21b3b7.png

三、如何计算波特率

参考STC89C52手册P235

6de59185735f4d8682c76b689713408f.png

四、如何调用串口中断函数

中断函数(函数可自由命名,但是要加上中断号"interrupt 4")

void UART_Routine(void) interrupt 4      
{
	if (TI==1)				//检测串口1发送中断
	{
		//功能......
		TI = 0;			//清除串口1发送中断请求位
	}
	if (RI==1)				//检测串口1接收中断
	{
		//功能......
		RI = 0;			//清除串口1接收中断请求位
	}
}

五、中断函数查询表

d51d748b834240cf8764f54cd78b3bc1.png

 

 

 

 

 

相关推荐

  1. 51单片机——串口通信编程

    2024-07-14 14:48:02       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 14:48:02       53 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 14:48:02       56 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 14:48:02       46 阅读
  4. Python语言-面向对象

    2024-07-14 14:48:02       57 阅读

热门阅读

  1. PM2——nodejs应用进程管理

    2024-07-14 14:48:02       17 阅读
  2. Vue 3中使用 Lottie 动画

    2024-07-14 14:48:02       23 阅读
  3. 玩转springboot之SpringApplicationRunListener

    2024-07-14 14:48:02       22 阅读
  4. ESP32部署TensorFlow Lite(TODO)

    2024-07-14 14:48:02       17 阅读
  5. 滑动窗口区间最大最小值模板

    2024-07-14 14:48:02       20 阅读
  6. php探针

    2024-07-14 14:48:02       21 阅读
  7. 基于深度学习的问答系统

    2024-07-14 14:48:02       19 阅读
  8. 【C语言】多进程服务器

    2024-07-14 14:48:02       25 阅读
  9. 日常学习--20240713

    2024-07-14 14:48:02       17 阅读
  10. qt 布局有多少种

    2024-07-14 14:48:02       17 阅读
  11. 并发漏洞介绍

    2024-07-14 14:48:02       17 阅读
  12. 展开说说:Android之View基础知识解析

    2024-07-14 14:48:02       15 阅读