文本

51单片机接收字符串的程序,单片机如何接收字符的

时间 : 2023-5-27

前面推荐过两个STC8A系列的单片机的函数库,引起了大家的讨论,有些朋友觉得8位机没有必要搞库函数开发,毕竟资源有限,寄存器也就那么几个,通过寄存器设置就可以了。我觉得大家是考虑的太多了,这边官方包括一些个人和团队提供的库函数,和STM32官网提供的库函数还是有很大的区别的,我们应该抱着学习的态度来看这些库函数,根据具体的需要添加进工程,方便开发。

比如,拿前面推荐过的一个库函数中的uart串口的封装库为例,库中提供了串口初始化函数,串口发送一个字符,发送一个字符串,发送一个整型数据,发送一个浮点型数据的相关函数。有了这些函数,我们使用起来就非常方便,同时也可以参考下,发送整型数据和浮点型数据是如何处理的。很多同学用串口发送一个字符没有问题,但是当发送整型数据和浮点型数据时就不会处理了,通过学习别人的库就可以很好的实现自己的功能。

1、串口通信时如何让单片机接收以特定字符开头的字符串,比如“a1011…

你的这个比喻是数据包的原型吧,你的“a,10,11,12,13,ff”就是包头,假设后面紧跟着数据包的“有效内容”,再后来是“数据尾信息”。从程序编写的角度出发,可以这样:设立应答机制,就是发送端和接收端都需要“确认位”,先连续接受“数据头”信息,向接收端发送“等待发送”命令,然后判断“数据头”内容是否为真,为真向发送端发送“继续发送”命令,为假向发送端发送“重发”命令。

2、串口通信时如何让单片机接收以特定字符开头的字符串,比如“aa0311…

可以数据帧头数据内容数据帧尾。串口中断服务做个状态机可以解决。#defineHEAD0xaa#defineLENGTH5staticuint8status0;if(RI)switch(status){case0:if(SBUF!HEAD){RI0;return;}else{Length0;status ;}break;case1:*RecBuf SBUF;//接收定长字符串。

3、51单片机串口接收字符串?

这个字符得自己规定,或者双方协定,反正要统一一个字符作为终止符。这个可以有。看来,楼主考虑的,很周到了。串行通信的双方,应该遵循同一个协议。硬件,是一个方面。软件(数据格式),常用的,是Modbus协议。按照楼主所说,单片机的对方,不遵守协议。那么,解决方法,是找对方商谈。在单片机这边,是无法解决的。mapUrl:,contentRich:

看来,楼主考虑的,很周到了。

硬件,是一个方面。

软件(数据格式),常用的,是

相关新闻