51单片机串口
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。电路如下:

