新闻中心
联系我们
  • 宁波英岚数字营销有限公司
  • 免费服务热线:
  • 电话:
  • E-mail:
  • 地址:
当前位置:趋势 > 通讯 >
通讯

51单片机串口通讯编程的方式解析

时间:2019-10-09 14:05 作者:admin 点击:

  串口通讯对于所有的嵌入式工程师十分常见,对于一个与外界交互的系统必须依赖一些手段,比如串口、之类的数据通讯传输方式。而串口作为一种廉价的短距离可靠的通讯方式得到了广泛应用。

  本文主要从软件结构上讲解如何在资源比较缺乏的系统上实现通讯协议的串口通讯编程,以及如何优化程序效率,从而使系统更快、更稳定运行。

  我们以51单片机为例。51中一般针对串口通讯编程,通常采取中断接受查询发送的方式。中断函数在接受数据到达时被重复调用,其实是个重复入栈的过程,所以不宜将函数写的太长,函数太长一般会导致栈太深占用系统资源,二是处理时间过长,可能导致通讯出错。为了防止在处理数据过程中不受干扰,通常在处理接受数据前关闭中断,处理完后再开。

  其实很多时候,对于通讯传输的数据处理才是关键,尤其对于设计通讯协议而言。笔者在刚刚做的一个系统上就碰到这样的问题,当系统庞大了,资源十分有限的情况下,数据处理一旦占用资源太多,效率太低将导致系统崩溃而无法运行。

  到了这里,很多工程师可能会考虑开个大的缓冲区FIFO将接收到的数据保存在缓冲区,然后对其进行解析、判断进行下一步程序编写,当然这在系统资源比较丰富的情况下是没有问题的,ARM上采取的就是这样的方式。但如何系统庞大呢,留给的资源缺乏则不行。这样做的一个很大缺点必须是将数据帧接收完了才能够判断,降低了效率和运行速度。

  其实还有另外的方式,可以采取在每接收一个字节就对其解析,解析完判断转到下一个状态,并将其中的有用数据存储在相应的数据结构中去,可以采取状态机实现。

  将状态机设计为两个控制状态,一是串口状态——uart_state ,一是命令类型状态——cmd_state 。

  (3)接下来将自动进入接受命令帧的状态,再开启命令状态的状态机,对发送来的有用数据进行解析,保存,校验等。处理完毕后将uart_state设为CMD_END状态进行下一步的接受完毕判断,将cmd_state设置为初始的NO_CMD状态。

  接下来我们要讨论解析后我们数据存储的问题,其实在资源比较足够的情况下或者能够挤出data区的情况下可以考虑用结构体,我们构造好相应结构体,将接收到的数据存储进去,要应用的时候就十分方便。但这也有个矛盾,一般c51定义的结构体都被存储在data区,一般通讯的字节量大空间必然不够,存在一个矛盾,可以采用联合体union进行存储效果会好一点。当然也可以在保存数据时采用定义在xdata区(片外)的buffer来存储。这样在一定程序上优化了程序的执行效率,在程序处理立即抛出消息处理,提高了通讯数据的处理速度。对于通常资源比较丰富的系统,比如ARM上一般采取的做法是这样的,将数据存在缓冲区,接收完一帧数据后再转换成相应的数据结构,再进行分析、校验。

  总体来说,这种采取状态机实时解析串口通讯数据的方式在一定程序提高了程序运行效率,使软件架构清晰明了,程序可扩展性大,有利于后续开发。

  目前国内公认的最好的视频教程,通俗易懂,容易上手,非常适合初学者,被大量的培训机构采用。只要你认真看,认真听,保证让你学

  1.ROM:只读存储器,单片机的只读存储区大多用于存储程序固又称程序存储器。 51单片机是EP....

  利用串行A/D转换器TLC549对输入信号电压源进行采集转换成数字信号给51单片机,经单片机进行数据....

  一个系统的学习能让你提高不少,按照硬件开发的基本流程来,这样学习采系统,每一个阶段都需要做一个这样的....

  触摸屏与单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国M....

  51单片机总线单片机工作在总线个输出口,要求上电时,输出口必须保证为高电平,系统复位时(如按下...

  程序存储区也分为片内和片外,一般来说,现在的51很多已经做到了64K,所以很少有外扩 片外Fl....

  以单片机和可编程逻辑器件(FPGA)为控制核心,设计了一个程控滤波器,实现了小信号程控放大、程控调整滤波器截止...

  比如调小时的时候如何让小时那两位闪烁以确定没调错位置。。大体思路应该是取反,但是具体怎么写呢?下面是按键后调时...

  个人认为讲的算很详细的视频教程,单片机初学者有福了。 提取码:8qpx ...

  [C] 纯文本查看 复制代码 #include #define uchar unsigned char#define uint unsigned intsbit pwm=P2^0;uint pwm...

  用51单片机做的万年历,在DS1302没有连接纽扣电池的开发板上显示正常,但到了连接纽扣电池的另一个开...

  工业控制中经常需要观察系统的运行状态或者修改运行参数。触摸屏能够直观、生动地显示运行参数和运行状态,....

  嵌入式产品的生产商总是期待能使自己的产品成本更低、更快地走向市场的微处理器解决方案。高性价比、高集成度、高...

  51单片机是对所有兼容Intel 8031指令系统的单片机的统称,而11.0592MHZ晶振是一款无源直插晶振,它的频率范围是3....

  上图为电路图,单片机的P1.4脚连接到继电器,本意是想通过控制P1.4脚的高低电平来控制继电器的闭合和断开。但是现...

  RS232串行接口属于个人计算机(PC)及电信应用领域中最为成功的串行数据标准。它被定义为一种在低速....

  芯片采用的是IAP15W4K51S4,基准电压2.5V,晶振频率11.0592MHz(内部)! (1.15 KB )...

  我们先普及一个概念,单片机(即Microcontroller Unit;MCU) 里面有什么。一个人....

  这里介绍一种以GNS97C2051单片机为核心,采用TLC2543 12位串行A/D转换器构成的采样....

  微控制器的IO口均不能流过过大的电流,LED点亮时有约10ms的电流,因此LED点阵引脚不要直接接单....

  一是整流桥输出的电压输入到电压比较器当中,这里牵扯到电压比较器的零点漂移概念,即输入为零的时候,输出....

  若同时按下两个以上的按钮,则对应的发光二极管发亮。例如按下SB1和SB3,则对应的输出端口P1.4和....

  SEG数码管4个共阴极(小编用的共阳极的)、10k排阻(小编没有直接做了个)、51单片机、按钮、30....

  实验结果:当杜邦线另一端接电源时,led灭;当接地时,led就亮 结论:无论配置与否,51单片....

  1、 PIC单片机采用精简指令集,中档产品仅需35条指令,入门门槛低,而在使用过程中绝不会感到不方便....

  A)算术和逻辑运算,可对半字节(一个字节是8位,半个字节就是4位)和单字节数据进行操作。 B)....

  51单片机是对所有兼容Intel8031指令系统的单片机的统称。该系列单片机的始祖是Intel的80....

  51单片机IO口的结构比较简单,每个IO口只有一个IO口寄存器Px,而且这个寄存器可以位寻址,操作起....

  在讲指令系统前我们先来复习一下数制的概念。 1.十进制(Decimal) 基数是10,它有10个....

  一。 教学目的: 1. 了解单片机开发过程 2. 学会制作和开发单片机系统 二。 教学重点:单....

  串联锂离子电池组监测系统包括采用51 系列单片机的核心控制模块、锂离子电池组状态采集模块、信号调理模....

  在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分。通常使用单片机串口通过R....

  前几天用STC89C52单片机制作了一个电子时钟,经过一段时间的实验,发现时间精度存在误差,一分钟慢....

  用51做处理器,外围电路如图,一片双积分转换芯片ICL7135做AD,它的时钟需要125K,用51的....

  51单片机没有PWM输出功能,可以采用定时器配合软件的方法实现,对精度要求不高的场合是非常实用的。采....

  MSC-51单片机指以8051为核心的单片机,由美国的Intel公司在1980年推出,80C51是M....

  集成度高,抗干扰能力强,可靠性高。开发性能好,开发周期短,控制能力强。

  在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分。通常使用单片机串口通过R....

  电力作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯....

  51系列的另一个优点是乘法和除法指令,这给编程也带来了便利。八位除以八位的除法指令,商为八位,精度嫌....

  轮式移动机器人是机器人研究领域的一项重要内容。它集机械、电子、检测技术与智能控制于一体。在各种移动机....

  RS485接口组成的半双工网络,一般是两线制,多采用屏蔽双绞线传输,这种接线方式为总线式拓扑结构在同....

  ①、软件定时:如常用的延时程序 Delay(),在定时过程中,CPU 循环测试延时变量是否满足条件,....

  我用的是天祥单片机实验板,由于没有RS485接口,我利用ADM485芯片自制了一个485接口与三菱P....

  msp430系列单片机是一种新型的16位单片机,主要特点就是功耗小,速度快,主要开发语言是c。开发环....

  此程序模拟普通的电子表的功能,实现了时,分,秒的显示,并有调表功能。程序简单,好多地方并没有注意细节....

  本系统通过一个监控室和两个宿舍来模拟,通过RS 485总线来实现通信。考虑到现实中监控室要能监控整栋....

  1、1602液晶读写时序 (1)、读状态 RS=L,R/W=H,E=H。(判断忙完毕后释....

  运算器:用于实现算术和逻辑运算。计算机的运算和处理都在这里进行; 控制器:是计算机的控制指挥部....

  红外发射模块:电源3.3V或5V,通过发射管发射38KHz的红外信号,高电平驱动 红外接收模块....

  这种方法是:把各个中断源通过硬件“或非”门引入到单片机外部中断源输入端(INT0或INT1),同时再....

  矩阵键盘电路所示,4*4矩阵键盘有4行4列按键,单片机4个I/O口接矩阵键盘的行线个I/O口....

  所谓的“呼吸灯”,就是通过程序控制led灯的闪烁过程,像呼吸一样有节奏。有亮度渐变的过程。

  红外发射模块:电源3.3V或5V,通过发射管发射38KHz的红外信号,高电平驱动 红外接收模块....

  这里用到的液晶为LCD1602,能够同时显示16x02即32个字符(16列2行)。1602液晶模块内....

  1、红灯和绿灯相互转换时经过黄灯,黄灯闪烁三次;2、主干道方向通行30秒,辅干道方向通行20秒,单独....

  使用51单片机设计秒表的Protues仿线秒,整数四位数和小数两位数显示;2、计时精度10毫秒;3、复位按钮....

  1、汽车车尾左右两侧各有四盏灯:黄灯、红灯、雾灯、倒车照明灯,前面有照明灯(远光、近光)、黄灯、雾灯....

  winbond公司的通用51芯片比atmel 的多了一点功能,有内部看门狗计数器,如果是44脚方形芯....

  控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的....

  #include“reg52.h” #include //包含NOP空指令函数_nop_();....

  #include “intrins.h” #define uchar unsigned char #....

  这是一款51单片机CO2检测显示程序资料,二氧化碳传感器MH-Z19模块的T(TXD)接单片机的RX....

  #include #define uchar unsigned char #define....

  硬件分析:按键的一端接单片机,另一端接地,按键按下后单片机侧为低电平,所以当单片机检测到相应的端口为....

  Small RTOS51是一个很小的内核,完全集成在KEIL C51编译器中,仅占用较少的程序存储空....

  当CPU对片内存储器和I/0口进行读写时,即执行MOV指令,或在EA=1的条件下执行MOVE指令,由....

  当按下SB1键时,电机进入预启动状态,经30s短延时后进入正式启动,且不管电路工作在何种状态,只要按....

  从P1口的结构上可以看出,P1口输出驱动部分与P0口不同,内部有上拉负载与电源相连。实质上电阻是两个....

上一篇:友情提示 手机只是一个通讯工具请理性消费切勿

下一篇:股票通讯密码和交易密码是什么意思?