首页 百科知识 串行接口工作方式

串行接口工作方式

时间:2022-10-22 百科知识 版权反馈
【摘要】:本章主要学习AT89S52单片机中串行接口的基本结构和基本原理,了解波特率的计算方法,掌握AT89S52单片机串行接口控制方法,能根据系统需要选择合理的工作方式,完成串行数据的传输。本章的重要知识点有串行通信的概述及基本概念,串行接口特殊功能寄存器的设置,串行工作方式及应用,多机通信原理等。

第6章 AT89S52单片机串行接口

【教学目的】

本章主要讲解单片机串行通信原理和串行接口的使用方法,要求学生能够设计简单的串行接口,并能够通过串行接口完成数据传输。

【教学要求】

本章主要学习AT89S52单片机中串行接口的基本结构和基本原理,了解波特率的计算方法,掌握AT89S52单片机串行接口控制方法,能根据系统需要选择合理的工作方式,完成串行数据的传输。

【重点难点】

本章重点是掌握串行通信的基本概念,串行口特殊功能寄存器;难点是串行口特殊功能寄存器设置和单片机多机通信原理的掌握。

【知识要点】

本章的重要知识点有串行通信的概述及基本概念,串行接口特殊功能寄存器的设置,串行工作方式及应用,多机通信原理等。

6.1 串行通信概述

通常把计算机与外界的数据传送称为通信。计算机的通信一般有两种方式:并行通信和串行通信。并行通信使用几条数据线,将数据分段同时进行传输,传输速度快,信息率高,但传送距离较短。在长距离通信中,出于通信线路和中继设备成本的考虑,常常采用串行通信方式,串行通信广泛应用在单片机系统与系统和外围设备之间的数据传输过程中。

6.1.1 并行通信和串行通信

在数据传输时,如果一个数据编码字符的所有各位都同时发送、并排传输,又同时被接收,则将这种传送方式称为并行通信方式。并行通信方式如图6-1所示。

图6-1 并行通信方式

在数据传输时,如果一个数据编码字符的所有各位不是同时发送,而是按一定顺序,一位接着一位在信道中被发送和接收,则将这种传送方式称为串行通信方式。串行通信方式如图6-2所示。

图6-2 串行通信方式

可见,并行方式可一次同时传送N位数据,而串行方式一次只能传送一位。并行传送的线路复杂(需要N根数据线),串行传送的线路简单(只需要1~2根数据线)。并行方式常用于短距离通信,传输的速度快,串行传送主要用于计算机与远程终端之间的数据传送,也很适合于经由公共电话网连接的计算机之间的通信。另外在某些场合,串行接口也可代替并行接口来控制外设,以节省软硬件资源,简化线路。

6.1.2 串行通信的基本方式

串行通信主要用于单片机与外部其他计算机系统和外设之间的数据传输,以形成一个集检测、控制、管理为一体的计算机控制网络。随着单片微机应用范围的不断拓宽,单台仪器仪表或控制器往往会带有不止一个的单片微机,而多个智能仪器仪表或控制器在单片微机应用系统中又常常会构成一个上层由PC机进行集中管理的分布式采集、控制系统。单片微机的通信功能也随之得到发展。

串行通信通常使用3根线完成:地线、发送线和接收线。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。

1.波特率

串行通信的数据是按位进行传送的,一般将机器每秒钟传送的二进制数码的位数称为波特率(在无调制的情况下,波特率精确等于比特率。采用调相技术时,波特率不等于比特率。在这里波特率等于比特率),单位为bps(bit per second),即位/秒,比如1秒钟传送1位,就是1波特。它是串行通信的重要指标,用于说明数据传送的快慢。

串行通信常用的标准波特率为600、1200、2400、4800、9600、19 200等等。假若数据传送速率为120字符/秒,而每一个字符帧已规定为10个数据位,则传输速率为120×10 =1200位/秒,即波特率为1200,每一位数据传送的时间为波特率的倒数:

T=1/1200=0.833ms

2.异步通信和同步通信

在数据通信中,要保证发送的信号在接收端能被正确地接收,必须采用同步技术。常用的同步技术有两种方式,异步通信和同步通信。

(1)异步通信

异步通信是以字符为单位组成字符帧传送的。发送端和接收端可以由各自的时钟来控制发送和接收,这两个时钟彼此独立,不需同步。字符帧由发送端一帧一帧地发送,通过传输线由接收设备一帧一帧地接收。异步通信的双方在通信时,需要约定字符格式和传送速率,只有采用相同的方式,双方才可以通信。在异步通信中,字符间隔不固定,只需字符传送时同步即可。在单片微机中使用的串行通信都是异步方式。每一字符帧由起始位、数据位、奇偶校验位和停止位组成,异步通信的数据格式如图6-3所示。

图6-3 异步通信数据格式

起始位:起始位通常用“0”表示,位于字符帧开头,用于开始接收数据或用来调整时钟。当串口通信没有开始进行数据传送时,始终处于逻辑“1”电平,当接收端检测到连续多个“1”后又检测到一个“0”时,说明发送端开始发送数据,接收端准备接收数据。

数据位:数据位通常包括5~8位数据,紧跟在起始位之后,先发送低位,后发送高位。

奇偶校验位:奇偶校验位用来检验数据传输过程中的正误,通信双方在通信时约定一致的奇偶校验方式,用于校验有限的差错,也可省略。通常位于数据位之后,只占一位。

停止位:停止位通常用“1”表示,便于接收端辨识下一帧数据的起始位。位于字符帧末尾,为逻辑高电平,可以是1位、1.5位或2位,用于标志字符帧的结束。

(2)同步通信

用同步通信方式传输数据块时,将需要传送的字符顺序连接起来组成一个数据块,在数据块前面加上特殊的同步字符作为数据块的起始符号,接收端接收到同步字符后,开始接收数据块,使收/发双方同步。在数据块后面加上校验字符,用于校验通信中的错误。

同步字符是一个或两个8位二进制码,可以采用统一标准格式,也可以由用户自行约定。同步通信的收/发双方必须采用相同的同步字符。同步通信中字符间无间隔,也不用起始位和停止位,因此传送速率高,可以方便地实现某一通信协议要求的帧格式。但硬件复杂,在单片机中一般不使用,同步通信的数据格式如图6-4所示。

图6-4 同步通信数据格式

3.串行通信的制式

串行通信中包含三种制式:单工方式、半双工方式、全双工方式。

(1)单工方式

单向传送数据,通信双方中一方固定为发送端,另一端固定为接收端。只需要一条数据线,其原理如图6-5(a)所示。

(2)半双工方式

半双工方式要求通信的双方均具有发送和接收信息的能力,信道也具有双向传输性能,但是,通信的任何一方都不能同时既发送信息又接收信息,即在指定的时刻,只能沿某一个方向传送信息。其原理如图6-5(b)所示。

(3)全双工方式

数据双向传送,且可以同时发送和接收,需要两条数据线。要求两端的通信设备具有完整和独立的发送、接收功能,其原理如图6-5(c)所示。

图6-5 串行通信制式

6.2 AT89S52单片机串行接口

AT89S52单片机内部的串行接口是全双工的,即它能同时发送和接收数据。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入。串行口还有接收缓冲作用,即从接收寄存器中读出前一个已收到的字节之前就能开始接收第二字节。

6.2.1 AT89S52单片机串行口的结构

AT89S52单片机 P3.0是串行输入线,P3.1是串行输出线,有三个寄存器与串行口相连。PCON寄存器的最高位决定串行信号的速率,SCON决定串行口工作方式和其他功能,串行通信主要进行数据传送和数据转换。串行口的结构如图6-6所示。

图6-6 串行口的结构

1.波特率发生器

主要由T1、T2及内部的一些控制开关和分频器所组成。它提供串行口的时钟信号TXCLOCK(发送时钟)和 RXCLOCK(接收时钟)。相应的控制波特率发生器的特殊功能寄存器有TMOD、TCON、T2CON、PCON、TL1、TH1、TL2、TH2等。

2.串行数据缓冲寄存器SBUF

串行数据缓冲寄存器SBUF包括接收缓冲器SBUF和发送缓冲器SBUF,以便AT89S52单片机能以全双工方式进行通信。两个串行口数据缓冲器(实际上是两个寄存器)通过特殊功能寄存器SBUF来访问。写入SBUF的数据储存在发送缓冲器,用于串行发送;从SBUF读出的数据来自接收缓冲器。两个缓冲器在物理上是隔离的,共用一个地址99H(特殊功能寄存器SBUF的地址)。串行发送时,从片内总线向发送缓冲器SBUF写入数据;串行接收时,从接收缓冲器SBUF中读出数据。

MOV SBUF,A   ;启动一次数据发送,可向SBUF再发送下一个数据

MOV A,SBUF   ;完成一次数据接收,SBUF可再接收下一个数据

3.串行数据输入/输出引脚

接收方式下,串行数据从RXD(P3.0)引脚输入。串行口内部在接收缓冲器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,可以避免在数据接收过程中出现帧重叠错误,即在下一帧数据来时,前一帧数据还没有读走。

在发送方式下,串行数据通过TXD(P3.1)引脚输出。

4.串行口控制逻辑

发送控制器在波特率作用下,将发送SBUF中的数据由并行转换成串行,一位位地传输到发送端口;接收控制器在波特率作用下,将接收端口的数据由串行转换成并行,存入接收SBUF。

串行口控制逻辑根据来自波特率发生器的时钟信号——TXCLOCK(发送时钟)和RXCLOCK(接收时钟)接收/发送数据。无论是否采用中断方式工作,每接收/发送一个数据都必须用软件对RI/TI清0,以备下一次收/发。

6.2.2 串行口控制寄存器SCON

特殊功能寄存器SCON用于定义串行口的操作方式和控制它的某些功能,字节地址为98H。SCON是可以位寻址的特殊功能寄存器,位地址为98H~9FH。特殊功能寄存器SCON各位的意义如表6-1所示。特殊功能寄存器SCON用于定义串行口的操作方式和控制它的某些功能。其字节地址为98H。寄存器中各位内容如下:

表6-1 SCON寄存器各位定义

SM0,SM1:串行口操作方式选择位,两个选择位对应于四种状态,串行口能以四种方式工作,见表6-2。

表6-2 串行口方式选择

SM2:串行口多机通信控制位。SM2=1:如果接收的一帧数据的第9位为1,且原RI =0,则硬件置RI=1,接收数据有效;如果第9位为0,则RI不置1,接收数据无效。SM2=0:只要接收完一帧数据,不管第9位为1还是0,硬件都置RI=1,接收数据有效。多机通信时,SM2必须置1;双机通信,SM2通常置0。REN:允许串行接收位。由软件置位以允许接收,由软件清0来禁止接收。

REN:串行口接收允许控制位。REN = 1 表示允许接收;REN = 0 禁止接收。

TB8:方式2和方式3中要发送的第9位数据。在通信协议中,常规定TB8作为奇偶校验位。多机通信中,TB8用来表示串行帧是地址帧还是数据帧。该位通常用软件进行置位或者清除。

RB8:是方式2和3中已接收到的第9位数据。在方式1中,若SM2=0,RB8是接收到的停止位。在方式0中,不使用RB8位。

TI:发送中断标志。在方式0中当串行发送完第8位数据时由硬件置位。在其他方式中,则在发送停止位的开始时由硬件置位。当TI=1时,申请中断,CPU响应中断后,发送下一帧数据。在任何方式中,该位都必须由软件清0。

RI:接收中断标志。在方式0中串行接收到第8位结束时由硬件置位。在其他方式中,在接收到停止位的中间时刻由硬件置位。RI=1时申请中断,要求CPU取走数据。但在方式1中,当SM2=1时,若未接收到有效的停止位,则不会对RI置位。在任何工作方式中,该位都必须由软件清0。

6.2.3 电源控制寄存器PCON

电源控制寄存器PCON仅有几位有定义,最高位SMOD与串行口控制有关,其他位与掉电方式有关。寄存器PCON的地址为87H,只能字节寻址,没有位寻址功能。寄存器中各位内容如表6-3所示。

表6-3 PCON寄存器各位定义

SMOD:波特率加倍控制位,SMOD=1,波特率加倍;SMOD=0,则不加倍。复位时的SMOD值为0。可用MOV PCON,#80H或MOV 87H,#80H指令使该位置1。

GF1、GF0:用户可自行定义使用的通用标志位。

PD:掉电方式控制位。

IDL:待机方式(空闲方式)控制位。

6.3 串行接口工作方式

AT89S52单片机的串行口有方式0、方式1、方式2、方式3四种工作方式。

6.3.1 串行口方式0——同步移位寄存器方式

串行口的工作方式0为移位寄存器输入输出方式,可外接移位寄存器,以扩展I/O口,也可外接同步输入输出设备。方式0发送或接收完8位数据后由硬件置位发送中断标志TI或接收中断标志RI。但CPU响应中断请求转入中断服务程序时并不清TI或RI。因此,中断标志TI或RI必须由用户在程序中清0(CLR TI或CLR RI指令)。以方式0工作时SM2位(多机通信制位)必须为“0”。

1.方式0发送

串行数据从RXD引脚输出,TXD引脚输出移位脉冲。CPU将数据写入发送寄存器(SBUF)时,立即启动发送,将8位数据以fosc/12的固定波特率从RXD输出,低位在前,高位在后,直至最高位(D7位)数字移出后,停止发送数据和移位时钟脉冲。方式0的发送时序如图6-7所示。

图6-7 方式0的发送时序

发送完一帧数据后,发送中断标志TI由硬件置位,就申请中断。若CPU响应中断,则从0023H单元开始执行串行口中断服务程序,通过如下程序实现:

MOV SCON,#00H  ;串行口方式0

MOV SBUF,A    ;将数据送出

JNB TI,$     ;等待数据发送完毕

2.方式0接收

方式0接收前,务必先置位REN=1,允许接收数据。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当RI=0和REN=1同时满足时,就会启动一次接收过程。接收器以fosc/12的固定波特率接收TXD端输入的数据。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI,向CPU申请中断,方式0的接收时序如图6-8所示。

图6-8 方式0的接收时序

CPU响应中断后,用软件使RI清0,使移位寄存器开始接收下一帧数据,CPU执行读SBUF指令,数据经由内部总线进入CPU。

MOV SCON,#00H  ;串行口方式0

MOV SBUF,A    ;将数据送出

JNB TI,$     ;等待数据发送完毕

6.3.2 方式1——8位UART方式

当SM0=0、SM1=l时,串行口选择方式1,单片机工作于8位数据异步通信方式(UART)。在方式1时,传送一帧信息为10位,即1位起始位(0),8位数据位(低位在先)和1位停止位(1)。数据传输波特率由定时器/计数器T1和T2的溢出决定,可用程序设定。当T2CON寄存器中的RCLK和TCLK置位时,采用T2作为串行口接收和发送的波特率发生器。而当RCLK和TCLK都为零时,采用T1作为串行口接收和发送的波特率发生器。由TXD(P3.1)引脚发送数据,由RXD(P3.0)引脚接收数据。

1.方式1发送

当CPU执行MOV A,SBUF指令将数据写入发送缓冲SBUF时,就启动发送。先把起始位输出到TXD,然后把移位寄存器的输出位送到TXD。接着发出第一个移位脉冲(SHIFT),使数据右移一位,并从左端补入0。此后数据将逐位由TXD端送出,而其左面不断补入0。发送完一帧数据后,就由硬件置位TI。方式1的发送时序如图6-9所示。

图6-9 方式1的发送时序

2.方式1接收

当REN=1且清除RI后,若在RXD(P3.1)引脚上检测到一个1到0的跳变,立即启动一次接收。同时,复位16分频计数器,使输入位的边沿与时钟对齐,并将1FFH(即9个l)写入接收移位寄存器。接收控制器以16倍波特率的速率继续对RXD(P3.l)引脚进行检测,计数器的16个状态把1位时间等分成16份,并在第7、8、9个计数状态时采样RXD的电平,当接收到的三个值中至少有两个值相同时,这两个相同的值才被确认接收,即采用3取2的多数表决法,当两次或两次以上的采样值相同时,采样值予以接受,可抑制噪声。

如果在第1个时钟周期中接收到的不是0(起始位),说明它不是一帧数据的起始位,则复位接收电路,继续检测RXD(P3.1)引脚上l到0的跳变。如果接收到的是起始位,就将其移入接收移位寄存器,然后接收该帧的其他位。一帧信息也是10位,即1位起始位,8位数据位(先低位),1位停止位。

接收到的位从右边移入,原来写入的1从左边移出,当起始位移到最左边时,接收控制器将控制进行最后一次移位,把接收到的9位数据送入接收数据缓冲器SBUF和RB8,并置位RI。进行最后一次移位时必须满足两个条件:

(1)RI=0,上一帧数据接收完成时发出的中断请求已被响应,SBUF中数据已被取走。

(2)SM2=0或接收到的停止位为1。

若以上两个条件中有一个不满足,将不可恢复地丢失接收到的这一帧信息;如果满足上述两个条件,则数据位装入SBUF,停止位装入RB8且置位RI。中断标志RI必须由用户在中断服务程序中清0。方式1的接收时序如图6-10所示。

图6-10 方式1的接收时序

6.3.3 方式2和方式3——9位数据异步通信方式

当SM0=1、SM1=0时,串行口选择方式2;当SM1=1、SM0=1时,串行口选择方式3。方式2和方式3的工作原理相似,定义为9位的异步通信接口,发送(通过TXD)和接收(通过RXD)一帧信息都是11位,1位起始位(0)、8位数据位(低位在先)、1位可编程位(即第9位数据)和1位停止位(1)。

方式2和方式3唯一的差别是方式2的波特率是固定的,方式3的波特率是可变的。均利用定时器1或定时器2作波特率发生器,与方式1的波特率发生相同。

1.方式2和方式3发送

方式2和方式3发送的串行数据由TXD端输出,第9位附加数据来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通信中地址/数据信息的标志位,也可以作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。把一个起始位(0)放到TXD端,经过一位时间后,数据由移位寄存器送到TXD端,通过第一位数据,出现第一个移位脉冲。在第一次移位时,把一个停止位“1”由控制器的停止位送入移位寄存器的第9位。此后,每次移位时,把0送入第9位。因此,当TB8的内容移到位寄存器的输出位置时,其左面一位是停止位“1”,再往左的所有位全为“0”。这种状态由零检测器检测到后,就通知发送控制器作最后一次移位,然后置TI=1,请求中断。方式2和方式3的发送时序如图6-11所示。

图6-11 方式2和方式3的发送时序

2.方式2和方式3接收

REN=1,允许接收。串行口采样RXD引脚,接收过程由RXD端检测到负跳变时开始。当检测到负跳变,16分频计数器就立即复位,同时把1FFH写入输入移位寄存器,计数器的16个状态把一位时间等分成16份,在每一位的第7、8、9个状态时,位检测器对RXD端的值采样,如果所接收到的起始位不是0,则复位接收电路等待另一个负跳变的来到,若起始位有效,则起始位移入输入移位寄存器,并开始接收这一帧的其余位。当起始位0移到最左面时,通知接收控制器进行最后一次移位。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失,且不置位RI。再过一位时间后,不管上述条件是否满足,接收电路自行复位,并重新检测RXD上从1到0的跳变。

方式2和方式3与方式1在接收上的不同,方式2和方式3装入RB8的是第9位数据,而不是停止位,方式1中装入RB8的是停止位。方式2和方式3的接收时序如图6-12所示。

图6-12 方式2和方式3的接收时序

6.3.4 波特率的计算

波特率反映串行口传输数据的速率,它取决于振荡频率、PCON寄存器的SCON位以及定时器的设定。在串行通信中,收发双方的数据传送率(波特率)要遵循一定的约定。AT89S52串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器的溢出率控制。

方式0为固定波特率:波特率=fosc/12

方式2可选两种波特率:波特率=(2SMOD/64)×fosc

当SMOD=1时,波特率=fosc/32;

当SMOD=0时,波特率=fosc/64。

方式1、3为可变波特率,用T1作波特率发生器。

波特率=(2SMOD/32)×T1溢出率,T1溢出率为T1溢出一次所需时间的倒数。

其中:X是定时器初值

常用波特率和T1初值如表6-4所示。

表6-4 由T1产生的常用波特率值

例:计算波特率。要求用T1工作于方式2来产生波特率2400,已知晶振频率=12MHz。解:求出T1的初值:

6.3.5 多机通信

在集散式分布系统中,往往采用一台主机和多台从机。其中主机发送的信息可以被各个从机接收,而各从机的信息只能被主机接收,从机与从机之间不能互相直接通信。

在串行口控制寄存器SCON中,设有多处理机通信位SM2。当串行口以方式2或方式3接收时,若SM2=1,只有当接收到的第9位数据(RB8)为1时,才将数据送入接收缓冲器SBUF,并使RI置1,申请中断,否则数据将丢弃;若SM2=0,则无论第9位数据RB8是1还是0,都能将数据装入SBUF,并且发送中断。利用这一特性,便可实现主机与多个从机之间的串行通信。图6-13为多机通信连线示意图,系统中左边为主机,其余的为1~n号从机,并保证每台从机在系统中的编号是唯一的。

图6-13 多处理机通信连接

系统初始化时,将所有从机中的SM2位均设置为1,并处于允许串行口中断接收状态。主机欲与某从机通信,先向所有从机发出所选从机的地址,从机地址符合后,接着才发送命令或数据。在主机发地址时,置第9位数据(RB8)为1,表示主机发送的是地址帧;当主机呼叫某从机联络正确后,主机发送命令或数据帧时,将第9位数据(RB8)清0。各从机由于SM2置1,将响应主机发来的第9位数据(RB8)为1的地址信息。从机响应中断后,若从机的地址与主机点名的地址不相同,则该从机将继续维持SM2为l,从而拒绝接收主机后面发来的命令或数据信息,不会产生中断,而等待主机的下一次点名。若从机的地址与主机点名的地址相同,该从机将本机的SM2清0,继续接收主机发来的命令或数据,响应中断。这样,保证实现主机与从机间一对一的通信。

6.4 串行接口编程和应用

例1:利用串行口工作方式0扩展出8位并行I/O口,其中74LS164是串入并出芯片,驱动共阳LED数码管显示0~9。

解:LED数码管应用较为广泛,其内部为8个发光二极管,排列为8字形,同时加一位表示小数点,通过这8个发光二极管的合理组合,可以构成不同的数字字形和简单的字母字形,同时数码管还有一个位选信号。即8个数码管的公共端,数码管分为共阳和共阴两种,也就是说高电平选中或低电平选中。基本原理如图6-14所示。

共阳LED数码管,公共端接高电平,数据位置为低电平,要显示“0”,a、b、c、d、e、f为“0”电平,g、h为“1”电平就可以了,因此只需要扫描0C0H字符即可。同理,可以作出1~9等其他几个数据的编码。

图6-14 LED编码原理图

显示0~9数字的子程序如下所示:

DSPLY:MOV DPTR,#TABLE

    MOVC A,@A+DPTR

    MOV SBUF,A

    JNB TI,$

    CLR TI

    RET

TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;0~9的数字编码

例2:发送程序。将片内RAM 50H起始单元的16个数由串行口发送。要求发送波特率为系统时钟的32分频,并进行奇偶校验。

解:根据题目要求,程序清单如下:

例3:接收程序。将接收的16个字节数据送入片内RAM40H~4FH单元中。设串行口以方式3工作,波特率为2400。定时器/计数器1用作波特率发生器,工作于方式2,SMOD=0,计数常数为F4H。

解:根据要求设置相关的参数,程序清单如下:

例4:双机通信。如图6-15所示,将两块CS-III单片机实验板相连接,设置波特率为9600,连接发送机和接收机的TXD和RXD口,使发送机的TXD口与接收机的RXD口相连,接收机的RXD口与发送机的TXD口相连,并且连接两机的接地端。

图6-15 双机通信系统

解:串口通信应用一般需要正确设置串口的工作方式,计算波特率,完成波特率设置的初始化和串行口初始化,以及相关的寄存器设置。串行通信的流程图如图6-16(a)所示。

(1)发送程序。设置串口工作方式3,T/C2波特率为9600。发送程序的流程如图6-16 (b)所示。

图6-16 程序设计流程图

发送程序清单:

【本章小结】

单片机的串口主要用于单片机和外围接口的数据传送和通信,在计算机控制系统中具有广泛的应用空间。在学习和掌握单片机的串行接口和工作方式后,能够应用单片机串口相关知识进行数据传送和数据通信,从而深刻理解单片机串口的相关概念和知识。

6.5 习题

1. 试述串行通信与并行通信的优缺点和用途分别是什么?什么是异步通信?它有几种帧格式?

2. 简述串行口接收和发送数据的过程。

3. 串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?

4. 某8031串行口,传送数据的帧格式为1个起始位(0),7个数据位,1个偶校验位和1个停止位(1)。当该串行口每分钟传送1800个字符时,试计算出波特率。

5. 若晶体振荡器为11.0592MHz,串行口工作于方式1,波特率为4800bps,写出用T1作为波特率发生器的方式控制字和计数初值。

6. 为什么定时器/计数器T1用作串行口波特率发生器时,采用方式2?若已知时钟频率、通信波特率,如何计算其初值?

7. 简述利用串行口进行多机通信的原理。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈