微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机串口

51单片机串口

时间:10-02 整理:3721RD 点击:
51单片机串口工作在方式1,如果接收到第一帧数据后进入中断,在中断函数中提取接收缓冲器SBUF的内容,然后在执行一些其他功能,在执行中断函数的过程中第二帧数据又来了怎么办,还是有其他什么机制?

51好久不用了,一般串口模块应该有缓冲区的把

以下内容来源于《51单片机轻松入门—基于STC15W4K系列》第4章
3、串口1数据缓冲区寄存器SBUF,复位值是xxxx xxxxB,即不确定的数据。
   数据缓冲区分为发送缓冲区与接收缓冲区,发送缓冲区用于存放即将发送输出的数据,接收缓冲区存放串口自动接收到的外部数据,它们在硬件上是相互独立的,如图4-2所示。由于发送缓冲区只能写入而不能读出,接收缓冲区只能读出而不能写入,因而两个缓冲区可以共用一个地址,串口1缓冲区SBUF的地址为99H,注意:发送缓冲区只能写入不能读出,意思是只要把数据送进了SBUF(写入)就永远不可能再用读SBUF的方法得到这个数,虽然可以读SBUF,但读出来的是接收SBUF中的数,而不是发送SBUF中的数。
正是由于接收通道内有输入移位寄存器和数据缓冲区同时存在,从而使一帧数据由移位寄存器接收完毕装入数据缓冲区后,此时RI被置1产生中断请求同时移位寄存器可以开始接收下一帧数据,CPU应该在后来的一帧数据由移位寄存器接收完毕之前将SBUF中的数据取走,否则后来的一帧数据将会覆盖前一帧数据。假设数据传送的波特率为115200bps,采用N.8.1 帧格式(10 位),则每秒传送字节为115200/10=11520 个/秒=1个/(1/11520)秒=1个/86.8微秒,就是说移位寄存器接收1个字节需要的时间是86.8微秒,这就要求CPU接收到串口中断申请(RI=1)后的86.8微秒内取走SBUF中的数据,否则前一帧数据将被覆盖。


谢谢,明白了,还有就是51单片机多机通讯的连线怎么接?

以下内容来源于《51单片机轻松入门—基于STC15W4K系列》
高速短距离(几米内)多机通信使用SPI接口,速度可达8MHz,电路如下:


低速远距离(1KM以上)可以用232转485接口,速度几十KHz。电路如下:



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top