您的位置 首页 嵌入式

普通单片机教育 第二十讲 串行接口

概述串行接口的一般概念单片机与外界进行信息交换称之为通讯。8051单片机的通讯方式有两种:并行通讯:数据的各位同时发送或接收。串行通讯:

概述

串行接口的一般概念

单片机与外界进行信息交流称之为通讯。

8051单片机的通讯办法有两种:

并行通讯:数据的各位一起发送或接纳。

串行通讯:数据一位一位次序发送或接纳。参看下图:

串行通讯的办法:

异步通讯:它用一个开端位表明字符的开端,用中止位表明字符的结束。其每帧的格局如下:

在一帧格局中,先是一个开端位0,然后是8个数据位,规则低位在前,高位在后,接下来是奇偶校验位(能够省掉),最终是中止位1。用这种格局表明字符,则字符能够一个接一个地传送。

在异步通讯中,CPU与外设之间必须有两项规则,即字符格局和波特率。字符格局的规则是两边能够在对同一种0和1的串了解成同一种含义。原则上字符格局能够由通讯的两边自在拟定,但从通用、便利的视点动身,一般仍是运用一些规范为好,如选用ASCII规范。

波特率即数据传送的速率,其界说是每秒钟传送的二进制数的位数。例如,数据传送的速率是120字符/s,而每个字符如上述规则包含10数位,则传送波特率为1200波特。

同步通讯:在同步通讯中,每个字符要用开端位和中止位作为字符开端和结束的标志,占用了时刻;所以在数据块传递时,为了进步速度,常去掉这些标志,选用同步传送。由于数据块传递开端要用同步字符来指示,一起要求由时钟来完成发送端与接纳端之间的同步,故硬件较杂乱。

通讯方向:在串行通讯中,把通讯接口只能发送或接纳的单向传送办法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送办法中又分为半双工传送和全双工传送。半双工传送是两机之间不能一起进行发送和接纳,任一时该,只能发或许只能收信息。

2.8051单片机的串行接口结构

8051串行接口是一个可编程的全双工串行通讯接口。它可用作异步通讯办法(UART),与串行传送信息的外部设备相连接,或用于经过规范异步通讯协议进行全双工的8051多机体系也能够经过同步办法,运用TTL或CMOS移位寄存器来扩大I/O口。

8051单片机经过引脚RXD(P3.0,串行数据接纳端)和引脚TXD(P3.1,串行数据发送端)与外界通讯。SBUF是串行口缓冲寄存器,包含发送寄存器和接纳寄存器。它们有相同姓名和地址空间,但不会呈现抵触,由于它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。

串行口的操控与状况寄存器

串行口操控寄存器SCON

它用于界说串行口的作业办法及施行接纳和发送操控。字节地址为98H,其各位界说如下表:

D7 D6 D5 D4 D3 D2 D1 D0

SM0 SM1 SM2 REN TB8 RB8 TI RI

SM0、SM1:串行口作业办法挑选位,其界说如下:

SM0、SM1 作业办法功用描绘 波特率

0 0 办法0 8位移位寄存器 Fosc/12

0 1 办法1 10位UART可变

1 0 办法2 11位UARTFosc/64或fosc/32

1 1办法3 11位UART 可变

其间fosc为晶振频率

SM2:多机通讯操控位。在办法0时,SM2必定要等于0。在办法1中,当(SM2)=1则只要接纳到有用中止位时,RI才置1。在办法2或办法3当(SM2)=1且接纳到的第九位数据RB8=0时,RI才置1。

REN:接纳答应操控位。由软件置位以答应接纳,又由软件清0来制止接纳。

TB8: 是要发送数据的第9位。在办法2或办法3中,要发送的第9位数据,根据需求由软件置1或清0。例如,可约好作为奇偶校验位,或在多机通讯中作为差异地址帧或数据帧的标志位。

RB8:接纳到的数据的第9位。在办法0中不运用RB8。在办法1中,若(SM2)=0,RB8为接纳到的中止位。在办法2或办法3中,RB8为接纳到的第9位数据。

TI:发送中止标志。在办法0中,第8位发送结束时,由硬件置位。在其它办法的发送中止位前,由硬件置位。TI置位既表明一帧信息发送结束,一起也是请求中止,可根据需求,用软件查询的办法取得数据已发送结束的信息,或用中止的办法来发送下一个数据。TI必须用软件清0。

RI:接纳中止标志位。在办法0,当接纳完第8位数据后,由硬件置位。在其它办法中,在接纳到中止位的中心时刻由硬件置位(例外情况见于SM2的阐明)。RI置位表明一帧数据接纳结束,可用查询的办法获悉或许用中止的办法获悉。RI也必须用软件清0。

特别功用寄存器PCON

PCON是为了在CHMOS的80C51单片机上完成电源操控而附加的。其间最高位是SMOD。

串行口的作业办法

8051单片机的全双工串行口可编程为4种作业办法,现分述如下:

办法0为移位寄存器输入/输出办法。可外接移位寄存器以扩展I/O口,也能够外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲。

输出串行数据从RXD引脚输出,TXD引脚输出移位脉冲。CPU将数据写入发送寄存器时,当即发动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中止标志TI由硬件置位。

输入当串行口以办法0接纳时,先置位答应接纳操控位REN。此刻,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当(RI)=0和(REN)=1一起满意时,开端接纳。当接纳到第8位数据时,将数据移入接纳寄存器,并由硬件置位RI。

下面两图分别是办法0扩展输出和输入的接线图。

办法1为波特率可变的10位异步通讯接口办法。发送或接纳一帧信息,包含1个开端位0,8个数据位和1个中止位1。

输出当CPU履行一条指令将数据写入发送缓冲SBUF时,就发动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。

输入在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开端位0,就开端接纳一帧数据。只要当(RI)=0且中止位为1或许(SM2)=0时,中止位才进入RB8,8位数据才干进入接纳寄存器,并由硬件置位中止标志RI;不然信息丢掉。所以在办法1接纳时,应先用软件清零RI和SM2标志。

办法2

办法月为固定波特率的11位UART办法。它比办法1增加了一位可程控为1或0的第9位数据。

输出: 发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通讯中地址/数据信息的标志位,也能够作为数据的奇偶校验位。当CPU履行一条数据写入SUBF的指令时,就发动发送器发送。发送一帧信息后,置位中止标志TI。

输入: 在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开端位0,就开端接纳一帧数据。在接纳到附加的第9位数据后,当(RI)=0或许(SM2)=0时,第9位数据才进入RB8,8位数据才干进入接纳寄存器,并由硬件置位中止标志RI;不然信息丢掉。且不置位RI。再过一位时刻后,不论上述条件时否满意,接纳电路即行复位,并从头检测RXD上从1到0的跳变。

作业办法3

办法3为波特率可变的11位UART办法。除波特率外,其他与办法2相同。

波特率挑选

如前所述,在串行通讯中,收发两边的数据传送率(波特率)要有必定的约好。在8051串行口的四种作业办法中,办法0和2的波特率是固定的,而办法1和3的波特率是可变的,由定时器T1的溢出率操控。

办法0

办法0的波特率固定为主振频率的1/12。

办法2

办法2的波特率由PCON中的挑选位SMOD来决议,可由下式表明:

波特率=2的SMOD次方除以64再乘一个fosc,也便是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc

3.办法1和办法3

定时器T1作为波特率发生器,其公式如下:

波特率= 定时器T1溢出率

T1溢出率= T1计数率/发生溢出所需的周期数

式中T1计数率取决于它作业在定时器状况仍是计数器状况。当作业于定时器状况时,T1计数率为fosc/12;当作业于计数器状况时,T1计数率为外部输入频率,此频率应小于fosc/24。发生溢出所需周期与定时器T1的作业办法、T1的预置值有关。

定时器T1作业于办法0:溢出所需周期数=8192-x

定时器T1作业于办法1:溢出所需周期数=65536-x

定时器T1作业于办法2:溢出所需周期数=256-x

由于办法2为主动重装入初值的8位定时器/计数器形式,所以用它来做波特率发生器最恰当。

当时钟频率选用11.0592MHZ时,取易取得规范的波特率,所以许多单片机体系选用这个看起来“怪”的晶振便是这个道理。

下表列出了定时器T1作业于办法2常用波特率及初值。

常用波特率
Fosc(MHZ)
SMOD
TH1初值
19200 11.0592 1
FDH
9600 11.0592 0
FDH
4800 11.0592 0
FAH
2400 11.0592 0
F4h
1200 11.0592 0
E8h

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部