串口代码整合2-如何接收数据?

串口接收、发送数据整合 上周分别学习并编写了串口发送模块和接收模块代码,本次目标是将两个模块整合成一个模块,实现串口数据从接收到发送的完整过程。 阅读详情

  本文为博主 日月同辉,与我共生,csdn原创首发。希望看完后能对你有所帮助,不足之处请指正!一起交流学习,共同进步!

> 发布人:@日月同辉,与我共生_单片机-优快云博客

> 欢迎你为独创博主日月同辉,与我共生点赞❤❤❤+关注👍+收藏🌹+评论☺。

系列专栏: 优快云-单片机串口通信学习系列🎁

> 我的格言是:“尽最大努力,做最好的自己!💪

要转载,请提前告知!!!

版权声明:本文为优快云博主「日月同辉,与我共生」的原创文章,优快云独一份。

●目录

一、初始化函数

二、接收一帧数据

三、接收一串数据

★相关文章大全:

串口通信(4)一帧数据的接收-优快云博客

串口通信(5)-一串固定长度数据的接收-优快云博客

一、初始化函数

通常,波特率设置为9600b/s。串口工作方式为工作1(8为异步通信),定时器选择定时器T1的工作方式2(8位自动重载)。

寄存器SCON:

M0 M1 M2 REN TB8 RB8 TI RI

寄存器SCON共8位(8位二进制)。

SM0、SM1决定串行口工作方式。具体情况如上图所示。

SM2:多机通信。=1,开启多机通信;=0,不使用多机通信。

REN:允许接收控制位。=1时,允许接收数据;=0时,不允许接收数据。

TB8:发送数据的第9位

RB8:接收数据的第9位。

TI:发送中断标志位。=0时,准备发送;=1时,发送完成。

RI:接收中断标志位。=0时,准备接收;=1,接收完成。

初值计算:571faebae8a048a7a6d173bbaf9dc0e9.png​

void UartInit(void)		//9600bps@11.0592MHz
{
	PCON &= 0x7F;		//波特率不倍速
	SCON = 0x50;		//8位数据,可变波特率
	TMOD &= 0x0F;		//设置定时器模式
	TMOD |= 0x20;		//设置定时器模式
	TL1 = 0xFD;			//设置定时初始值
	TH1 = 0xFD;			//设置定时重载值
	ET1 = 0;			//禁止定时器中断
	ES=1;
	EA=1;
	TR1 = 1;			//定时器1开始计时
}

二、接收一帧数据

RI=0,表示准备接收,当接收数据完成后(接收到的数据在接收缓冲区-接收SBUF),RI自动置1,RI=1的条件下触发接收中断,接收中断中要将RI=0,同时从SBUF中读取数据,让接收完成标志位置1,作为后续处理数据的依据。

void ES_timer() interrupt 4
{
	if(RI) //接收中断
	{
		RI=0;//RI清0
		recv_date=SBUF;//读取接收到数据
		recv_flag=1;//接收完成标志位
	}
}

三、接收一串数据

固定长度的数据接收。串口通信数据是一帧一帧接收的,不是一次性接收。

void ES_timer() interrupt 4 
{
	static unsigned char datecnt=0;
	if(RI) //接收中断
	{
		RI=0;//RI清0
		recv_date[datecnt++]=SBUF;//将接收到的数据赋给变量---SBUF--接收串行数据寄存器
		if(recv_date==8)//固定8个字符
		{
			recv_flag=1;//中间变量置1
			datecnt=0;
		}
	}
}

亲爱的读者敬请期待,下文更精彩!!!

一日不读书,胸臆无佳想。我叫不白吃,喜欢我的,可以支持我,博主名叫@日月同辉,与我共生

@日月同辉,与我共生-不白吃优快云博客@日月同辉,与我共生擅长单片机基础,单片机串口通信,等方面的知识,@日月同辉,与我共生关注stm32,c语言,51单片机,proteus,单片机领域.https://blog.youkuaiyun.com/LIN___IT?spm=1011.2266.3001.5343

制作一个串口助手 | python + pyqt5 python+pyqt5制作一个串口助手 阅读详情

相关推荐

C#WinFormRS232串口工具

整理最近学习的C#串口通信工具,大多数代码都是看优快云上面的大佬写的,但是学习计划要求用DataGridView来接收数据,并且以CSV文件形式存储,所以根据大佬们的代码进行总结整合了一下,贴出来的是我自己添加的代码,其余代码可以去看一下大佬的,非常nice,有什么问题也可以一起讨论的哈 /// <summary> /// 接收数据函数 /// </summary> /// <param name="send

qq_45593282的博客 4015

Java 串口通信—收发,监听数据(代码实现)

Java 实现串口通信—收发,监听数据

白白白鲤鱼的博客 4267

第三节: 串口通信(用CubeMX学习STM32)

用CubeMX学习STM32, 串口通信学习, 通过轮询方式和中断方式两种方式进行通信演示。 STM32F407zgt6

Kevin_8_Lee的博客 8904

C++实现串口通信中数据指令的发送与接收(附C++代码及详细图文教程)

串口通信(Serial Communication),就是一种数据一位一位(逐位)顺序发送和接收的通信方式,是计算机和外部设备(如传感器、单片机、控制器)之间常见的通信方式之一。

qq_40280673的博客 2430

c#读取串口

<br />通常,在C#中实现串口通信,我们有四种方法:<br />第一:通过MSCOMM控件这是最简单的,最方便的方法。可功能上很难做到控制自如,同时这个控件并不是系统本身所带,所以还得注册。可以访问 <br />http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=320<br />一个外国人写的教程 <br />第二:微软在.NET新推出了一个串口控件,基于.NET的P/Invoke调用方法实现,详细的可以访问微软网站 <

SHARK_DO的专栏 1558

JY61P陀螺仪使用串口接收数据

2024年电赛已经过去,相信有许多人选择了H题,选择了MPU6050走直线,灰度传感器巡线的方案,但是在移植mpu6050时卡住了,现在市面上有许多陀螺仪模块可以通过串口传输数据,像维特智能推出的JY61系列,JY91系列等都可以通过串口传输,模块自带姿态解算,通过数据包串口直接将角速度,加速度,角度的数据打包传输,只需要进行数据包解包即可。现在还有惯导,支持CAN通信,RS485通信,可以更快更准确的传输想要的姿态角。这次主要谈谈自己在用JY61P是怎么使用的。

2301_81007729的博客 5065

Unity 串口通讯(软硬件结合开发)

最近和别人一起研究了一下串口通讯,通过硬件控制Unity开发的程序,感觉还他那个好用的,就是有好多常理无法解释的骑怕问题。不啰嗦。直接上代码,都有注释,相信大家都能看的懂。下面的带吗中接收的数据必须是“[***********]”这种形式。通过“[]”能更好的判断数据的准确性,防止发生数据丢失的情况。注:如果使用USB串口通讯的话,使用同一条数据线完成接收和发送消息会出现丢失数据的情况,具体怎么解...

4224

串口通信调试工具套装:V2.1版本与Modbus协议优化

串口通信指的是通过串行数据线顺序传输数据的通信方式。数据按位排列成串,通过一根数据线按位依次发送,每发送一位数据称为一次传输。串口通信的原理包括了信号的编码、时序控制、错误检测与纠正等。串口调试助手V2.1是一款先进的串口通信调试工具,它被设计为辅助工程师在开发和测试阶段进行设备通信调试。其功能全面覆盖了数据发送、接收、分析等多个方面,具有用户友好的界面和多种高级配置选项。实时数据监控:串口调试助手V2.1提供实时数据显示,使工程师能够观察和分析从设备接收的数据流。自动错误检测。

weixin_28681379的博客 1076

VHDL实现UART串口通信

这是我参照正点原子给的FPGA开发指南写的代码,所有的原理图也来源于指南。资料(指南+XCOM+CH340驱动)自取:使用夸克网盘打开提取码:XRaz。

weixin_73964331的博客 1842

深入解析安卓性能分析工具systrace/atrace的使用技巧与实战场景

本文深入解析了安卓性能分析工具systrace/atrace的核心使用技巧与实战场景。文章澄清了环境搭建的常见误区,详细拆解了命令参数,并通过列表卡顿、启动优化等具体案例,手把手指导开发者利用这些工具精准定位性能瓶颈,提升应用流畅度。

yyy34的博客 239

LabVIEW与MySQL的连接:软件下载与安装至UDL文件创建全过程

依据个人经验编辑的十分完备的使用教程

tiaowudexiaoyu的博客 5573

FPGA串口接收与发送详解( part 2 )

FPGA串口接收与发送详解( part 2 ) 一、单个数据接收程序 二、单个数据顶层代码

居安士的博客 4274

FISCO BCOS(八)——— 一键部署 WeBase

环境 版本 Java Oracle JDK 8 至 14 MySQL MySQL-5.6及以上 Python Python3.6及以上 PyMySQL 1、获取部署安装包: wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-deploy.zip 2、解压安装包: unzip webase-deploy.zip 3、进入目录: c...

林中有神君 3607

FPGA串口通信下——串口接收+发送

FPGA实现串口发送和接收

m0_51497090的博客 2520

2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

王老师青少年编程 990

HandwrittenMathFormulaRecognition:基于YOLOv8的手写数学公式识别系统

输入:包含手写数学公式的图像(拍摄的板书、作业纸等)输出:对应的数字文本形式的数学公式(如LaTeX格式或文本表达式)标准的手写数学表达式数据集,包含在线轨迹及图片,广泛用于公式识别研究。包含近10万对公式图片及对应的LaTeX标注,适合训练公式识别模型。MathBrush公开手写数学公式图像数据集,含多种书写风格。手写数字与符号数据集(MNIST及其扩展)用于基础数学符号的训练。

YOLO 283

qt linux 串口 权限,Linux下QT5以上版本串口的最简单实现(测试可用)

Linux下QT5以上版本串口的最简单实现(测试可用)1. 简介简简单单一个串口,在Linux环境下踩了无数的雷。这里用最简单的方式实现串口通讯。把串口的TX和RX短接,就可以收到我们发的数据了。2. 查看串口名称打开终端,输入命令行,看看现在设备上有的串口。看看你想用哪一个。//查看串口名称ls -l /dev/ttyS*//终端输出crw-rw---- 1 root dialout 4, 67...

weixin_39897687的博客 860

智能硬件产品 App 全球发布 第 1 章:全球 App 发布战略设计

本章阐述智能硬件 App 全球发布战略,涵盖市场分析、竞争格局、用户画像及资源配置。通过制定可执行的全球化推广路径,整合地区法规合规、渠道分发策略与营销活动设计,助力团队快速进入主流商店并确立品牌影响力。同时构建可量化的 KPI 监控体系,指导项目进度追踪与效果复盘,确保产品迭代持续优化,降低运营总成本。

moton2017的博客 156

C#串口通讯 接收数据问题

利用SerialPort类与串口通讯出现两种情况:<br />1.接收到的数据仍旧是上次发送的数据。例如:第一次发送:FE2010-11-13 16:02:23EF 接收为:FE2010-11-13 16:02:23EF(第一次正确)。当下次发送为:FE2010-11-13 16:02:24EF 接收仍旧为FE2010-11-13 16:02:23EF。此处是利用Timer每秒发送一次数据。接收时用DataReceived事件。<br />2.DataReceived事件如果接收字节超过8个,则响应8的倍数

flyly88的专栏 2172

Open3D——RANSAC 三维点云空间直线拟合【2025最新版】

使用RANSAC算法在点云数据中拟合三维空间直线的python代码实现。博客长期更新,本文最新更新时间为:2025年3月23日。

点云侠的博客 7354

OpenClaw 运行时错误文档:Embedded Run Agent End with Stream Error(嵌入式运行代理结束流式错误)

OpenClaw运行时错误文档:EmbeddedRunAgentEndwithStreamError(OC-ERR-009) 该错误表示LLM提供商在流式传输过程中发生服务器端异常(HTTP 500),属于可恢复的中等严重性错误。典型表现为日志中出现包含"stream_error"和500状态码的错误信息。系统会自动进行错误分类(50%为服务过载,25%网络问题等),并通过内置机制尝试解决:包括模型切换、API密钥轮换和自动重试策略。用户可采取重试请求、切换模型或简化请求内容等操作,管理

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 550

qt 设置串口起始位_Linux下QT5以上版本串口的最简单实现(测试可用)

Linux下QT5以上版本串口的最简单实现(测试可用)1. 简介简简单单一个串口,在Linux环境下踩了无数的雷。这里用最简单的方式实现串口通讯。把串口的TX和RX短接,就可以收到我们发的数据了。2. 查看串口名称打开终端,输入命令行,看看现在设备上有的串口。看看你想用哪一个。//查看串口名称ls -l /dev/ttyS*//终端输出crw-rw---- 1 root dialout 4, 67...

weixin_39559333的博客 308

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

串口通信(4)一帧数据的接收

串口通信第三篇==>如何接收一帧数据,并让对应的LED亮

LIN___IT的博客 827

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

基于 C# WPF 的串口调试助手,允许用户通过串口与外部设备进行通信

基于C#WPF的串口调试助手,允许用户通过串口与外部设备进行通信(包含详细的完整的程序和数据)资源-优快云文库 https://download.youkuaiyun.com/download/xiaoxingkongyuxi/89879741。未来可以根据用户反馈与需求,持续优化与增强,增加更多的功能,例如数据解析与图形化展示,以提高实用性和可视化水平。用户可以发送和接收数据,监控串口信息,并对数据进行日志记录,具有良好的用户体验和扩展性。:允许用户记录一系列发送的命令,并支持之后的重放。

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1121

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Unity开发记录_9_Unity与串口通信:脉冲频率采集传感器、串口继电器、IMU动态姿态仪等设备示例

通过本文的介绍,我展示了如何使用Unity与不同类型的传感器进行串口通信。无论是Modbus协议的脉冲频率采集传感器,还是串口继电器和IMU动态姿态仪,它们都可以通过串口与Unity进行对接,并在游戏或工业应用中发挥重要作用。

qq_42692089的博客 1267
上一篇: 串口通信代码整合1
下一篇: 串口通信(3)-接收一组固定长度的数据
@日月同辉,与我共生
博客等级 码龄4年 3247粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值