第7章 MCS-51串口(4学时)_第1页
第7章 MCS-51串口(4学时)_第2页
第7章 MCS-51串口(4学时)_第3页
第7章 MCS-51串口(4学时)_第4页
第7章 MCS-51串口(4学时)_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、7.1 串行通信的基础知识串行通信的基础知识 串行数据通信要解决两个关键技术问题,一个是数据传送,另一个是数据转换。 所谓数据传送就是指数据以什么形式进行传送。所谓数据转换就是指单片机在接受数据时,如何把接收到的串行数据转化为并行数据,单片机在发送数据时,如何把并行数据转换为串行数据进行发送。一、一、串行通信的基本概念串行通信的基本概念1、并行、并行 和和 串行串行 并行通信的优点是速度快,效率高,确点是不适合远距离通信。串行通信刚好相反。2、单工、半双工、单工、半双工 和和 全双工全双工 单工:信息只能沿着一个方向传播 半双工:信息可以沿一条线双向传播,但不能同时实现双向传播。 全双工:使用

2、两条独立的数据通道,收发可同时进行。发送器接收器发送器接收器3、同步方式和异步方式、同步方式和异步方式 (1) 同步方式是将一大批数据分成几个数据块, 数据块之间用同步字符予以隔开, 而传输的各位二进制码之间都没有间隔。 其基本特征是发送与接收时钟始终保持严格同步。 (2)异步通信是按帧传送数据, 它利用每一帧的起、止信号来建立发送与接收之间的同步,每帧内部各位均采用固定的时间间隔, 但帧与帧之间的时间间隔是随机的。其基本特征是每个字符必须用起始位和停止位作为字符开始和结束的标志, 它是以字符为单位一个个地发送和接收的。4 4、数据传送格式、数据传送格式单片机的串行通信使用的是异步串行通信,所

3、单片机的串行通信使用的是异步串行通信,所谓异步就是指发送端和接收端使用的不是同谓异步就是指发送端和接收端使用的不是同一个时钟一个时钟, ,但波特率相同。但波特率相同。异步串行通信通常以字符(或者字节)为单位异步串行通信通常以字符(或者字节)为单位组成字符帧传送。组成字符帧传送。字符帧由发送端一帧一帧地传送,接收端通过字符帧由发送端一帧一帧地传送,接收端通过传输线一帧一帧地接收。传输线一帧一帧地接收。 (1 1)字符帧的帧格式)字符帧的帧格式 字符帧由四部分组成,分别是起始位、数据位、字符帧由四部分组成,分别是起始位、数据位、奇偶校验位、停止位。奇偶校验位、停止位。1 1) 起始位:位于字符帧的

4、开头,只占一位,始终起始位:位于字符帧的开头,只占一位,始终位逻辑低电平,表示发送端开始发送一帧数据。位逻辑低电平,表示发送端开始发送一帧数据。2 2) 数据位:紧跟起始位后,可取数据位:紧跟起始位后,可取5 5、6 6、7 7、8 8位,位,低位在前,高位在后。低位在前,高位在后。3 3)奇偶校验位:占一位,用于对字符传送作正确性)奇偶校验位:占一位,用于对字符传送作正确性检查,因此奇偶校验位是可选择的,共有三种可能,检查,因此奇偶校验位是可选择的,共有三种可能,即奇校验、偶校验和无校验,由用户根据需要选定。即奇校验、偶校验和无校验,由用户根据需要选定。4 4)停止位:末尾,为逻辑)停止位:

5、末尾,为逻辑“1 1”高电平,可取高电平,可取1 1、1.51.5、2 2位,表示一帧字符传送完毕。位,表示一帧字符传送完毕。起始位数据位(0)数据位(1)数据位(n1)奇偶位停止位停止位起始位一帧数据图7.1 字符帧格式 (2 2)传送的速率)传送的速率串行通信的速率用波特率来表示,串行通信的速率用波特率来表示,所谓波特率就所谓波特率就是指一秒钟传送数据位的个数是指一秒钟传送数据位的个数。每秒钟传送一个数。每秒钟传送一个数据位就是据位就是1 1波特。即:波特。即:1 1波特波特1bps1bps(位(位/ /秒)。秒)。在串行通信中,数据位的发送和接收分别由发送在串行通信中,数据位的发送和接收

6、分别由发送时钟脉冲和接收时钟脉冲进行定时控制。时钟频率时钟脉冲和接收时钟脉冲进行定时控制。时钟频率高,则波特率高,通信速度就快;反之,时钟频率高,则波特率高,通信速度就快;反之,时钟频率低,波特率就低,通信速度就慢。低,波特率就低,通信速度就慢。例:要求每秒传送例:要求每秒传送120120个字符,每帧为个字符,每帧为1010位。位。解:解: B=120B=12010=120010=1200波特波特每位每位0.83ms0.83ms数据位传输率数据位传输率=120=1208=9608=960位位/ /秒秒2014年年11月月24日日5、数据转换数据转换串行接口电路为用户提供了两个串行口缓冲寄存串行

7、接口电路为用户提供了两个串行口缓冲寄存器(器(SBUF),一个称为发送缓存器,它的用途是接),一个称为发送缓存器,它的用途是接收片内总线送来的数据,即发送缓冲器只能写不能收片内总线送来的数据,即发送缓冲器只能写不能读。发送缓冲器中的数据通过读。发送缓冲器中的数据通过TXD引脚向外传送。引脚向外传送。另一个称为接收缓冲器,它的用途是向片内总线发另一个称为接收缓冲器,它的用途是向片内总线发送数据,即接收缓冲器只能读不能写。接收缓冲器送数据,即接收缓冲器只能读不能写。接收缓冲器通过通过RXD引脚接收数据。因为这两个缓冲器一个只引脚接收数据。因为这两个缓冲器一个只能写,一个只能读,所以共用一个地址能写

8、,一个只能读,所以共用一个地址99H。串行。串行接口电路如图接口电路如图8.2所示。所示。8051单片机内部有一个功能很强的全双工串行单片机内部有一个功能很强的全双工串行接口,可同时接收和发送数据,使用十分灵接口,可同时接收和发送数据,使用十分灵活,能方便地与其他计算机或串行传输的外活,能方便地与其他计算机或串行传输的外部设备实现双机、多机通信。与此同时,该部设备实现双机、多机通信。与此同时,该串行接口也可作为同步异位寄存器使用。串行接口也可作为同步异位寄存器使用。串行接口采用通用异步接收器发送器串行接口采用通用异步接收器发送器(UART)工作方式。)工作方式。由串行口控制寄存器由串行口控制寄

9、存器SCON、接收电路和发送、接收电路和发送电路等三部分组成。电路等三部分组成。 (1)发送和接收电路发送和接收电路串行口的发送和接收电路结构框图如图串行口的发送和接收电路结构框图如图1-24所示。发送电路由所示。发送电路由SBUF(发送缓冲器)、(发送缓冲器)、发送门、发送控制器等电路组成,用于串行发送门、发送控制器等电路组成,用于串行口的发送;口的发送;接收电路由接收电路由SBUF(接收缓冲器)、接收(接收缓冲器)、接收控制器和移位寄存器等电路组成,用于串行控制器和移位寄存器等电路组成,用于串行口的接收。两个口的接收。两个SBUF分别用于存放串行口将分别用于存放串行口将要发送的字符数据和接

10、收到的字符数据,以要发送的字符数据和接收到的字符数据,以便能以全双工的方式进行通信。便能以全双工的方式进行通信。二者在物理上是相互独立的,但在逻辑上,二者在物理上是相互独立的,但在逻辑上,SBUF只有一个,共用一个地址单元只有一个,共用一个地址单元99H。可以通过执行如下指令实现对可以通过执行如下指令实现对SBUF的存取。的存取。MOV SBUF, A;产生写;产生写SBUF脉冲,以便将累脉冲,以便将累加器加器A中字符送入中字符送入SBUF或或MOV A,SBUF;产生读;产生读SBUF脉冲,以便把脉冲,以便把SBUF中接收到的字符送入累加器中接收到的字符送入累加器A在异步通信中,发送和接收都

11、是在发送时钟和在异步通信中,发送和接收都是在发送时钟和接收时钟控制下进行的,发送时钟和接收时接收时钟控制下进行的,发送时钟和接收时钟都必须同字符位数的波特率保持一致。钟都必须同字符位数的波特率保持一致。发送时钟和接收时钟发送时钟和接收时钟可以由主机频率经过分频可以由主机频率经过分频获得,也可以由内部定时器获得,也可以由内部定时器T1或或T0的溢出率的溢出率经过分频后提供。经过分频后提供。 当当CPU执行指令执行指令MOV SBUF,A就开始发送就开始发送过程。过程。 首先将累加器首先将累加器A中欲发送字符送入中欲发送字符送入SBUF寄存寄存器,之后发送控制器在发送时钟(由发送波器,之后发送控制

12、器在发送时钟(由发送波特率电路提供)控制下自动在发送字符前后特率电路提供)控制下自动在发送字符前后添加起始位、停止位和其他控制位,然后通添加起始位、停止位和其他控制位,然后通过发送门一位一位地从过发送门一位一位地从TXD线上串行发送字线上串行发送字符。符。 在串行接收时,串行接口监视在串行接收时,串行接口监视RXD线,当检线,当检测到测到RXD线上有一个低电平(起始位)时就线上有一个低电平(起始位)时就开始一个新的字符接收过程。串行口每接收开始一个新的字符接收过程。串行口每接收到一位二进制数据位后就使移位寄存器左移到一位二进制数据位后就使移位寄存器左移一次,连续接收到一个字符帧后,接收控制一次

13、,连续接收到一个字符帧后,接收控制器就自动去掉字符帧的起始位和控制位,将器就自动去掉字符帧的起始位和控制位,将剩余剩余8位二进制位(一个字符)并行传送到位二进制位(一个字符)并行传送到SBUF并向并向CPU申请中断。串行口的接收过程申请中断。串行口的接收过程也是也是CPU自动完成的,用户只需通过自动完成的,用户只需通过MOV A, SBUF指令从指令从SBUF中读出所接收的字符即可。中读出所接收的字符即可。(2)串行口控制寄存器串行口控制寄存器 与申行通信有关的控制寄存器共有两个:与申行通信有关的控制寄存器共有两个: 串行控制寄存器串行控制寄存器SCON和能改变波特率的电源和能改变波特率的电源

14、控制寄存器控制寄存器PCON串行口控制寄存器串行口控制寄存器SCON SCON是一个可位寻址的特殊功能寄存器,用是一个可位寻址的特殊功能寄存器,用以确定行通道的工作方式选择、接收和发送以确定行通道的工作方式选择、接收和发送控制以及串行口的状态标志,单元地址为控制以及串行口的状态标志,单元地址为98H其格式和功能如下其格式和功能如下:SM0SM0,SM1SM1:选择串行口:选择串行口4 4种工作方式。种工作方式。SM2SM2:多机控制位,用于多机通讯。:多机控制位,用于多机通讯。RENREN:允许接收控制位,:允许接收控制位,REN=1REN=1,允许接收;,允许接收;REN=0REN=0,禁止

15、接收。,禁止接收。TB8TB8发送的第发送的第9 9位数据位,可用作校验位和地址位数据位,可用作校验位和地址/ /数据标识位数据标识位RB8RB8:接收的第:接收的第9 9位数据位或停止位位数据位或停止位TITI:发送中断标志,发送一帧结束,:发送中断标志,发送一帧结束,TI=1TI=1,必,必须软件清零须软件清零RIRI:接收中断标志,接收一帧结束,:接收中断标志,接收一帧结束,RI=1RI=1,必,必须软件清零须软件清零SM0,SM1选择四种工作方式。SM2:多机通信控制位,主要在方式多机通信控制位,主要在方式2和方式和方式3下下使用。使用。多机通信规定,第多机通信规定,第9位数据位数据(

16、RB8)为)为1,说明本帧,说明本帧为地址;若第为地址;若第9位数据为位数据为0,说明本帧为数据。当说明本帧为数据。当串行口以方式串行口以方式2或方式或方式3接收时,如接收时,如SM2=1,则,则只有当接收到的第只有当接收到的第9位数据为位数据为1,才将接收到的,才将接收到的前前8位数据送入位数据送入SBUF,并置位,并置位RI产生中断请求;产生中断请求;否则,说明该机没有被寻址,于是将接收到的否则,说明该机没有被寻址,于是将接收到的前前8位数据丢弃位数据丢弃.SM2=0时,则只允许单机通信。此时无论第时,则只允许单机通信。此时无论第9位位数据为数据为1还是为还是为0,都将前,都将前8位数据装

17、入位数据装入SBUF,并并产生中断请求。产生中断请求。在方式在方式0下,下,SM2必须为必须为0;在方式;在方式1下,如下,如SM2=1,则只有收到有效的停止位时,中断标,则只有收到有效的停止位时,中断标志志RI才会置才会置1,以便接收下一帧数据。,以便接收下一帧数据。电源控制寄存器电源控制寄存器PCON PCON是为了在是为了在CHMOS的的8051系列单片机上实系列单片机上实现电源控制而设置的,其中只有一位现电源控制而设置的,其中只有一位SMOD与与串行口工作有关。串行口工作有关。SMOD:波特率选择位。在方式波特率选择位。在方式0,方式方式1和方式和方式3下,下,若若SMOD=1,则波特

18、率增加一倍;若,则波特率增加一倍;若SMOD=0,则波特率不加倍。整机复位时,则波特率不加倍。整机复位时,SMOD=0。 GF1,GF0:两个通用工作标志位,用户可以自由使用。两个通用工作标志位,用户可以自由使用。PD:掉电模式设定位。掉电模式设定位。PD=0 单片机处于正常工作状态。单片机处于正常工作状态。PD=1 单片机进入掉电(单片机进入掉电(Power Down)模式)模式 ,可由,可由外部中断或硬件复位模式唤醒,进入掉电模式后,外部中断或硬件复位模式唤醒,进入掉电模式后,外部晶振停振,外部晶振停振,CPU、定时器、串行口全部停止工、定时器、串行口全部停止工作,只有外部中断工作。作,只

19、有外部中断工作。IDL:空闲模式设定位。空闲模式设定位。IDL=0 单片机处于正常工作状态。单片机处于正常工作状态。IDL=1 单片机进入空闲(单片机进入空闲(Idle)模式,除)模式,除CPU不工不工作外,其余仍继续工作,在空闲模式下可由任一个作外,其余仍继续工作,在空闲模式下可由任一个中断或硬件复位唤醒。中断或硬件复位唤醒。 串行接口的工作模式串行接口的工作模式串行口有串行口有4种工作方式,可通过软件设置种工作方式,可通过软件设置SCON中中SMI、SMO的组合来选择。的组合来选择。(1)工作方式工作方式0方式方式0:同步移位寄存器方式。用于扩展并行:同步移位寄存器方式。用于扩展并行I/O

20、接口。接口。 也可接也可接同步输入输出设备同步输入输出设备1.一帧一帧8位,无起始位和停止位。位,无起始位和停止位。2.RXD:数据移位输入:数据移位输入/输出端。输出端。低位在前高位低位在前高位在后在后 TXD:同步移位时钟脉冲输出端,同步时钟信:同步移位时钟脉冲输出端,同步时钟信号号(P3.1)。3.波特率波特率B = fosc/12如:如: fosc=12MHz,B=1MHz,每位数据,每位数据占占1 s。4.发送过程:写入发送过程:写入SBUF,启动发送,一帧发送,启动发送,一帧发送结束,结束,TI=1。 接收过程:接收过程:REN=1且且RI=0,启动接收,一帧,启动接收,一帧接收完

21、毕,接收完毕,RI=1。数据发送数据发送在发送中断标志在发送中断标志TI为为0的情况下,执行数据输的情况下,执行数据输出指令出指令“MOV SBUF, A”,即可将,即可将SBUF中内中内容由低到高逐次送到容由低到高逐次送到RXD端,同时在移位脉端,同时在移位脉冲控制下,将数据逐一传送到外接串行输入冲控制下,将数据逐一传送到外接串行输入并行输出芯片并行输出芯片74LS164 。当当8位数据发送结束后,位数据发送结束后,TI自动置自动置1,输出数据也输出数据也就出现在就出现在74LS164芯片的并行输出端。芯片的并行输出端。数据发送数据发送送当串行口配合送当串行口配合“串行输入并行输出串行输入并

22、行输出”芯片芯片(如(如74LS164),即可通过串行口扩展单片机,即可通过串行口扩展单片机输出口。输出口。参考程序如下参考程序如下: MOV SCON,00H;定义串行工作方式;定义串行工作方式 CLR TI ;清除发送中断标志;清除发送中断标志 MOV SBUF,A ;输出串行数据;输出串行数据LOOP:JNB TI,LOOP ;等待一帧数据发;等待一帧数据发送结束送结束数据输入数据输入串行口通过与串行口通过与“并入串出并入串出”芯片(如芯片(如74LS165)相连,即可实现把串行口扩展成并行输入口相连,即可实现把串行口扩展成并行输入口使用。使用。节奏节奏: /L锁存锁存 S移出移出200

23、9年年11月月18日日74LS165的的S/L端为移位置入端,当端为移位置入端,当S/L=0时,从时,从A H(即(即Q0Q7)并行置入并行置入数据,当数据,当S/L= 1时,开始从时,开始从QH端移出数端移出数据。移出的串行数据在时钟脉冲据。移出的串行数据在时钟脉冲(TXD)的控制下,从的控制下,从RXD端串行输入端串行输入SBUF数据,数据,当接收到第当接收到第8位数据时,置位中断标志位数据时,置位中断标志RI,向向CPU申请中断,申请中断,CPU可以读可以读SBUF,从从而完成数据的并行输入。而完成数据的并行输入。 参考程序如下。参考程序如下。 MOV SCON,00H;定义串行口工作方

24、式;定义串行口工作方式 CLR P1. 0 ;74LS165并行置入数据并行置入数据 NOP SETB Pl. 0 ;延时一个机器周期后,移出数;延时一个机器周期后,移出数据据 CLR RI ;清除中断标志;清除中断标志 SETB REN ;允许接收;允许接收 LOOP:JNB RI, LOOP;等待一帧数据接收结束;等待一帧数据接收结束 MOV A, SBUF;读串行输入数据;读串行输入数据 由于方式由于方式0不能自动插入和检出同步字符(如起始不能自动插入和检出同步字符(如起始位和停止位),因此,方式位和停止位),因此,方式0不能用于串行通信,不能用于串行通信,只能用于扩展只能用于扩展I/O

25、口。口。多位并口输入多位并口输入(2)工作方式)工作方式1( 8位数据异步通讯方式。)位数据异步通讯方式。)串行口工作方式串行口工作方式1是是10位为一帧的异步串行通信位为一帧的异步串行通信方式。方式。TXD用于发送数据,用于发送数据,RXD用于接收数用于接收数据,收发一帧数据的格式为:据,收发一帧数据的格式为:1位起始位(固位起始位(固定为定为0)、)、8位数据位(低位在前,高位在后)位数据位(低位在前,高位在后)和和1位停止位(固定为位停止位(固定为1),共,共10位。一帧数据位。一帧数据格式如下所示:格式如下所示:数据发送数据发送在在TI为为0的情况下(即串行口发送控制电路处于空闲状的情

26、况下(即串行口发送控制电路处于空闲状态),执行一条写态),执行一条写SBUF指令便可启动串行口数据发指令便可启动串行口数据发送。串行口自动在送。串行口自动在8位数据前、后追加起始位和停止位数据前、后追加起始位和停止位,构成一个完整的帧格式,然后由位,构成一个完整的帧格式,然后由TXD端输出。端输出。一个字符发送完成后,一个字符发送完成后,TXD输出线维持在输出线维持在1状态,并状态,并将将SCON中的中的TI置置1,通知,通知CPU可以发送下一个字符。可以发送下一个字符。数据接收数据接收在在RI为为0的状态下(即串行口接收控制电路处于空闲状的状态下(即串行口接收控制电路处于空闲状态),当态),

27、当REN位为位为1时,串行口即处于接收状态。串时,串行口即处于接收状态。串行口采样行口采样RXD端,当采样到从端,当采样到从1到到0的负跳变时,就的负跳变时,就认定为已接收到起始位。随后在移位脉冲控制下,认定为已接收到起始位。随后在移位脉冲控制下,把接收到的数据位移入接收寄存器中。当把接收到的数据位移入接收寄存器中。当8位数据及位数据及停止位全部移入后,根据以下状态,进行相应操作。停止位全部移入后,根据以下状态,进行相应操作。若若SM2=0,则接收控制器发出则接收控制器发出“装载装载SBUF”信号,信号,将将8位数据装入位数据装入SBUF,停止位装入,停止位装入RB8,并,并置置RI= 1,向

28、,向CPU申请中断。申请中断。若若SM2=1,则只有停止位为,则只有停止位为1才发生上述操作。才发生上述操作。若若SM2=1且停止位为且停止位为0,则所接收的数据不装入,则所接收的数据不装入SBUF,数据将丢失。,数据将丢失。波特率设置波特率设置对于工作方式对于工作方式1,波特率由定时器计数器波特率由定时器计数器T1的的溢出率和溢出率和SMOD决定决定把定时器计数器把定时器计数器T1溢出率作为波特率发生器溢出率作为波特率发生器的输入信号时,为了避免重装初值造成的定的输入信号时,为了避免重装初值造成的定时误差,时误差,T1最好工作在可自动重装初值的方最好工作在可自动重装初值的方式式2,并禁止,并

29、禁止T1中断。中断。 【例例4-9】已知已知8051单片机时钟振荡频率为单片机时钟振荡频率为11. 0592MHz,选用定时器,选用定时器T1工作方式工作方式2作波特率作波特率发生器,波特率为发生器,波特率为2400bit/s,求初值,求初值X。设波特率控制位设波特率控制位SMOD0,初值初值F4H (3)工作方式)工作方式2和工作方式和工作方式3工作方式工作方式2和工作方式和工作方式3都是都是11位为一帧的异步串行通位为一帧的异步串行通信方式,二者的惟一区别是通信波特率有所不同,信方式,二者的惟一区别是通信波特率有所不同,方式方式2的波特率由主频的波特率由主频fosc经经32分频或分频或64

30、分频后获得,分频后获得,不可变,因此不常用(原因是与其他串行通信设备不可变,因此不常用(原因是与其他串行通信设备连接困难)。连接困难)。而方式而方式3的波特率与的波特率与T1或或T0的溢出率及的溢出率及PCON中中SMOD位有关,选择不同的初值或晶振频率即可获得所需位有关,选择不同的初值或晶振频率即可获得所需的常用波特率。的常用波特率。 方式方式2或方式或方式3收发一帧数据由收发一帧数据由11位组成,位组成,1位起始位、位起始位、9位数据位和位数据位和1位停止位。帧数据格式如下所示:位停止位。帧数据格式如下所示:字符还是由字符还是由8位数据组成,第位数据组成,第9个数据位既可作奇偶校个数据位既

31、可作奇偶校验位使用,也可作控制位使用,验位使用,也可作控制位使用,其功能可由用户确定。其功能可由用户确定。数据发送数据发送方式方式2和方式和方式3的数据发送过程与方式的数据发送过程与方式1类似。所类似。所不同的是方式不同的是方式2和方式和方式3需要发送需要发送9位串行数据,位串行数据,除将低除将低8位存放在位存放在SBUF寄存器中外,还需将第寄存器中外,还需将第9位位(D8)存放在存放在SCON寄存器中的寄存器中的TB8位。因此位。因此数据发送前,必须先通过位传送指令将数据发送前,必须先通过位传送指令将D8位写位写入入SCON寄存器的寄存器的TB8位,如位,如 SETB TB8;TBS位置位置

32、1 或或CLR TB8;TBS位置位置0之后的过程同方式之后的过程同方式1一样,通过写一样,通过写SBUF指令,启指令,启动发送。第动发送。第9位内容没有规定,可以是数据,位内容没有规定,可以是数据,也可以是奇偶校验位,在多机通信中,常用作也可以是奇偶校验位,在多机通信中,常用作数据地址标志位或其他控制位。数据地址标志位或其他控制位。数据接收数据接收方式方式2和方式和方式3接收数据的过程也和方式接收数据的过程也和方式1类似。所不同类似。所不同的是,方式的是,方式1中中RB8为存放的是停止位,而方式为存放的是停止位,而方式2和和方式方式3中中RB8存放的是第存放的是第9数据位数据位(D8)。方式

33、方式2和方式和方式3必须满足接收有效字符的条件变为:必须满足接收有效字符的条件变为:1.RI=0;2.SM2=0,或接收到的第或接收到的第9位数据位为位数据位为1.只有上述两个条件同时满足,接收到的字符才能送入只有上述两个条件同时满足,接收到的字符才能送入SBUF,第第9数据位才能装入数据位才能装入RB8中,并使中,并使RI=1;否则,;否则,接收到的数据无效,接收到的数据无效,RI也不置位。也不置位。 上述第一个条件是要求上述第一个条件是要求SBUF为空,即接收控为空,即接收控制电路空闲,允许串行口接收。第二个条件制电路空闲,允许串行口接收。第二个条件是提供了利用是提供了利用SM2和第和第9

34、数据位共同对接收加数据位共同对接收加以控制:若第以控制:若第9位是奇偶校验位,则可令位是奇偶校验位,则可令 SM2=0,以保证串行口能可靠接收,若要求,以保证串行口能可靠接收,若要求利用第利用第9数据位参与接收控制,则可令数据位参与接收控制,则可令SM2=1,然后依靠第然后依靠第9位的状态来决定接收是否有效。位的状态来决定接收是否有效。波特率设置波特率设置波特率设置方式不同是方式波特率设置方式不同是方式2和方式和方式3的惟一区的惟一区别。别。方式方式2中波特率固定为中波特率固定为fosc/32或或fosc/64,用户具体用户具体选择哪一种波特率可通过选择选择哪一种波特率可通过选择SMOD位状态

35、位状态来决定:来决定:若若SMOD= 0,则所选波特率为,则所选波特率为fosc/64,若若SMOD= 1,则所选波特率为,则所选波特率为fosc32。方式方式3中波特率可变,其选择方式同工作方式中波特率可变,其选择方式同工作方式1。无论何种模式通信无论何种模式通信 :两个通信设备之间的波特率两个通信设备之间的波特率误差不能超过误差不能超过 。下面是一个实际的以。下面是一个实际的以 TB8 作为奇偶校验位的发送作为奇偶校验位的发送中断服务程序,中断服务程序, R0中存放着发送数据区起始地址。中存放着发送数据区起始地址。 PIPL:PUSH PSW ; 保护现场保护现场 PUSH A CLR T

36、I ; 清发送中断标志清发送中断标志 MOV A, R0 ; 取数据取数据 MOV C, P ; 奇偶位送奇偶位送 C MOV TB8, C ; 奇偶位送奇偶位送 TB8 MOV SBUF, A ; 数据写入发送缓冲器数据写入发送缓冲器,INC R0 ; 数据指针加数据指针加 1 POP A ; 恢复现场恢复现场 POP PSW RETI ; 中断返回中断返回 (4 4)计算波特率)计算波特率方式方式0 0为固定波特率:为固定波特率:B=fosc/12B=fosc/12方式方式2 2可选两种波特率:可选两种波特率: B=(2B=(2SMOD /64)/64)fosc fosc 方式方式1 1、

37、3 3为可变波特率,用为可变波特率,用T1T1作波特率发生器。作波特率发生器。B=(2B=(2SMOD/32)/32)T1T1溢出率溢出率T1T1为方式为方式2 2时的时间常数:时的时间常数: X = 2X = 28 8 - t/T - t/T溢出时间:溢出时间: t= (2t= (28 8 -X)T = (2-X)T = (28 8 -X)-X)12/ fosc12/ foscT1T1溢出率溢出率=1/t= fosc /12=1/t= fosc /12(2(2n n -X)-X) 波特率波特率B=(2B=(2SMOD /32)/32)fosc/12fosc/12(2(28 8-X)-X)串行

38、口方式串行口方式1 1、3 3,根据波特率选择,根据波特率选择T1T1工作方式,计算工作方式,计算时间常数。时间常数。T1T1选方式选方式2 2: TH1=X= 2TH1=X= 28 8-fosc/12-fosc/122 2SMOD/(32/(32B)B)T1T1选方式选方式1 1用于低波特率,需考虑用于低波特率,需考虑T1T1重装时间常数时间。重装时间常数时间。7.4 多机通信多机通信图2.23 主从式多机通信系统 RXDTXD主机 8051RXD TXD 8051 0# 从机RXD TXD 8051 1# 从机RXD TXD 8051 n# 从机 在主从式多机系统中,主机发出的信息有两类,

39、而且具有特征,能够有所区分。一类为地址,用来确定需要和主机通信的从机,特征是串行传送的第9位数据为1;另一类是数据,特征是串行传送的第9位数据为0。对从机来说,要利用SCON寄存器中的SM2位的控制功能。在接收时,若RI=0,则只要SM2=0,接收总能实现;而若SM2=1,则发送的第9位TB8必须为1接收才能进行。因此,对于从机来说,在接收地址时,应使SM2=1,以便接收到主机发来的地址,从而确定主机是否打算和自己通信,一经确认后,从机应使SM2=0,以便接收TB8=0的数据。 主从多机通信的过程如下: (1)主、从机工作于方式主、从机工作于方式2或方式或方式3,主机置,主机置SM2=0, R

40、EN=1;从机置;从机置SM2=1,REN=1 (2)主机置位主机置位TB8=1,向从机发送寻址地址帧,向从机发送寻址地址帧,各从机因满足接收条件各从机因满足接收条件(SM2=1,RB8=1),从而从而接收到主机发来的地址,并与本机地址进行接收到主机发来的地址,并与本机地址进行比较比较 (3)地址一致的从机(被寻址机)地址一致的从机(被寻址机)SM2清清0,并并向向 主机返回地址,供主机核对地址不一主机返回地址,供主机核对地址不一致的从机(未被寻址机)保持致的从机(未被寻址机)保持SM2=1 (4)主机核对返回的地址,若与此前发出的地主机核对返回的地址,若与此前发出的地址一致则准备发送数据;若

41、不一致址一致则准备发送数据;若不一致,主机发复主机发复位信号位信号,(数据帧中数据帧中TB8=0),然后返回然后返回(2)重新发重新发送地址帧送地址帧 (5)主机向从机发送数据,此时主机的主机向从机发送数据,此时主机的TB8=0,只有被选中的那台从机能接收到该数据其只有被选中的那台从机能接收到该数据其他从机则舍弃该数据他从机则舍弃该数据 (6)本次通信结束后,从机重新里本次通信结束后,从机重新里SM2=1,等待等待下次通信。下次通信。 ;主程序;主程序 ORG 0000H LJMP START ORG 0030H START:MOV TMOD, #20H:T1定时方式定时方式2 MOV TH1

42、,#0E8H:波特率为:波特率为1200bps MOV TL1, #0E8H SETB TRl:启动:启动T1 MOV SCON,#0D8H:SM2=0,REN=1,TB8=1 MOV PCON,#00H;波特率不加倍;波特率不加倍 MOV R1,#01H;从机地址从机地址 MOV R6,#0FFH;延时内循环延时内循环255 次次 ML0:MOV A,R1 ML1:MOV SBUF,A;发从机地址发从机地址 ML2:JBC RI,ML4 MOV R2,#8FH; 延时内循环延时内循环143 次次 DL0: DJNZ R2, DL0 DJNZ R6, ML2 JNB RI, ALARM;超时报

43、警超时报警 ML4:MOV A, SBUF;读取地址;读取地址 XRL A,R1;核对地址是否相同;核对地址是否相同 JZ TRAl;相同,转;相同,转 MOV A,#FFH;地址不同,发复位信号;地址不同,发复位信号 CLR TB8; 数据数据 MOV SBUF,A ML5:JNB TI,ML5 SETB TB8 AJMP ML1; 重发从机地址重发从机地址 TRAl: CLR TB8;TB8清清0,发送数据帧发送数据帧 MOVA, R0;读取待发送数据;读取待发送数据 MOV SBUF,A;启动发送;启动发送 JNB TI,;等待数据发送完;等待数据发送完 CLR TI;软件清发送中断标志

44、;软件清发送中断标志 RET END 从机源程序如下:从机源程序如下: ;主程序;主程序 ORG 0000H LJMP START ORG 0023H;串口中断入口地址;串口中断入口地址 LJMP SEVT0 ORG 0030H START:MOV TMOD,#20H:T1定时方式定时方式2 MOV TH1, #0E8H:波特率为:波特率为1200bps MOV TL1, #0E8H SETB TRl:启动:启动T1 MOV SCON,#0F8H;SM2=1,REN=1,TB8=1 MOV PCON,#00H:波特率不加倍:波特率不加倍 MOV R0,#30H;R0指向数据存放单元指向数据存放

45、单元 SETB EA:开串口中断:开串口中断 SETB ES SJMP:等待中断:等待中断 串口中断服务程序串口中断服务程序 SEVT0:JB RI, SEVTl;是接收中断转是接收中断转SEVTl CLR TI:是发送中断,清:是发送中断,清0 RETI;返回;返回2015年年11月月9日日 SEVT1:CLR RI:清:清RI MOV A, SBUF:读取数据:读取数据 JB RB8, SEVT2;是地址帧,是地址帧,SEVT2 XRL A,#FFH JZ SEVT4;复位指令,转;复位指令,转 MOV R0,A;数据存于;数据存于R所指单元所指单元 SETB SM2;一次通信完成,重置;

46、一次通信完成,重置SM2 RETI;返回;返回 SEVT2:XRL A,#01H;核对是否本机地址;核对是否本机地址 JZ SEVT3;是本机地址,转;是本机地址,转 SETB SM2;不是本机地址,;不是本机地址,SM2置置1 RETI SEVT3: CLR SM2:是本机地址,:是本机地址,SM2清清0 MOVA,#01H;向主机发确认地址;向主机发确认地址 MOV SBUF,A,向主机发确认地址,向主机发确认地址 RETI SEVT4:SETB SM2;SM2置置,接收地址接收地址 RETI END7.5 串行口的应用串行口初始化编程格式:串行口初始化编程格式:SIO:MOV SCON,

47、#控制状态字;写方式字且控制状态字;写方式字且 TI=RI=0 MOV PCON,#80H ;波特率加倍;波特率加倍 MOV TMOD,#20H ;T1作波特率作波特率发生器发生器 MOV TH1,#X ;选定波特率;选定波特率 MOV TL1,#X SETB TR1 SETB EA ;开串行口中;开串行口中断断 SETB ES发送程序:先发送一个字符,等待TI=1后再发送下一个字符。1.查询方式:TRAM:MOV A,R0 ;取数据 MOV SBUF,A ;发送一个字符WAIT:JBCTI,NEXT ;等待发送结束SJMP WAITNEXT:INCR0 ;准备下一次发送SJMP TRAM2.

48、中断方式: ORG 0023H ;串行口中断入口 AJMP SINTMAIN: ;初始化编程TRAM: MOV A,R0 ;取数据MOV SBUF,A ;发送第一个字符 H:SJMP H ;其它工作 SINT:CLR TI ;中断服务程序INC R0MOV A,R0 ;取数据MOV SBUF,A ;发送下一个字符RETI接收程序:REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。1.查询方式: WAIT:JBCRI,NEXT;查询等待SJMP WAITNEXT:MOV A,SBUF ;读取接收数据MOV R0,A;保存数据INCR0 ;准备下一次接收SJMP WAIT2.中断方式:

49、ORG0023HAJMP RINTMAIN: ;初始化编程 H:SJMP H ;其它任务 RINT:CLRRI ;清中断标志MOV A,SBUF ;读取接收数据MOV R0,A;保存数据INCR0RETI异步通讯程序举例(一)串行口方式0 用于扩展单片机的并行I/O接口。串行口实现:74LS164实现:串行并行的数据转换74LS165并行串行的数据转换 例例4-8图图4-16中,串行口外接两个中,串行口外接两个74IS164, 74LS164的输出接指示灯的输出接指示灯L0-L15,欲使欲使L0-L3、L8、L10、L12、L14亮,其余灯暗,可按如下编程:亮,其余灯暗,可按如下编程: LSU

50、B0:MOV SBUF,#0FH; #00001111B JNB TI, CLR TI MOV SBUF,#055H;#010110101H JNB TI, CLR TI RET多位并口输入多位并口输入基本应用基本应用 例例:一串行口作输入输出扩展口使用。一串行口作输入输出扩展口使用。 要求如图要求如图1-27所示,利用表格的方式建立一所示,利用表格的方式建立一组数据,利用串行口发送至组数据,利用串行口发送至8位串入并出的位串入并出的74LS164,这组数据将使这组数据将使74LS164的的8个个LED左左移移2次,右移次,右移2次,闪烁次,闪烁2次。次。2009年年3月月30日星期一日星期一

51、(二二)异步通讯程序举例异步通讯程序举例例例:一般异步串行通信的应用程序。一般异步串行通信的应用程序。要求要求:由串行口发送接收带偶位校验位的由串行口发送接收带偶位校验位的ASCII码数码数据块。据块。ASCII码数据块存放于发送机片内码数据块存放于发送机片内RAM的的30H-3FH单元,欲送往接收机片内单元,欲送往接收机片内RAM的的40H-4FH单元;单片机采用单元;单片机采用12MHz晶振;串行口工作子方式晶振;串行口工作子方式1;定时器计数器定时器计数器T1用作波特率发生器,工作于方式用作波特率发生器,工作于方式2, PCON中的中的SMOD位为位为0;发送的波特率要求为;发送的波特率

52、要求为1200.2010-11-3例:单片机单工传送数据电路如图例:单片机单工传送数据电路如图3-11所示,所示,由由8751读入读入P1拨码开关的数据载入拨码开关的数据载入SBUF然后然后经由经由TXD将数据传给将数据传给8751-R (RXD)。当。当8751-R接收的数据存入接收的数据存入 SUFB时,再由时,再由SBUF载入载入 累加器,并输出至累加器,并输出至P使与其相对应的使与其相对应的LED亮亮双机通信双机通信 下面以下面以A机发送,机发送,B机接收为例,说明发送和机接收为例,说明发送和接收程序的设计方法接收程序的设计方法 设设A、B两机均选用两机均选用11 059 MHz的振荡

53、的振荡频率,波特率为频率,波特率为1200bits,定时器,定时器Tl选用工选用工作方式作方式2,SMOD位为位为0,则计数初值为:,则计数初值为: XE8H,所以,所以T1的初值为的初值为TH1TL1E8H双机通信双机通信利用利用8051的串行口进行两个的串行口进行两个8051之间的串行异步通信,之间的串行异步通信, 通信双方可以遵循如下约定:通信双方可以遵循如下约定: 1)设设A机为发送者,机为发送者,B机为接收者。机为接收者。 2)当)当A机开始发送时,先发一个机开始发送时,先发一个“AA”信号,信号,B机收到后回答一个机收到后回答一个“ ”,表示同意接收。,表示同意接收。 3)当当A机

54、收到机收到 BB”后,开始发送数据,每发后,开始发送数据,每发送一次求一次送一次求一次“校验和校验和”。“校验和校验和”是每发送的是每发送的一个字节数据(或命令代码)都累加到一个单元中一个字节数据(或命令代码)都累加到一个单元中去,累加过程中发生多次向高位进位(丢失),最去,累加过程中发生多次向高位进位(丢失),最后在累加单元中所剩余的结果。假定数据块长度为后在累加单元中所剩余的结果。假定数据块长度为20个字节,数据缓冲区起始地址为个字节,数据缓冲区起始地址为30H,数据块发,数据块发完后再发送完后再发送“校验和校验和”。 4)B机接收数据并将其转存到数据缓冲区,机接收数据并将其转存到数据缓冲

55、区,起始地址也为起始地址也为30H,每接收一次也计算一次,每接收一次也计算一次“校验和校验和”,当接收完一个数据块后,再接,当接收完一个数据块后,再接收从收从A机发来的机发来的“校验和校验和”,并将它与,并将它与B机求机求出的出的“校验和校验和”进行比较。若二者相等,说进行比较。若二者相等,说明接收正确,明接收正确,B机回答一个机回答一个“”;若两者;若两者不等,说明接收不正确,不等,说明接收不正确,B机回答一个机回答一个“FF”,请求重发。请求重发。 5) A机收到一机收到一+W的回答后,结束发送。若的回答后,结束发送。若收到的答复非零,则将数据重发一次。收到的答复非零,则将数据重发一次。 6)双方均采用串行口方式)双方均采用串行口方式1进行串行通信。进行串行通信。与与IBM PC 计算机的串行通信计算机的串行通信 IBM PC 是国内目前应用最广泛的微机,在与是国内目前应用最广泛的微机,在与单片机串行接口后,可以方便地构成主从分单片机串行接口后,可以方便地构成主从分布式多微机系统。从机作数据采集或实时控布式多微机系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论