微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51手记之标准51(四)

51手记之标准51(四)

时间:11-10 来源:互联网 点击:
51手记标准51---串行口

1.串行通信基本方式:异步通信和同步通信

1).异步通信方式——以“字符”为单位进行传送

用一帧表示一个字符,一个字符包括4个部分

起始位1位有效

数据位5--8位

奇偶校验位1位

停止位1位、1位半、2位“1”有效

在异步通信时,通信双方必须事先约定

①字符格式。双方要事先约定数据位的位数、奇偶校验形式及起始位和停止位的位数;

例如:用ASCⅡ码通信,有效数据为7位,加一个奇偶校验位、一个起始位和一个停止位共10位。当然停止位也可以大于1位。

②波特率(Baud rate)。波特率就是传送速率,即每秒传送的二进制位数。单位为bit/s或波特。

2).同步通信方式

异步通信由于要在每个数据前后附加起始位、停止位,每发送一个字符约有20%的附加数据,占用了传输时间,降低了传送效率

同步通信则去掉每个数据的起始位和停止位,把要发送的数据按顺序连接成一个数据块,在数据块的开头附加1~2个同步字符,

在数据块的末尾加差错校验字符。同步通信的数据格式如图7-2所示。在数据块内部,数据与数据之间没有间隙。

要求:发送和接收双方要保持完全同步,所以,要求发送和接收设备必须使用同一时钟。

解决办法:

对于近距离通信:采用在传输线中增加一根时钟信号线来解决。

对于远距离通信:通过解调器从数据流中提取同步信号,用锁相技术实现收、发频率完全相同的时钟信号。

如上所述,异步通信技术较为简单,应用范围广;同步通信传输速率高,适用于高速率、大容量的数据通信,但硬件复杂。

2.串行通信数据传输方式

单工方式:数据传送是单向的,一端为发送另一端为接收,只需一条数据线。

半双工方式:数据传送是双向的,A→B,B→A,同一时间只能做一个方向传送,只需一条数据线。

全双工方式:数据传送是双向的,A、B两端可同时发送,又可同时接收,需两根数据线。

MCS-51系列单片机有一个全双工的串行口

1.串行口结构

组成:发送数据缓冲器:只能写入,不能读出

接收数据缓冲器:只能读出,不能写入

发送控制器

输出控制门

接收控制器

输入移位寄存器

两个专用寄存器SCON:存放串行口的控制和状态信息

PCON:改变串行通信波特率

发送缓冲器和接收缓冲器两个用同一符号SBUF,地址99H,用指令判断选哪个

MOV SBUF,A写入;MOV A,SBUF读出

2.工作方式

串行口有4种工作方式,由SCON中的SM0:SM1来定义。方式0时,SM2位(多机通讯控制位)必须为0。

1)方式0

发送数据缓冲器:只能写入,不能读出

同步移位寄存器输入输出方式,常用于外接移位寄存器,以扩展并行I/O口。

RXD引脚——串行输入/输出

TXD引脚——输出同步移位脉冲

8位数据为一帧,不设起始位和停止位,先发送或接收最低位。

波特率固定为fosc/12。

①发送

当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口即把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先, TXD引脚输出同步移位脉冲,发送完8位数据置“1”中断标志位TI。

②接收

方式0接收时,REN为串行口接收允许接收控制位,REN=0,禁止接收。REN=1,允许接收。当CPU向串行口的SCON寄存器写入控制字(置为方式0,并置“1”REN位,同时RI=0)时,产生一个正脉冲,串行口即开始接收数据。

引脚RXD为数据输入端,TXD为移位脉冲信号输出端,接收器也以fosc/12的固定波特率采样RXD引脚的数据信息,当接收到8位数据时置“1”中断标志RI。表示一帧数据接收完毕,可进行下一帧数据的接收。

2)方式1

8位异步收发通信。用于数据的串行发送和接收。TXD脚和RXD脚分别用于发送和接收数据。

方式1收发一帧的数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。

①发送

方式1输出时,数据位由TXD端输出,

当CPU执行一条数据写发送缓冲器SBUF的指令,就启动发送。图中TX时钟的频率就是发送的波特率。发送开始时,内部发送控制信号变SEND*变为有效,将起始位向TXD输出。

此后,每经过一个TX时钟周期,便产生一个移位脉冲,并由TXD输出一个数据位。8位数据位全部发送完毕后,置“1”中断标志位TI,然后SEND*信号失效。

②接收

前提REN=1;数据从RXD(P3.0)引脚输入。当检测到起始位的负跳变时,则开始接收。

定时控制信号有两种(如图所示),一种是接收移位时钟(RX时钟),它的频率和传送的波特率相同。另一种是位检测器采样脉冲,它的频率是RX时钟的16倍。也就是在1位数据期间,有16个采样脉冲,以波特率的16倍的速率采样RXD引脚状态,当采样到R

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

网站地图

Top