您的位置 首页 分销

51手记之规范51(四)

51手记之标准51—串行口1.串行通信基本方式:异步通信和同步通信1).异步通信方式——以字符为单位进行传送用一帧表示一个字符,一个字符包…

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引脚状况,当采样到RXD端从1到0的跳变时就发动检测器,选用三中取二的准则,接纳的值是3次接连采样(第7、8、9个脉冲时采样)取其间两次相同的值,以承认是否是真实的开端位(负跳变)的开端。

当一帧数据接纳结束今后,有必要一起满意以下两个条件,这次接纳才真实完结。

a.RI=0,即上一帧数据接纳完结时,RI=1宣布的中止请求已被呼应,SBUF中的数据已被取走,阐明“接纳SBUF”已空。

b.SM2=0或收到的中止位=1(方法1时,中止位已进入RB8),则收到的数据装入SBUF和RB8(RB8装入中止位),且置“1”中止标志RI。

若这两个条件不一起满意,收到的数据不能装入SBUF,该帧数据将丢掉。

方法1波特率=(2SMOD/32)×守时器T1的溢出率=(2SMOD/32)/(256-TL1)

3)方法2

9位异步通讯接口。每帧数据均为11位,1位开端位0,8位数据位(先低位),1位可程控的第9位数据和1位中止位。

方法2波特率=(2SMOD/64)×fosc

①发送

发送前,先依据通讯协议由软件设置TB8(例如,双机通讯时的奇偶校验位或多机通讯时的地址/数据的标志位)。

②接纳

REN=1。数据由RXD端输入,接纳11位信息。当位检测逻辑采样到RXD引脚从1到0的负跳变,并判别开端位有用后,便开端接纳一帧信息。在接纳器完第9位数据后,需满意以下两个条件,才能将接纳到的数据送入SBUF。

a.RI=0,意味着接纳缓冲器为空。

b.SM2=0或接纳到的第9位数据位RB8=1时。

当上述两个条件满意时,接纳到的数据送入SBUF(接纳缓冲器),第9位数据送入RB8,并置“1”RI。若不满意这两个条件,接纳的信息将被丢掉。

4)方法3

方法3为波特率可变的9位异步通讯方法,除波特率外,方法3和方法2相同。

方法3波特率=(2SMOD/32)×守时器T1的溢出率=(2SMOD/32)/(256-TL1)

3.多机通讯

串行口用于多机通讯时有必要运用方法2或方法3。

由单片机构成的多机体系,常选用总线型主从式结构:在多个单片机组成的体系中,只要一个是主机,其他是从机,主机发送的信息可被各从机接纳,而各从机发送的信息只要主机接纳,从机与从机之间不能相互直接通讯。

主机的RXD与一切从机的TXD端相连,TXD与一切从机的RXD端相连。

多机通讯的完结,主要靠主、从机正确地设置与判别多机通讯操控位SM2和发送、接纳的第9位数据(TB8或RB8)。

1)多机通讯原理

串行口操控寄存器SCON中的SM2位便是满意这一条件而设置的多机通讯操控位。

在串行口以方法2(或方法3)接纳时:

若SM2=1,表明答应多机通讯,这时呈现两种或许状况:

①接纳到的第9位数据为1时,数据才装入SBUF,并将中止标志RI置“1”,向CPU宣布中止请求;

②接纳到的第9位数据为0时,则不发生中止标志,信息将扔掉。

若SM2=0,则接纳的第9位数据不论是0仍是1,都发生RI=1中止标志,接纳到的数据装入SBUF中。

当主机给从机发送信息时,要依据发送信息的性质来设置TB8,

发送地址信号时,设置TB8=1,

发送数据或指令时,设置TB8=0。

当从机的SM2为1时,该从机只接纳地址帧(RB8位为1),对数据帧(RB8位为0)不予理睬。

而当SM2为0时,该从机接纳一切发来的信息。

2)多机通讯进程

①令一切从机的SM2方位1,使它们处于只接纳地址帧的状况(即从机复位);

②主机发送一帧地址信息,其间包含8位地址,第9位(即TB8)为1,以表明发送的是地址;

③从机接纳到地址帧后,各自中止CPU,把接纳到的地址与其本机地址作比较;

④地址相符的从机对SM2清0,预备接纳主机发来的数据/指令。地址不符的从机仍保持SM=1不变,对主机发来的数据帧不予理睬,直到主机发来新的地址帧;

⑤主机发送数据或操控信息(第9位为0)给被寻址的从机;

⑥被寻址的从机,因SM=0,能够接纳主机发送过来的一切数据。当从机接纳数据结束时,置位SM2,回来接纳地址帧状况(复位状况);

⑦当主机需改为与其他从机通讯时,可再宣布地址帧来呼叫其他从机。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/275495.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部