资源描述
,第二级,第三级,第四级,第五级,第,9,章,串行接口及串行通信技术,第,6,章 串行接口及串行通信技术,6.1,串行通信基础知识,6.2 AT89C51,的串行接口,6.3 AT89C51,串行接口的应用与编程,习题与思考题,6.1,串行通信基础知识,一、,串行通信基本概念,1.,并行通信和串行通信,1,),并行通信,并行通信是指构成信息的二进制字符的各位数据采用多条数据线同时传送的通信方法,如图,6.1,所示。,特点:传输控制简单、速度快。但距离长时传输线多,成本高。,2,),串行通信,串行通信是指构成信息的二进制字符的各位数据一位一位顺序地传送的通信方式,如图,6.2,所示。,特点:传输控制复杂、速度慢,但传输线少,成本低。,图,6.1,并行通信示意图,图,6.2,串行通信示意图,2.,异步通信和同步通信,串行通信又分为两种基本通信方式,即异步通信和同步通信。,1,),异步通信,在异步通信中,被传送的信息通常是一个字符代码或一个字节数据,它们都以规定的相同传送格式,(,字符帧格式,),一帧一帧地发送或接收。,字符帧格式由四部分组成:起始位,数据位,奇偶校验位和停止位,如图,6.3,所示。下面介绍各部分的功能。,图,6.3,异步通信帧格式,(1),起始位:在没有数据传送时,通信线上处于逻辑“,1”,状态。,(2),数据位:在起始位之后,发送端发出,(,接收端接收,),的是数据位,数据的位数没有严格限制,如,5,位、,6,位、,7,位或,8,位等。由低位到高位逐位传送。,(3),奇偶校验位:数据位发送完,(,接收完,),之后,可发送奇偶校验位,它只占帧格式的一位,用于传送数据的有限差错检测或表示数据的一种性质,是发送和接收双方预先约定好的一种检验,(,检错,),方式。,(4),停止位:字符帧格式的最后部分为停止位,逻辑“,1”,电平有效,位数可以是,1,位、,1/2,位或,2,位。表示一个字符帧信息的结束,也为发送下一个字符帧信息做好准备。,异步通信的特点:不要收发双方时钟严格一致,易于实现,但每个字符要附加,23,位的起止位,各帧之间还有间隔,因此传输效率不高。,2,)同步通信,同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。这里的信息帧和异步通信的字符帧不同,通常有若干个数据字符,如图,6.4,所示。其格式由同步字符、数据字符和校验字符,CRC,三部分组成。在同步通信中,同步字符可以采用统一的标准格式,也可以由用户约定。,同步通信时要建立发送方时钟对接收方时钟的直接控制,使数据传送完全同步。其特点是传输速率高,但硬件复杂。,同步,字符,数据,字符,1,数据,字符,2,数据字符,n-1,数据,字符,n,校验,字符,校验,字符,图,6.4,同步通信数据传送格式,3.,串行通信的制式,1,)单工,(Half duplex),制式,在单工方式下,通信线的,A,端只有发送器,,B,端只有接收器,信息数据只能单方向传送,即只能由,A,端传送到,B,端而不能反传。如图,6.5,所示。,图,6.5,单工方式,2,)半双工,( Half duplex),制式,半双工方式中,通信线路两端的设备都有一个发送器和一个接收器,如图,6.6,所示。数据可双方向传送但不能同时传送,即,A,端送,B,端收或,B,端送,A,端收,,A,、,B,两端的发送,/,接收只能通过半双工通信协议切换交替工作。,图,6.6,半双工方式,3,)全双工,(Full duplex),制式,在全双工方式下,通信线路,A,、,B,两端都有发送器和接收器,,A,、,B,之间有两个独立通信的回路,两端数据不是交替发送和接收,而是同时发送和接收。因此通信效率比前两种要高。该方式下所需的传输线至少要有三条,一条用于发送,一条用于接收,一条用于公用信号地,如图,6.7,所示。,图,6.7,全双工方式,4.,信号的调制与解调,计算机的通信要求传送的是数字信号。在远程数据通信时,通常要借用现存的公用电话网。但是电话网是为,300 - 3 400 Hz,的音频模拟信号设计的,对二进制数据的传输是不合适的。为此在发送时需要对二进制数据进行调制,使之适合在电话网上传输。在接收时,需要进行解调以将模拟信号还原成数字信号。,1,)调制器,把数字信号转换成模拟信号,然后送到通信线路上去。,2,)解调器,把从通信线路上收到的模拟信号转换成数字信号。,由于通信是双向的,调制器和解调器合并在一个装置中,这就是调制解调器,MODEM,,如图,6.8,所示。由图可见,调制器和解调器是进行数据通信所需的设备,因此把它叫做数据通信设备(,DCE,)。通信线路是电话线,也可以是专用线。,图,6.8,调制解调通信图,5.,串行通信数据的校验,在通信过程中往往要对数据传送的正确与否进行校验。以保证准确无误的传输数据。常用的校验方法有奇偶校验及循环冗余码校验。,1,),奇偶校验,奇偶校验的特点是按字符校验,即在数据发送时,在每一个字符的最高位之后都附加一个奇偶校验位“,1”,或“,0”,,使被传送字符,(,包括奇偶校验位,),中含“,1”,的位数都为偶数,(,偶校验,),或都为奇数,(,奇校验,),。,例:当约定为奇校验时,数据中“,1”,的个数与校验位“,1”,的个数之和应为奇数;当约定为偶校验时,数据中“,1”,的个数与校验位“,1”,的个数之和应为偶数。接收方与发送方的校验装置和方式应一致。接收字符时,对“,1”,的个数进行校验,若二者不一致,则说明传输数据过程中出现了差错。,2,)和校验,所谓和校验是发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差错。,6.,传输速率与传输距离,1,) 波特率,波特率(也叫比特率),即数据传输的速率。它表示每秒钟传送二进制代码的位数。其单位是,b /s,。,在串行通信中,发送设备和接收设备之间除了采用相同的字符帧格式,(,异步通信,),或相同的同步字符,(,同步通信,),来协调同步工作外,两者之间发送数据的速度和接收数据的速度也必须相同,这样才能保证被传送数据的成功传送。,波特率是串行通信的重要指标,对数据的成功传送至关重要。,举例:设数据的传送率是,240,字符,/s,,而每个字符格式包含,10 bit(1,个起始位、,1,个停止位、,8,个数据位,),,这时传送的波特率是:,10b240,-1,= 2400 b/s,标准波特率为:,110bps,、,300bps,、,600bps,、,1200bps,、,2400bps,、,9600kbps,19.2kbps,、,56kbps,等。,2,)传输距离与传输速率的关系,传输距离与波特率及传输线的电气特性有关。通常传输距离随波特率的增加而减小。,当传输线使用每,0.3 m,(约,1,英尺)有,50 pF,电容的非平衡屏蔽双绞线时,传输距离是随波特率增加而减小。当波特率超过,1 000 bit/s,时,最大传输距离迅速下降,如,9600 bit/s,时最大距离下降到只有,76 m,(约,250,英尺)。,二、串行通信的标准接口,RS-232C,通信接口是一种标准的串行接口,它定义了数据终端设备(,DTE,)与数据通信设备(,DCE,)之间的物理接口标准。普遍用于计算机之间及计算机与外设之间的串行通信。由于它符合,EIA,(电子工业协会)规格要求,在国际上得到了广泛的应用。,RS-232C,接口具有如下,特点:信号线少,,在某些场合,完成双工通信只需使用几根线就即可;,有多种可供选择的信息传输速率,:,110,、,150,、,300,、,600,、,1 200,、,2 400,、,4 800,、,9 600,和,19 200 bps,。,RS-232C,接口特性包括电气特性、机械特性、功能特性和过程特性四个方面内容。,1.,机械特性,RS-232C,接口,规定使用,25,针连接器,,称为,DB-25,插头或插座。如图,6.9,所示。,RS-232C,接口,对标准的,25,针接口定义了,22,条可以与外界连接的信号线,,,并对它们的功能作了具体的规定。,实际用户并不一定用到,RS- 232C,标准的全部信号线,,常常使用,9,针非标准连接器替代,25,针连接器,称为,DB-9,。,DTE,:数据终端设备,(,如个入计算机,),DCE,:数据电路通信设备,(,如调制解调器,),1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,方向 名称,第,2,路发送数据,发送时钟,第,2,路接收数据,接收时钟,未用,第,2,路请求发送,数据终端就绪,数据信号检测,振铃指示,数据信号速率选择,发送时钟,未用,未用,保护地,N.A,发送数据 到,DCE,接收数据 到,DCE,请求发送 到,DCE,允许发送 到,DTE,数据置位就绪 到,DTE,信号地,N.A,载波检测 到,DTE,留作调试用,第,2,路载波检测 到,DTE,第,2,路允许发送 到,DTE,名称 方向,到,DCE,到,DTE,到,DTE,到,DTE,到,DCE,到,DCE,到,DTE,到,DTE,到,DCE,到,DCE,图,6.9,RS-232C,引脚图,2.,功能特性,RS-232C,接口的主要信号线定义如表,6-1,。,3.,电气特性,RS-232C,的每一个引脚的信号性质和电平均由标准规定,采用,负逻辑电平,,如:,1),规定,DC,(,-3 -15 V,)为逻辑,1,DC(+3 +15 V),为逻辑,0,。,(,简称,EIA,电平,),2,)其逻辑电平与通常的,TTL,和,MOS,电平(用,0V0.8V,表示,0,2V+5V,表示“,1”,)不兼容,。因此为了实现,TTL,或,MOS,电路的连接,要外加电路(如,MAX232,)实现电平转换。,由于,RS - 232C,发送端和接收端之间的信号采用多芯信号线,而多芯信号线的总负载电容不能超过,2 500 pF,,所以,RS-232C,的,信号传输距离仅为几十米,传输速率小于,20kbps,。,4.,过程特性,过程特性,规定了信号之间的时序关系,以便正确地接收和发送数据,。如果通信双方均具备,RS-232C,接口,则二者可以直接连接,不必考虑电平转换问题。 但是,对于单片机与计算机通过,RS-232C,的连接,必须考虑电平转换问题,,因为,MCS-51,系列单片机串行口不是标准,RS-232C,接口 。,远程,RS - 232C,通信需要调制解调器,如图,6.10,所示。近程通信,RS-232C(,通信距离,15 m,内,),可以不使用调制解调器,其连接方法可有以下几种,如图,6.11,所示。,图,6.10,远程,RS-232C,通信连接,图,6.11,近程,RS-232C,通信连接,5. RS-232C,电平与,TTL,电平转换驱动电路,单片机与计算机通过,RS-232C,的连接,必须考虑电平转换问题。早期常用的电平转换芯片为,MC1488,、,MC1489,。近年来多采用片内带有自升压电路的芯片。如,MAXM232,,它仅需,+5V,电源,内置电子升压泵将,+5V,转换成,-10V+10V,。该芯片内含,2,个发送器,,2,个接收器,且与,TTL/CMOS,电平兼容,使用非常方便。,6.,采用,RS-232C,接口存在的问题,1,)传输距离短、速率低,RS-232C,标准受电容允许值的约束,传输距离一般不超过,15,米。最高传输速率为,20bps,。,2,)有电平偏移,RS-232C,接口收发双方共地的情况下,当通信距离较远时,两端的地电位差别较大,信号地上会有较大的地电流并产生压降,一方输出的逻辑电平到达对方时,其逻辑电平可能偏移较大,严重时会发生逻辑错误。,3,)抗干扰能力差,RS-232C,采用单端输入输出,传输过程中的干扰和噪声会混在正常的信号中。为了提高信噪比,,RS-232C,标准不得不采用较大的电压摆幅。,针对,RS-232C,总线标准存在的问题,,EIA,协会制定了新的串行通信标准,RS-422A,和,RS-485,。它们是平衡型电压数字接口电路的电气标准,这些标准改善了串行通信的传输特性。,6.2 AT89C51,的串行接口,一、,串行接口的结构及功能,AT89C51,串行口的结构框图如图,6.12,所示,主要由发送器、接收器和串行控制寄存器组成。,图,6.12 AT89C51,串行口结构框图,图中有,两个物理上独立的接收、发送缓冲器,SBUF,,它们占用同一地址,99H,,可同时发送、接收数据。发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。,接收器主要由接收缓冲寄存器,SBUF,,接收移位寄存器和接收控制器组成。接收器是双缓冲结构,在前一个字节被从接收缓冲器读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是在第二个字节接收完毕而前一个字节,CPU,未读取时,会丢失前一个字节的内容。,发送器主要由发送缓冲寄存器,SBUF,和发送控制器组成。对于发送缓冲器,因为发送时,CPU,是主动的,不会产生重叠错误。,二、,串行口控制寄存器,串行口控制寄存器,SCON,用于设置串行口的工作方式、监视串行口工作状态、发送与接收的状态控制等。它是一个既可字节寻址又可位寻址的特殊功能寄存器。其格式如图,6.13,所示。,图,6.13,控制寄存器,SCON,的格式,位名称,位号,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,7,6,5,4,3,2,1,0,SCON,寄存器各位的功能如下:,(1) SM0,、,SM1,:串行口工作方式选择位,可构成四种工作方式,如表,6-2,所示。,(2) SM2,:在方式,2,和方式,3,中多机通信的控制位。,(3) REN,:串行接收允许位。由软件置,REN = 1,,则启动串行口接收数据;若软件置,REN = 0,,则禁止接收。,(4) TB8,:在方式,2,或方式,3,中,是将要发送的第九位数据,由软件置位或清零,它可作为数据奇偶校验位,也可在多机通信中作为地址帧或数据帧的标志位使用。,表,6-2,串行口工作方式选择,SM0 SM1,工作方式,功能,波特率,0 0,0 1,1 0,1 1,方式,0,方式,1,方式,2,方式,3,移位寄存器,10,位异步收发,11,位异步收发,11,位异步收发,fosc/12,可变,fosc/6,或,fosc/32,可变,(5) RB8,:在方式,2,或方式,3,中,是已接收到的第九位数据,可作为奇偶校验位。,(6) TI,:发送中断标志位。在方式,0,当串行发送第,8,位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使,TI,置,1,,向,CPU,发中断申请。在中断服务程序中,必须用软件将其清,0,,取消此中断申请。,(7) RI,:接收中断标志位。方式,0,中,在接收完第,8,位数据时由硬件置位。在方式,0,当串行接收第,8,位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使,RI,置,1,,向,CPU,发中断申请。也必须在中断服务程序中,用软件将其清,0,,取消此中断申请,(8) SMOD,:,为波特率选择位,。电源控制寄存器,PCON,中的第八位也与串行口有关,如图,6.14,所示。当,SMOD=1,时,波特率提高一倍,复位时,,SMOD=0,。,图,6.14,电源控制寄存器,PCON,的格式,位号,7,6,5,4,3,2,1,0,位名称,SMOD,三、 串行通信的工作方式,1,工作方式,0,在方式,0,下,串行口是作为,同步移位寄存器使用的,。其,波特率固定为单片机振荡频率,(fosc),的,1/12,,,串行传送数据,8,位为一帧,(,没有起始、停止、奇偶校验位,),。,数据由,RXD,端输出或输入,,低位在前,高位在后。,TXD,端输出同步移位脉冲,,可以作为外部扩展的移位寄存器的移位时钟,因而串行口方式,0,常用于扩展外部并行,I/O,口。,1,)工作原理,(,1,)发送(输出),执行指令(如,MOV SBUF, A,),就启动发送。,在发送过程中由,RXD,端将写入,SBUF,寄存器中的,数据依照从低位到高位的次序按位送出,,同时由,TXD,端输出移位时钟脉冲。,一个字节的,数据发送完毕,,串行口自动停止发送数据和移位时钟脉冲,,并置位,TI,申请中断。,TI,必须由软件清零。以便下一次传送。,从写,SBUF,到,TI,置位,相隔,9,个机器周期,完成了发送,1,帧数据的全过程。如图,6.15,所示。,图,6.15,方式,0,数据输出时序,图,6.16,方式,0,扩展并行输出口,串行发送时,外部可扩展一片,(,或几片,),串入并出,的移位寄存器,(如,74LS164),,如图,6.16,所示。,RXD,TXD,89C51,A,B,CLK,数据输出,移位脉冲,1,2,3,3,4,5,6,10,11,12,13,74LS164,D7,D6D5D4D3D2D1,D0,(,2,)接收(输入),当,REN= 1,RI=0,时,就启动串行口接收。,在接收过程中,由,TXD,端输出移位时钟脉冲,控制外围设备将,8,位数据按位移入串行口的,RXD,端,并通过串行口内部的输入移位寄存器将数据存入,SBUF,接收寄存器。,当串行口控制电路检测到最后一次移位,结束,后,接收过程告终,并,置位,RI,申请中断,。,RI,也必须由软件清零。从启动接收到,RI,置位,相隔,9,个机器周期,完成了接收,1,帧数据的全过程。 时序图如图,6.17,所示。,图,6.17,方式,0,数据输入时序,图,6.18,方式,0,扩展并行输入口,串行接收时,外部可扩展一片,(,或几片,),并入串出,的移位寄存器(如,74LS165,),如图,6.18,所示。,Q,CLK,6,5,4,3,14,13,12,11,数据输入,移位脉冲,RXD,TXD,80C51,74LS165,D7,D6,D5,D4,D3,D2,D1,D0,2,工作方式,1,在方式,1,下,串行口工作在,10,位帧格式,,发送或接收一帧信息中,,除,8,位数据移位外,还包含一个起始位,(0),和一个停止位,(1),,其格式如图,6.19,所示,。,工作方式,1,的波特率是可变的,由定时器,T1,的计数溢出率决定。相应的公式为:,波特率,= ,定时器,T1,溢出率,图,6.19,串行口方式,1,的帧格式,定时器,T1,的计数溢出率计算公式为:,定时器,T1,溢出率,=,式中,,K,为定时器,T1,的位数,与定时器,T1,的工作方,式有关,(,见第,5,章介绍,),,则波特率计算公式为:,波特率,=,1),发送,发送时,数据从,TXD,端输出,当数据写入发送缓冲器,SBUF,后,启动发送器发送。当发送完一帧数据后,置中断标志,TI,为,1,。方式,1,所传送的波特率取决于定时器,1,的溢出率和,PCON,中的,SMOD,位。,2),接收,接收时,由,REN,置,1,,允许接收,串行口采样,RXD,,当采样由,1,到,0,跳变时,确认是起始位“,0”,,开始接收一帧数据。当,RI=0,,且停止位为,1,或,SM2=0,时,停止位进入,RB8,位,同时置中断标志,RI,;否则信息将丢失。所以,方式,1,接收时,应先用软件清除,RI,或,SM2,标志。,方式,1,时串行口的发送和接收时序如图,6.20,所示。,图,6.20,串行口方式,1,的时序图,3,方式,2,和方式,3,在方式,2,和方式,3,下,串行口工作在,11,位异步通信方式。,一帧信息包含一个起始位“,0”,,八个数据位,一个可编程第九数据位和一个停止位“,1”,。其中可编程位是,SCON,中的,TB8,位,在八个数据位之后,可作奇偶校验位或地址,/,数据帧的标志位使用,由使用者确定。其帧格式如图,6.21,所示。,区别:方式,2,的波特率固定为晶振频率的,1/64,或,1/32,;方式,3,的波特率由定时器,T1,的计数溢出率决定,确定方法与工作方式,1,中的完全一样。,图,6.21,串行口方式,2,、,3,帧格式图,1,)方式,2,和方式,3,输出,当,CPU,向发送,SBUF,写入一个数据时,串行口发送过程就被启动了。,TB8,写入输出移位寄存器的第,9,位,,8,位数据装入,SBUF,。,发送开始时,先把起始位,0,输出到,TXD,端。经一位时间后,发送移位寄存器的输出位(,D0,)到,TXD,端。之后,每一个移位脉冲都使输出移位寄存器的各位右移一位,并由,TXD,端输出。,结束时,控制电路进行最后一次移位,并置,T1,1,,向,CPU,请求中断。,2,)方式,2,和方式,3,输入,软件使接收允许位,REN,为,1,后,接收开始启动。,接收时,数据从右边移入输入移位寄存器,,1,从左边移出,在起始位,0,移到最左边时,控制电路进行最后一次移位。,当,RI,0,,且,SM2=0,时,接收到的数据装入接收,SBUF,和,RB8,,置,RI = 1,,向,CPU,请求中断。如果条件不满足,则数据丢失,且不置位,RI,,一位时间后继续搜索,RXD,端的负跳变。,时序如图,6.22,所示 。,图,6.22,串行口方式,2,、,3,时序图,四、串行口波特率确定和初始化,1.,波特率计算,串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的,波特率计算公式,也不相同。,具体如下:,2.,波特率的选择,实际应用中,波特率要选择为,标称值,,又由于,TH1,的初值是整数,为了减小波特率计算误差,,晶振频率要选择为,11.0592MHZ,。所以方式,1,和方式,3,波特率与,TH1,初值的对应基本上是确定的,如表,6-3,所示。,波特率(,bps,),19.2K,9600,4800,2400,1200,TH1,初值,FDH,FDH,FAH,F4H,E8H,SMOD,1,0,0,0,0,表,6-3,方式,1,、,3,常用波特率与,TH1,的初值关系表,注,:,此时,,T1,工作在方式,2,,晶振频率为,11.0592MHZ,。,3.,串行口的初始化,具体步骤如下:,1,)确定定时器,1,的工作方式(编程,TMOD,寄存器);,2,)计算定时器,1,的初值,装载,TH1,、,TL1;,3,)启动定时器,1(,编程,TCON,中的,TRl,位,),;,4,)确定串行口控制(编程,SCON,寄存器),5,)串行口在中断方式工作时,须开,CPU,的中断源(编程,IE,、,IP,寄存器)。,五、,多机通信,AT89C51,单片机串行口工作在方式,2,或方式,3,时,可实现多机通信功能,即一台主机和多台从机之间通信,如图,6.23,所示。,当主机向从机发送信息时,主机首先发送一个地址帧,此帧数据的第九数据位,TB8,应设置为“,1”,,以表示是地址帧,,8,位数据位是某台从机的地址。,图,6.23,多机通信连接图,这种通信只能在主从机之间进行,从机之间的通信需经主机作中介才能实现。经过上面分析,多机通信的过程可总结如下:,(1),主、从机均初始化为方式,2,或方式,3,,且置,SM2=1,,,REN=1,,串行开中断。,(2),主机置位,TB8=1,,向从机发送寻址地址帧,各从机因满足接收条件,(SM2=1,,,RB8=1),,从而接收到主机发来的地址,并与本机地址比较。,(3),地址一致的从机将,SM2,清零,并向主机返回地址,供主机核对,不一致的从机恢复初始状态。,(4),主机核对返回的地址,若与刚才发出的地址一致则准备发送数据,若不一致则返回,(1),重新开始。,(5),主机向从机发送数据,此时主机,TB8=0,,只有被选中的那台从机能接收到该数据,其他从机则舍弃该数据。,(6),本次通信结束后,主从机重新置,SM2=1,,又可进行新一次的通信。,6.3 AT89C51,串行接口的应用与编程,一、利用单片机串行口,扩展并行,I/O,口,串行口工作方式,0,主要用于扩展并行,I/O,口,扩展成并行输出口时,需要外接一片,8,位串行输入并行输出的同步移位寄存器,74HC164,。扩展成并行输入口时,需要外接一片或几片并行输入串行输出的同步移位寄存器,74HC165,。,数据的串行输出或输入可采用中断方式,也可采用查询标志位,TI,、,RI,的方法,在移位初始化时,要进行相应的设置。,例,利用串行口工作在方式,0,,外扩一片,74HC164,构成一个三位,LED,动态显示器,并将内部,RAM,显示单元,65H,、,66H,、,67H,中的内容输出显示。如图,6.24,所示。,图,6.24,串行动态显示图,主程序如下:,ORG 0000H,LJMP MAIN,ORG 0030H,MAIN,:,MOV SCON,,,#00H,;串行口初始化为方式,0,SETB P1.2,;消去最高显示位,SETB P1.1,MOV SBUF,,,65H,;传送最低显示位,JNB TI,,,$,;传送没结束,等待,CLR P1.0,;最低位显示,CLR TI,;清中断标志位,LCALL,D10ms,;调延时子程序,维持状态,SETB P1.0,;消去最低显示位,MOV SBUF,,,66H,;传送中间显示位,JNB TI,,,$,;等待传送结束,CLR P1.1,;显示中间位,CLR TI,;清中断标志位,LCALL,D10ms,;调延时子程序,维持状态,SETB P1.1,;消去中间显示位,MOV SBUF,,,67H,;传送最高显示位,JNB TI,,,$,;等待传送结束,CLR P1.2,;显示最高显示位,CLR TI,;清中断标志位,D10ms: MOV R5, #10,D1ms: MOV R4,#249,DL: NOP,NOP,DJNZ R4,DL,DJNZ R5,D1ms,RET,END,二、单片机与单片机的通信,有两个单片机子系统,它们均能独立地完成主系统的某一功能,且这两个子系统具有一定的信息交换需求,这时就可以用串行通信的方式将两个子系统连接起来。,1.,硬件连接,若两个单片机系统距离近,只要将两个单片机系统的,TXD,和,RXD,引出线交叉相连即可;若两个单片机系统距离较远,要采用,RS-232C,接口进行连接,如图,6.25,所示。,图,6.25,双机通信连接图,2.,通信协议,采用方式,1,进行通信,每帧信息为,10,位,波特率为,2400bps,,,T1,作定时器用,工作在方式,2,,晶振频率用,11.0592MHZ,,查表,6.3,得,TH1=TL1=0F4H,,,PCON,寄存器的,SMOD,位为,0,。,通信时,首先,A,机发送“,E1H”,请求传输数据。,B,机收到后回答一个”,E2H”,应答信号,表示同意接收。当,A,机收到应答信号”,E2H“,后,开始发送数据,每发送一个数据字节都要计算”校验和“,假定数据块长度为,15,个字节,起始地址为,40H,,数据块发送完毕后立即发送”校验和“。,然后,B,机接收数据并转存到数据缓冲区,起始地址也为,40H,,每接收到一个数据字节便计算一次”校验和“,当收完数据块后,再接收,A,机发来的”校验和“,并将它与,B,机求出的校验和进行比较。若两者相等,说明接收正确,,B,机回答,00H,;若两者不等,说明接收不正确,,B,机回答,FFH,,请求重发。,A,机收到答复为,00H,则结束发送。若答复非,0,,则重新发送数据。,3.,程序及流程图,A,机程序:,ORG 0000H,LJMP AMAIN,ORG 0030H,AMAIN,:,MOV SP,#5FH,MOV TMOD, # 20H ;,初始化定时器,1,为模式,2,MOV TH1, #0F4H;,装载定时器初值,MOV TLl,#0F4H,MOV SCON,#50H,MOV PCON, # 00H,SETB TR1;,启动定时器,CALL INIT;,生成调试用数据,DIALOG: MOV A,#0E1H;,发联络信号,CALL TXBYTE,CALL RXBYTE;,接收,B,机返回信号,CJNE A,#0E2H,DIALOG ;B,机允许发送?,RETX: CALL TXDATA,CALL RXBYTE,CJNE A,#00H,DIALOG ;B,机接收正确?,AJMP DIALOG,TXBYTE: MOV SBUF,A;,发送子程序,JNB TI,$,CLR TI,RET,RXBYTE: JNB RI,$;,接收子程序,MOV A,SBUF,CLR RI,RET,TXDATA: MOV R7,#15;,发送数据块子程序,MOV R0,#40H,MOV R6,#00H,LDATA: MOV A,R0,CALL TXBYTE,MOV A,R6,ADD A,R0;,求校验和,MOV R6,A;,保存校验和,INC R0,DJNZ R7,LDATA;,数据块传送完否?,MOV A,R6;,发送校验和,CALL TXBYTE,RET,INIT: MOV R0,#40H;,测试数据,MOV R7,#15,MOV A,#30H,L0: MOV R0,A,INC A,INC R0,DJNZ R7,L0,RET,END,B,机程序:,ORG 0000H,LJMP BMAIN,ORG 0030H,BMAIN,:,MOV SP,#5FH,MOV TMOD, # 20H;,初始化定时器,1,为模式,2,MOV TH1, #0F4H;,装载定时器初值,MOV TLl,# 0F4H,MOV SCON,#50H,MOV PCON, # 00H,SETB TR1;,启动定时器,WDIALOG: CALL RXBYTE,CJNE A,#0E1H,WDIALOG;,等待联络信号,MOV A,#0E2H,CALL TXBYTE,;发送应答信号,RERX: CALL RXDATA;,接收数据块,XRL A,R6;,和校验正确否?,JNZ NO;,不正确转,NO,MOV A,#00H;,正确,CALL TXBYTE,AJMP WDIALOG,NO: MOV A,#0FFH,CALL TXBYTE,AJMP RERX,TXBYTE: MOV SBUF,A;,发送子程序,JNB TI,$,CLR TI,RET,RXBYTE: JNB RI,$;,接收子程序,MOV A,SBUF,CLR RI,RET,RXDATA: MOV R7,#15;,接收数据块子程序,MOV R0,#40H,MOV R6,#00H,LDATA: CALL RXBYTE,MOV R0,A,MOV A,R6,ADD A,R0,MOV R6,A,INC R0,DJNZ R7,LDATA,CALL RXBYTE,RET,END,图,6.26,双机通信流程图,习题与思考题,6.1,串行通信有几种基本通信方式?它们有什么区别?,6.2,什么是串行通信的波特率?,6.3,串行通信有哪几种制式?各有什么特点?,6.4,简述,AT89C51,串行口控制寄存器,SCON,各位的定义。,6.5 AT89C51,单片机串行通信有几种工作方式?简述它们各自的特点。,6.6,简述,AT89C51,单片机串行口在四种工作方式下波特率的产生方法。,6.7,假设异步通信接口按方式,1,传送,每分钟传送,6000,个字符,则其波特率是多少?,6.8,串行口工作在方式,1,和方式,3,时,其波特率由定时器,T1,产生,为什么常选,T1,工作在方式,2,?若已知,fosc=6 MHz,,需产生的波特率为,2400 b/s,,则如何计算,T1,的计数初值?实际产生的波特率是否有误差?,6.9,说明单片机多机通信的工作原理。,6.10,试用查询法编写,AT89C51,串行口在方式,2,下的接收程序。设波特率为,fosc/32,,接收数据块长,20H,,接收后存在于片内,RAM,的,40H,开始单元,采用奇偶校验,放在接收数据的第九位上。,6.11,设计一个发送程序,将芯片内,RAM,中的,30H,3FH,单元数据从串行口输出,要求将串行口定义为方式,3,,,TB8,作奇偶校验位。,6.12 PC,机与单片机间的串行通信为什么要进行电平转 换?,6.13 RS,-,232C,总线标准逻辑电平是怎样规定的?,6.14,绘出用,MAX232,芯片实现两片,AT89C51,单片机之间远距离串行通信的接口电路图。,
展开阅读全文