51单片机串口收发设计的思考

时间:2023-03-05作者:佚名
最近项目里面要用到51单片机做一些控制,主要功能是通过串口接收上位机的指令并进行分析解码,等待一个外部触发信号到来后执行之前接收的指令动作。正好手边有一片STC89C52,赶紧搭了个最小系统。STC89C52单片机可以通过串口下载程序,可是试了好几次都没有下载成功,仔细检查发现原来是9针串口线忘了接GND(地线)。顺便总结下STC单片机下载不成功的主要原因:
  1、最小系统出问题(晶振对不对、复位电路对不对、引脚连线对不对);
  2、电平匹配问题(一般是要加MAX232电平转换芯片的);
  3、串口线(串口线质量也是很重要的)连得对不对(至少连3根线TXD、RXD、GND),包括发送接收的方向对不对;
  4、下载操作步骤对不对(单片机下电--->点下载--->单片机上电)。

51单片机串口收发设计的思考

51单片机串口收发设计的思考
  排除了下载失败的故障后,就可以写代码下程序了。先写个串口调试功能的代码,使用串口接收中断方式,在主程序中将接受的字节回送到上位机中。
  串口收发设计(阻塞式设计)
  1/****************************************************2--Filename:rs232.c3--Abstract:串口收发设计(阻塞式设计)4--Author:hi2world5--Date:2012-10-26*****************************************************/7#include89//定义新类型10typedefunsignedcharuchar;1112//接收一个字节完成标志位13bitrx_flag=0;1415//全局变量,用于存放接收到的字节16ucharrx_byte;1718intmain()19{20/*设置波特率*/21SCON=0x50;//串口工作在方式1,允许串行接收;22PCON=0x00;//SMOD设置为023TMOD=0x20;//定时器1工作在方式2:8位自动重装载24TH1=0xfd;//设置波特率960025TL1=0xfd;26TR1=1;//启动定时器2728/*开中断*/29ES=1;//允许串行接收中断30EA=1;//开总中断3132while(1)33{34if(rx_flag)//接收完成标志为1时,开始发送数据到上位机35{36rx_flag=0;//清除接收完成标志位37SBUF=rx_byte;//发送38while(TI==0);//等待发送结束,可以加入超时等待处理39}4041TI=0;//软件清除发送中断标志位42}43return0;44}454647/*串口中断服务子程序*/48voidserial_intserve()interrupt4using149{50if(RI)//判断是接收中断标志51{52rx_flag=1;//设置接收1字节完成标志53rx_byte=SBUF;//取数据54RI=0;//手动清除接收中断标志55}56}
  对上述代码进行测试发现:
  1、上位机每隔0.5s发送1个字节,代码可以很好的工作,没有丢失数据;
  2、上位机发送987个字节大小的文件,上位机接收到单片机回送数据986个,丢失1个;
  3、上位机发送12307个字节大小的文件,上位机接收到单片机回送数据12286个,丢失21个;
  4、上位机发送61541个字节大小的文件,上位机接收到单片机回送数据61453个,丢失88个。
  一般情况,为了使串口收发更稳健,会使用缓冲区机制,也就是设计接收FIFO,将接收到数据先存放到FIFO中,这样可以防止在大数据收发过程中的覆盖问题。FIFO一般设计成环形的,有一个读指针和一个写指针,对FIFO操作时会先检查这两个指针来确定FIFO的状态。为了区分FIFO的满状态和空状态,往往会牺牲掉FIFO一个存储单元,使得形成这样的条件:
  1、写之前,检查发现如果wr_ptr 1 = rd_ptr,则表示FIFO已满(实际FIFO还有1个空位,但被我们牺牲掉了);
  2、读之前,检查发现如果rd_ptr = wr_ptr,则表示FIFO为空(这时FIFO是真心空的)。
  串口收发设计(非阻塞式设计)

相关阅读

电气设备接地的目的是什么?

保护接地又常称为接地保。 一、接地的目的: 1、在电力系统中,运行需要的接地,如中性点接地等,称为工作接地。 2、电气设备的金属外壳,钢筋混凝土杆和金属杆塔等,由于绝缘...
2023-06-27

运算放大器电路原理、计算公式

同相运算放大器是什么? 同相运放电路原理 同相运算电路图讲解 同相运放计算公式 同相运算电路分析 一、同相运算放大器是什么? 同相运算放大器是一种运算放大器,其输出电压和输...
2023-05-08
运算放大器电路原理、计算公式

水电工程忽略排水管,那你的隐蔽工程只做对了一半

装修中,现场的厨卫下水都会根据设计,对排水系统进行改造。而对于老房子的装修,那是必不可少的一步了。 很多人可能不知道,家居生活中,下水管系统漏水占了整个漏水问题的一...
2023-06-11

变电所和配电所常用的主电路接线方式

  变配电所的电气接线包括一次电路接线和二次电路接线。一次电路又称主电路,是指电能流经的电路,主要设备有发电机、变压器、断路器、隔离开关、避雷器、熔断器和电压、电...
2023-06-27
变电所和配电所常用的主电路接线方式

供配电技术中的 20 个电气小知识

在供配电技术领域,存在着许多实用且有趣的小知识,它们对于保障电力系统的安全、稳定和高效运行起着重要作用。以下为您介绍 20 个相关的电气小知识: 1. 三相电源的相序是指电...
2024-08-22
供配电技术中的 20 个电气小知识

热销商品

拷边机 包缝机内六角上针匙 开刀 上针内6角螺丝刀扳手 1.5 1.6

拷边机(包缝机)专用内六角上针匙及开刀工具,适用于精确调整机针位置与维护设备。配备1.5mm与1.6mm两种规格的内六角螺丝刀扳手,专为紧固或拆卸上针螺丝设计,确保机针安...
1.65

暗装开关插座面板单开双控一开五孔二三极USB快充肤感超薄家用4开

暗装开关插座面板,简约设计,完美融入家居环境。单开双控,轻松实现远程控制,方便实用。一开五孔,满足多种电器插孔需求;二三极USB快充,快速充电,高效便捷。超薄设计,节省空...
1.2

领普E3S/E5配套插座面板86型暗装插座多孔五孔空调无边框家用

领普E3S/E5配套插座面板86型暗装插座多孔五孔空调无边框家用,是一款专为现代家庭设计的多功能插座。该款插座采用86型设计,易于安装和适配各种家用电器,无论是台灯、...
11.9

不锈钢加厚镊子维修工具夹子圆头弯头防滑带齿止血烧烤夹茶杯水草

不锈钢加厚镊子维修工具夹子圆头弯头防滑带齿止血烧烤夹茶杯水草 这款不锈钢加厚镊子维修工具夹子是设计用于各种专业场合的多功能工具。它拥有一个厚实的手柄,确...
0.8

三色变光led筒灯2.5寸3W5瓦开孔6 7.5 8公分家用客厅嵌入式天花灯

三色变光LED筒灯,2.5寸精巧设计,功率可选3W/5W,适用于开孔直径6.7–8公分的家用嵌入式安装。采用高亮LED光源,支持暖光、自然光、白光三色切换,满足不同场景氛围需求。...
7.2

网站栏目