STC15单片机软串口的使用

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STC15单片机软串口的使用相关的知识,希望对你有一定的参考价值。

STC15软串口的使用


📖在没有使用定时器资源的情况下,根据波特率位传输时间,利用STC-ISP工具自动计算出位延时函数。

  • ✨在官方所提供的库函数中位传输时间函数,仅适用于使用波特率为:9600的串口数据传输:
void BitTime(void)

	u16 i;
	i = ((MAIN_Fosc / 100) * 104) / 130000L - 1;		//根据主时钟来计算位时间
	while(--i);

  • 🔰根据STC-ISP工具,自己计算位时间,可以灵活的调整波特率。

🌼波特率数据传输位时间计算

  • 🚩波特率为9600表示的是串口每秒钟可以传输9600bit,每传输1bit所需时间:
1 s / 9600bit= 1000000 (us) / 9600 ( bit) = 1000 / 9.6 = 104.1667us 
那么8bit就是 104.16678 = 833.3336 u s 104.1667*8 =833.3336us104.16678=833.3336us

串口通信时数据格式是一般为:起始位+8位数据+奇偶校验位+停止位 ,一般都没有奇偶校验位,所以是10位,也就是一个字节的时间为: 104.1667 ∗ 10 = 1041.667us

  • 🌿波特率为19200每传输1bit所需时间:
1 s / 19200bit= 1000000 (us) / 19200 (bit) = 1000 / 19.2 = 52.0833us
  • 🌿波特率115200每传输1bit所需时间:
1 s / 115200bit = 1000000 (us) / 115200 (bit) = 1000 / 115.2 = 8.6806us

⚡波特率位时间计算的越准确,数据传输乱码率越低。

📝软串口示例代码

  • 🛠波特率位时间函数
//========================================================================
// 函数: void	BitTime(void)
// 描述: 位时间函数。
// 参数: none.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 备注: 
//========================================================================
void	BitTime(void)

	/***使用11.0592MHz,波特率:9600 位延时时间:104us延时时间***/
//	u16 i;
//	i = ((MAIN_Fosc / 100) * 104) / 130000L - 1;		//根据主时钟来计算位时间
//	while(--i);

/***使用11.0592MHz,波特率:19200 位延时时间:52us延时时间***/	
//	unsigned char i;
//	_nop_();
//	i = 141;
//	while (--i);
	/***使用22.1184MHz,波特率:19200 位延时时间:52us延时时间***/
		unsigned char i, j;
	_nop_();
	_nop_();
	i = 2;
	j = 26;
	do
	
		while (--j);
	 while (--i);

  • 📑主程序代码
#include "config.h"
#include "soft_uart.h"
#include "delay.h"


void main()

	while(1)
	
		PrintString("perseverance51 \\n\\r");
		delay_ms(250);delay_ms(250);delay_ms(250);delay_ms(250);
	
	

  • 🍁工程架构

  • 📜串口打印信息:

📚程序源码

复制这段内容后打开百度网盘手机App,操作更方便哦
链接: https://pan.baidu.com/s/1kYShK7PnzE5UzkgnVIxsxg
提取码: itwv

以上是关于STC15单片机软串口的使用的主要内容,如果未能解决你的问题,请参考以下文章

STC单片机基于VSCode PlatformIO开发STC15W408AS软串口示例程序

STC不同系列单片机的软串口位时间函数差异

STC单片机STC15串口收发示例程序模板

STC单片机STC15单片机读取MPU6050模块数据并串口输出

STC15W408AS单片机简单串口通信示例

STC15W408AS单片机寄存器板串口收发示例