




已阅读5页,还剩104页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章80C51单片机的串行接口技术,1,学习目的(1)了解通信的概念,熟悉串行通信和并行通信原理;(2)理解串行通信的3中制式;(3)掌握串行通信的标准;(4)掌握80C51串行口的通信原理和通信方法;(5)熟悉新型串行通信总线标准。学习重点和难点(1)串行通信的原理和数据帧格式;(2)RS-232C的接口标准及电气标准;(3)80C51串行口的通信方式设置及波特率设置方法;(4)80C51单片机间的通信和单片机与PC机的通信程序设计方法;(5)I2C总线和SPI总线的应用编程。,2,计算机与计算机之间,计算机与外设之间的数据交换称为通信。计算机与外部设备的通信有两种基本方式:并行通信和串行通信。信息的各位数据被同时传送的通信方法称为并行通信。并行通信依靠并行I/O接口实现。在并行通信中,数据有多少位就需要多少条信号传输线,这种通信方式的速度快,但由于传输线数较多,成本高,仅适合近距离通信,通常传送距离小于30米,常用并行通信协议有SPP、EPP、ECP等。当距离大于30米时,则多采用串行通信方式,串行通信是指信息的各位数据被逐位顺序传输的通信方式,这种通信方式较之并行通信而言,具有如下优点:(1)传输距离长,可达到数千公里;(2)长距离内串行数据传送速率会比并行数据传送速率快,串行通信的通信时钟频率较并行通信更容易提高;(3)抗干扰能力强,串行通信信号间的相互干扰完全可以忽略;(4)通信成本低;(5)传输线既传数据,又传联络信息。,5.1串行通信概述,3,5.1.1串行通信的分类通常情况下,在串行通信中根据信息传送的格式分为:异步串行通信和同步串行通信。同步串行通信是按软件识别同步字符来实现数据的传送;异步串行通信是一种利用字符的再同步技术的通信方式。在80C51单片机中主要使用异步串行通信方式。同步通信方式是以数据块的方式传送的,数据传输率高,适合高速率、大容量的数据通信。同步通信在数据开始处用12个同步字符来指示。同步通信中,由同一频率的时钟脉冲来实现发送和接收的同步。在发送时要插入同步字符,接收端在检测到同步字符后,就开始接收任意位的串行数据,如图5-1所示。可见,同步通信具有较高的传输速率,通常在几十至几百千波特,但对硬件要求较高。,图5-1同步通信原理图,4,异步通信中,是以字符为单位传送的,数据传送可靠性高,适合低速通信的场合。异步通信用起始位“0”表示字符的开始,然后从低位到高位逐位传送数据,最后用停止位“1”表示字符的结束。一个字符又称为一帧信息。在异步通信中,对字符的编码形式规定位:每个串行字符由4个部分组成:1个起始位、58个数据位、1个奇偶校验位以及12个停止位。在帧格式中,一个字符由起始位“0”开始,到停止位结束,两相邻字符帧之间可以无空闲位,也可以有若干空闲位,这由用户根据需要决定。如图5-2所示。,图5-2异步通信字符帧格式,起始位:逻辑“0”信号,占1位,用以通知接收端有一个新的字符数据到达,应准备接收。当信道上没有数据传送时,保持为高电平“1”,也就是空闲信号。对于接收端,不断的检测线路状态,若连续为“1”后又检测到一个“0”,则立即准备接收数据。,数据位:逻辑“0”、“1”信号,占58位,在数据发送时,总是低位在先,高位最后。,奇偶校验位:逻辑“0”或“1”信号,占1位,用于在数据传送时作正确性检查,通常有:奇校验、偶校验和无校验三种情况。当该位不用于校验时可作为控制位,用于判定该字符所代表的信息(1-地址或0-数据等)。,停止位:逻辑“1”信号,用于表征字符的结束,表示一帧字符信息发送结束。该位可以时1、1.5或2个比特位,在实际应用中由用户根据需要设定。,5,在异步通信中,发送方和接收方必须保持相同的波特率(BaudRate)才能实现正确的数据传送。波特率是串行通信的重要指标,用于表征数据传输的速度,波特率是指单位时间内传送的信息量,即每秒钟传送的二进制位数(亦称比特数),单位是bit/s,即位/秒。波特率越高,数据传输速度越快,但和字符的实际传输速率不同。字符的传输速率是指每秒内所传送字符帧数,和字符帧格式有关。,例如:在异步通信中使用1位起始位,8位数据位,无奇偶校验位,1位停止位,即一帧数据长度为10bit,如果要求数据传送的速率是1秒传送120帧字符,则传送波特率为1200波特。常用的标准波特率是:110波特、300波特、600波特、1200波特、l800波特、2400波持、4800波特、9600波特和19200波特。,6,5.1.2串行通信制式在串行通信中,数据通常在发送器和接收器(如A和B)之间进行双向传送。这种传送根据需要又可分为单工通信、半双工通信和全双工通信。在80C51单片机中使用全双工异步串行通信方式。单工通信是指从A设备向B设备发送,如图5-3(a)所示;半双工通信是指既能从A设备发送到B设备,也能从B设备发送到A设备,但在任何时候不能同时在两个方向上传送,即每次只能有一个设备发送,另一个设备接收,通讯双方依照一定的通讯协议来轮流地进行发送和接收,如图5-3(b)所示;全双工通信是指允许通信双方同时进行发送和接收,全双工方式相当于把两个方向相反的单工方式组合在一起,因此它需要两条数据传输线,如图5-3(c)所示。,图5-3串行通信数据传送方式,7,5.1.3串行通信接口标准从本质说,通信是CPU于外部设备间交换信息的一种方式。所有的串行通信接口电路都是以并行数据形式与CPU连接、而以串行数据形式与外部设备进行数据传送。它们的基本功能都是从外部设备接收串行数据,转换为并行数据后传送给CPU;或从CPU接收并行数据,转换成串行数据后输出给外部设备。能够实现异步通信的硬件电路称为UART(UniversalAsynchronousReceive/Transmitter),即通用异步接收器/发送器;能够实现同步通信的硬件电路称为USRT(UniversalSynchronousReceive/Transmitter)。所谓接口标准,就是明确的定义若干条信号线,使接口电路标准化、通用化。采用标准接口,可以方便地把计算机、外部设备和测量仪器等有机的联系起来,并实现其间的通信。在单片机控制系统中,常用的串行通信接口标准有:RS-232C、RS-449、RS-422A、RS-423A、RS-485、20mA电流环、USB、IIC及SPI等总线接口标准。,8,1、RS-232C总线RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(ElectronicIndustryAssociation)代表美国电子工业协会,RS(若RecommendedStandard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它规定连接电缆和机械、电气特性、信号功能及传送过程。目前在IBMPC机上的COM1、COM2接口,就是RS-232C接口。1)RS-232C机械特性RS-232C标准规定使用符合ISO2110标准的25芯D型连接器,该标准还规定了:在具有一定的数据处理能力和数据收发能力的数据终端设备DTE(DataTerminalEquipment)上使用插座,在DTE和传输线路之间提供信号变换和编码功能,并负责建立、保持和释放链路的连接器称为数据通讯设备DCE(DataCommunicationEquipment)上使用插头,如Modem。DCE设备通常是与DTE对接的,因此针脚的分配相反。RS-232C总线标准设有25条信号线,其中:4条数据线11条控制线、3条定时线、7条备用和未定义线,常用的只有9条。因此串行口连接器分为9芯D型连接器针和25芯D型连接器两种,如图5-4所示。两种连接器引脚的对应如表5-1所示。,9,表5-1DB-25与DB-9引脚对应关系,图5-4RS-232C连接器示意图,10,尽管RS-232C使用20条信号线,大多数情况下,微型计算机、计算机终端和一些外部设备都配有RS-232C串行接口。在近距离通信时可以通过RS-232C直接将通信双方连接,这种方式称为“零调制解调”,只需三条连接线,即“发送数据”、“接收数据”和“信号地”,发送方和接收方的“发送数据”、“接收数据”端交叉连接,传输线采用屏蔽双绞线即可实现,如图5-5所示;当使用RS-232C进行远距离传送数据时,就必须配合调制解调器(modem)和电话线进行通信,其连接及通信原理如图5-6所示。,图5-5三线制连接原理图,图5-6远程串行通信原理图,11,2)RS-232C的电气特性由于RS-232C是在TTL集成电路之前制定的,所以它的电平不是+5V和地,RS-232C标准规定了数据和控制信号的电压范围它使用负逻辑约束,其低电平“0”在+3+15V之间,高电平“1”在-3-15V之间,而单片机的逻辑“1”是以+5V来表示的,因此RS-232C不能和TTL电平直接相连。为了保证数据正确地传送,设备控制能准确地完成,必须使所用的信号电平保持一致,把单片机的信号电平(TTL电平)转换成计算机的RS-232C电平,或者把计算机的RS-232C电平转换成单片机的TTL电平因此,使用时必须加上适当的电平转换电路。常用的电平转换器:如MC1488、MC1489、MAX232等。MAX232是单电源双RS-232发送/接收芯片,如图5-7所示,采用单一+5V电源供电,外接只需4个电容,便可以构成标准的RS-232通信接口,硬件接口简单,所以被广泛采用,其主要特性如下:,图5-7MAX232实现TTL电平与RS-232电平转换,1)符合所有的RS-232C技术规范。,2)只要单一+5V电源供电。,3)具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V-,4)低功耗,典型供电电流5mA。,5)内部集成2个RS-232C驱动器。,6)内部集成2个RS-232C接收器。,12,RS-232C既是一种协议标准,又是一种电气标准,它采用单、双极性电源供电电路,可用于最远距离为15m最高速率达20kb/s的串行异步通信。但是,RS-232C仍有一些不足之处,主要表现在:1)传输速率不够快:RS-232C标准规定最高速率为20kb/s,尽管能满足异步通信要求,但不能适应高速的同步通信。2)传输距离不够远:RS-232C标准规定各装置之间电缆长度不超过50英尺(约15m)。实际上,RS-232C能够实现100英尺或200英尺的传输,但在使用前,一定要先测试信号的质量,以保证数据的正确传输。3)RS-232C接口采用不平衡的发送器和接收器,每个信号只有一根导线,两个传输方向仅有一个信号线地线,因而电气性能不佳,容易在信号间产生串扰。,13,2、RS-449总线EIA1977年公布的电子工业标准接口RS-449,在很多方面可代替RS-232C应用。两者的主要差别是信号在导线上的传输方法不同。RS-232C是利用传输信号与公共地之间的电压差,RS-449接口是利用信号导线之间的信号电压差,可在1219.2m的24-AWG双绞线上进行数字通信,由于它克服了RS-232C互不兼容的25芯连接器以及接口处信号间易串扰等缺陷,最大传输距离达1200米,信号最高传输速率为100kb/s。RS-449规定了两种接口标准连接器,一种为37芯,另一种为9芯。由于RS-449系统用平衡信号差传输高速信号,所以噪声低;它还可以多点或者使用公用线通信,故RS-449通信电缆可与多个设备并联。,14,3、RS-422A总线RS-422A标准给出了RS-449应用中对于电缆、驱动器和接收器的要求,规定了双端电气接口型式,该接口是双端线传送信号。它通过传输线驱动器,把逻辑电平变换成电位差,完成发送端的信息传递通过传输线接收器,把电位差动变换成逻辑电平,实现接收端的信息接收。RS-422A比RS-232C传输距离长、速度快,传输速率最大可达10Mbit/s,在此速率下电缆允许长度为12m。如果采用低速率传输,如90000bit/s,最大传输距离可达1200m。RS-422A每个通道要用两条信号线,如果其中一条是逻辑“1”状态,另一条就是逻辑“0”状态。RS-422A电路由发送器、平衡连接电缆、电缆终端负载、接收器等部分组成。在电路中规定只许有一个发送器,可有多个接收器,因此通常采用点对点的通信方式。该标准允许驱动器输出电压为2V6V,接收器可以检测到的输入信号电压可低到200mV。RS-422A总线采用平衡输出的发送器,差分输入的接收器。如图5-8所示。,图5-8平衡驱动差分传送电路,15,4、RS-423A总线RS-423A规定为单端线,而且与RS-232C兼容,参考电平为地,该标准的主要优点是在接收端采用了差分输入。而差分输入对共模干扰信号有较高的抑制作用,这样就提高了通信的可靠性。RS-423A用-6v表示逻辑“1”,用+6v表示逻辑“0”,可以直接与RS-232C相接。RS-423A驱动器在90m长的电缆上传送数据的最大速率为100kbit/s,若降低到l000bit/s,则允许电缆长度为1200m。RS-423A允许在传送线上连接多个接收器,接收器为平衡传输接收器,因此允许驱动器和接收器之间有电位差。如图5-9所示是RS-423A的连接示意图。,图5-9RS-423A总线接口示意图,16,5、RS-485总线RS-485是一种多发送器的电路标准,它扩展了RS-422A的性能,允许双导线上一个发送器驱动32个负载设备。负载设备可以是被动发送器、接收器和收发器。RS-485电路允许共用电话线通信。电路结构是在平衡连接电缆两端有终端电阻,在平衡电缆上挂发送器、接收器和组合发收器。RS-485标准没有规定在何时控制发送器发送或接收机接收数据。RS-485最小型由两条信号电路线组成。每条连接电路必须有接地参考点,这电缆能支持32个发送接收器对。为了避免地面漏电流的影响,每个设备一定要接地。电缆应包括连至每个设备地的第三信号参考线。若用屏蔽电缆,屏蔽应接到设备的机壳。典型的RS-232到RS422/485转换芯片有:MAX481/483/485/487/488/489/490/491,SN75175/176/184等,它们均只需单一+5v电源供电即可工作。接口示意图如图5-10所示。,图5-10RS-485总线接口示意图,17,6、20mA电流环串行接口20mA电流环是目前串行通信中广泛使用的一种接口电路,其原理如图5-11所示。由于20mA电流环是一种异步串行接口标准,所以在每次发送数据时必须以无电流的起始状态作为每一个字符的起始位,接收端检测到起始位时便开始接收字符数据。电流环串行通信接口的最大优点是低阻传输线对电气噪声不敏感,而且易实现光电隔离,因此在长距离通信时要比RS-232C优越得多。,图5-1120mA电流环接口原理图,18,5.2.180C51的串行接口的结构MCS-51单片机通过串行数据接收引脚RXD(P3.0)和串行数据发送引脚TXD(P3.1)与外界进行通信。串行口内有一个可直接寻址的专用寄存器-串行口缓冲寄存器SBUF,SBUF由两个寄存器组成:一个发送寄存器、一个接收寄存器,两者共用一个物理地址99H,可同时发送、接收数据,CPU写SBUF,就是修改发送寄存器,读SBUF就是读接收寄存器。其内部结构功能如图5-12所示。接收寄存器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时响应串口接收中断,没有把上一帧数据读走,产生两帧数据重叠的情况。发送寄存器没有采用双缓冲结构,因为发送数据是由CPU控制的,在用户编程时,必须避免产生写重叠情况,即在用户程序中必须等数据发送完毕后才能发送下一个数据。,图5-1280C51串行口结构框图,5.280C51的串行接口及工作方式,19,5.2.280C51的串行接口的控制寄存器单片机串行接口是可编程的接口,在使用其串行接口时,必须先对串行口控制寄存器(SCON)和电源及波特率选择寄存器(PCON)进行初始化。1、SCON串行口控制寄存器SCON是一个特殊功能寄存器,用于设定串行接口的工作方式,字节地址位98H,具有位寻址能力。各位的功能如下:,SM0、SM1为工作方式选择位。80C51串行口有四种工作方式,如表5-2所示。,20,RI为接收中断标志位:在方式0下,当接收到第8位数据,或在其他3种方式下接收停止位的一半(与SM2的设置有关)时,由硬件置位。RI=1时,表示一帧数据接收完成。RI被置位后可向CPU产生中断请求,也可供软件查询。RI必须用CLR指令复位。TI为发送中断标志位:在方式0下,当发送第8位数据结束,或在其他3种方式下发送停止位时,由硬件置位。TI=1时,表示一帧数据发送完成。TI被置位后可向CPU产生中断请求,也可供软件查询。TI必须用CLR指令复位。RB8为帧接收标志位:在方式2、方式3下为接收数据的第9位,它可以是奇偶校验位,也可以作为多机通信控制位,用于判定该字符所代表的信息(地址或数据等)。在方式1下,若SM2=0,RB8位为接收到的停止位。在方式0下,该位不用。TB8为帧发送标志位:方式2、方式3下为要发送数据的第9位,由软件置位或复位,表示奇偶校验位,也可以作为多机通信控制位,用于判定该字符所代表的信息(地址或数据等)。在方式0和方式1下,该位不用。,21,REN为串行口接收允许控制位:由软件置位或复位。REN=1,表示允许接收;REN=0,禁止接收。SM2为串行口多机通信控制位(作为方式2、方式3的附加控制位):在方式2或方式3下,若SM2=0,则不允许多机通信,即不管接收到的第9位数据为0或1,前8位数据都送入SBUF,并使RI=1;若SM2=1,则允许多机通信。多机通信协议规定:若接收到的第9位数据RB8=1,说明本帧数据为地址数据,若接收到的第9位数据RB8=0,说明本帧为数据帧。在方式1下,若SM2=1,则只有接收到有效的停止位时,才能置位RI。在方式0下,SM2必须为0。例如:设串行口工作在方式1,允许接收,则指令为:MOVSCON,#01010000B,22,2、PCON电源及波特率选择寄存器PCON寄存器主要是为CHMOS型单片机的电源控制设置的专用寄存器,单元地址为87H,不能位寻址。各位的功能如下:,SMOD:串行口波特率的倍增位。在HMOS单片机中,该寄存器中除最高位之外,其他位都是虚设的。在单片机工作在方式1、方式2和方式3时,SMOD=1,串行口波特率提高一倍;SMOD=0,则波特率不加倍。系统复位时SMOD=0。,GF1、GF0:通用标志位,由软件置位、复位。,PD:掉电方式控制位,PD=1,则进入掉电方式。,IDL:待机方式控制位,IDL=1,则进入待机方式。,23,根据SCON寄存器的SM0、SM1位设置的不同,80C51串行口有4种工作方式,其中方式0和方式2的波特率相同,方式1和方式3的波特率可变,取决于定时器T1的溢出率。5.3.1方式0在方式0下,串行口作同步移位寄存器用,其波特率固定为fosc/12。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。这种方式常用于扩展I/O口。移位输出:方式0发送数据的原理图和工作时序如图5-13,采用74LS164串入并出移位寄存器实现,P1.0线提供片选信号(高电平有效)。当一个数据写入串行口发送缓冲器时,串行口将8位数据以fosc/12的固定波特率从RxD引脚输出,从低位到高位。发送完成后,置中断标志TI为1,请求中断,在再次发送数据之前,必须用软件将TI清零。,5.380C51串行口的工作方式及波特率,24,移位输入:方式0接收数据的原理图和工作时序如图5-14所示采用74LS165并入串出移位寄存器实现,P1.0线提供控制信号,当S/L=0时,允许置入并行数据,当S/L=1时,允许数据串行移位输出。在REN=1和RI=0的条件下,接收器以fosc/12的波特率对RxD引脚输入的数据信息采样,当接收器接收完8位数据后,置中断标志RI=1为请求中断,在再次接收之前,必须用软件将RI清零。,图5-14方式0输入原理图、时序,25,80C51串行口工作方式0应用举例:【例5-1】用8051串行口外接4094扩展8位并行输出口,驱动所连接的8只LED管循环点亮。接口扩展如图5-15所示。,图5-15方式0扩展应用仿真实例,仿真链接,26,采用查询方式:ORG00HSTART:MOVSCON,#00H;设置串行口工作方式0MOVA,#80H;初始值CLRP1.0;允许串行输入,禁止并行输出NEXT:MOVSBUF,A;启动串行发送LOOP:JNBTI,LOOP;一帧数据发送完?CLRTI;发送完成,清除标志位SETBP1.0;允许并行输出ACALLDELAY;延时RRA;准备下一个数据CPLP1.0;允许串行输入,禁止并行输出SJMPNEXTDELAY:MOVR3,#8;延时DELAY1:MOVR4,#70DJNZR4,$DJNZR3,DELAY1RETEND,27,INTES:CLRESCLRTI;串行中断控制SETBP1.0RRAACALLDELAYCPLP1.0MOVSBUF,ASETBESRETIDELAY:MOVR3,#200;延时DELAY1:MOVR4,#200DJNZR4,$DJNZR3,DELAY1RETEND,采用中断方式:ORG0000HLJMPSTARTORG0023H;串行中断入口地址AJMPINTESORG10HSTART:MOVSCON,#00HMOVA,#80HCLRP1.0SETBESSETBEAMOVSBUF,ASJMP$,28,5.3.2方式1方式1是10位数据的异步通信,多用于双机通信。TXD为数据发送端,RXD为数据接收端,传送的每一帧数据中包括:1位起始位,8位数据位,1位停止位。波特率可变,PCON寄存器的SMOD位和T1的溢出率共同决定。波特率=(2smod)T1的溢出率/32当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器),使用这种方式,使得编程操作方便,也可避免因重装初值(时间常数初值)而带来的定时误差。T1的溢出率=fosc/(12*(256-N),N为定时器T1的计数初值所以:方式1下的波特率=或者:,29,方式1发送:方式1数据发送是从数据写入发送缓冲器(SBUF)开始的,随后在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的作用下,由TXD端串行输出。一个字符帧发送完后,使TXD输出线维持在“1”状态下并将SCON寄存器的TI位置“1”,该位的状态可供查询或请求中断,在再次发送数据之前,必须用软件将TI清零。方式1发送的时序如图5-16所示。,图5-16方式1串行发送时序,30,方式1接收:在REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,当检测到RXD引脚输入电平产生负跳变时,说明起始位有效,将其移入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并将SCON寄存器的RI位置“1”,该位的状态可供查询或请求中断,在再次发送数据之前,必须用软件将RI清零。方式1接收的时序如图5-17所示。,图5-17方式1串行接收时序,31,5.3.3方式2和方式3方式2和方式3是11位数据的异步通信,多用于多机通信。TXD为数据发送端,RXD为数据接收端,传送的每一帧数据中包括:1位起始位,9位数据位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8),1位停止位。方式2的波特率为晶振频率的64分频或32分频,方式3的波特率设置方法与方式1相同。方式2和方式3接收:接收时,数据从右边移入输入移位寄存器,在起始位0移到最左边时,当接收器接收到第9位数据后,在RI=0,且SM2=0(或接收到的第9位数据为1)时,接收到的数据装入接收缓冲器SBUF和RB8(接收数据的第9位),并置位RI,供查询或向CPU请求中断如果条件不满足,则数据丢失,且不置位RI,继续搜索RXD引脚的负跳变。方式2、3接收的时序如图5-18所示。,图5-18方式2、3接收时序,32,方式2和方式3发送:发送数据由TxD端输出,一帧信息中的9位数据包括8位数据位(先低位后高位)、一位附加可控位(1或0)。附加的第9位数据为SCON中的TB8的状态,它由软件置位或复位,可作为多机通信中地址数据信息的标志位,也可作为数据的奇偶校验位。一个字符帧发送完毕后,自动将TI位置“1”,供查询或向CPU请求中断。方式2、3发送的时序如图5-19所示。,图5-19方式2、3发送时序,33,【例5-2】用第9位数据作奇偶校验位的应用。发送程序段:MOVTMOD,#20H;T1方式2,定时MOVTL1,#DATA1;置计数初值MOVTH1,#DATA2SETBTR1;启动T1MOVSCON,#90H;串行口为方式2,允许接收SM2=0MOVPCON,#80H;置SMOD=1SEND:MOVA,#DATA;取待发送数据MOVC,PSW.0;奇偶位送CYMOVTB8,C;奇偶标准位送TB8MOVSBUF,AWAIT:JBCTI,NEXTSJMPWAITNEXT:,34,接收程序段:MOVTMOD,#20H;T1方式2,定时MOVTL1,#DATA1;置计数初值MOVTH1,#DATA2SETBTR1;启动T1MOVSCON,#90H;串行口为方式2,允许接收SM2=0MOVPCON,#80H;置SMOD=1WAIT:JBCRI,RECEIVESJMPWAITRECEIVE:MOVA,SBUFJBPSW.0,COMPER;接收数据为奇,转移JBRB8,ERROR;接收错误转移(第9位数据在RB8中)SJMPRIGHTCOMPER:JNBRB8,ERROR;接收错误转移RIGHT:ERROR:,35,5.3.4串行口的初始化采用80C51进行串行通信之前必须对其进行初始化。初始化的主要内容是:设置产生波特率的定时器1的初始值、设置串行口的工作方式和控制方式、设置中断控制。具体步骤如下:1)确定T1的工作方式(TMOD寄存器编程);2)计算T1的初值,装载TH1、TL1;3)确定SMOD值(PCON寄存器编程);4)启动T1(TCON中的TR1位置位);5)确定串行口通信方式(SCON寄存器编程);6)若串行口在中断方式工作时,进行中断设置(IE、IP寄存器编程)。,36,图5-20串行发送控制编程流程,5.3.5串行口的应用编程方法串行口的应用编程,可依据串行发送/接收标志位(TI/RI)的状态完成,方法有:查询、中断。串行发送控制编程方法如图5-20所示,图(a)为查询方式发送流程图、图(b)为中断方式发送流程图。,37,串行接收控制编程方法如图5-21所示,图(a)为查询方式接收流程图、图(b)为中断方式接收流程图。,图5-21串行接收控制编程流程,38,在计算机分布式测控系统中,经常要利用串行通信方式进行数据传输。80C51单片机的串行口为计算机间的通信提供了极为便利的条件。利用单片机的串行口还可以方便地扩展键盘和显示器,对于简单的应用非常便利。下面介绍利用80C51单片机进行双机通信和多机通信的应用方法。5.4.1MCS-51双机通信技术双机通信也称为点对点通信。如果两个80C51应用系统相距很近,将它们的串行口直接相连,即可实现双机通信。如图5-22(a)所示。如果为了增加通信距离,减少通道及电源干扰,可以在通信线路上采取光电隔离的方法,利用RS-232C或RS-422标准实现双机通信。如图5-22(b)所示。,图5-22MCS-51双机通信原理图,5.480C51之间的通信,39,【例5-3】:将系统1片内RAM中SOURCE开始、长度为LEN的数据块发送到系统2,并存放在片内RAM中TARGET开始的单元(系统1发送、系统2接收)。为保证成功通信、有效,规定发/收双方遵守如下“协议”:波特率2400bps;通信开始时,系统1发送呼叫信号“C”,询问系统2是否可以接收数据;系统2收到呼叫信号后,若同意接收数据则发回“A”作为应答,否则发“D”表示暂不能接收数据;系统1只有收到系统2的应答信号“A”方可发送数据给系统2,否则继续向系统2呼叫,直到系统2同意接收。其数据格式为:,数据格式中,“校验和”是指字节数n、数据1、数据n这(n+1)个字节内容的简单算术累加和。系统2根据接收到的“校验和”判断已接收到的数据是否正确,若接收正确,则向系统1回发“R”信号,否则回发“E”信号。系统1只有接收到“R”信号才算完成发送任务,返回调用程序,否则继续呼叫,重新发送。,40,系统1发送子程序:分析:定时器T1初始化为模式2,SMOD=1,计数初值为(设fosc=6MHZ):,使用串行口方式1,允许接收。根据通信协议及控制要求,可绘制系统1发送控制流程图,如图5-23所示。,图5-23系统1发送流程图,41,;R0存放数据块首地址;R7存放发送数据块的长度;R6存放累加和。MOVTMOD,#20H;T1方式2,定时MOVTL1,#0F3H;置计数初值MOVTH1,#0F3HSETBTR1;启动T1MOVSCON,#50H;串行口为方式1,允许接收MOVPCON,#80H;置SMOD=1SYS1_SEND:MOVR0,#SOURCE;置数据块首地址MOVR7,#LEN;数据块长度MOVR6,#00H;清累加和寄存器SYS1_CALL:MOVA,#C;发送呼叫信号CMOVSBUF,AWAIT1:JBCTI,SYS2_AGREE;等待发送SJMPWAIT1SYS2_AGREE:JBCRI,TEST1SJMPSYS2_AGREE,42,TEST1:MOVA,SBUF;接收系统2应答CJNEA,#A,SYS1_CALL;若系统2不同意,继续呼叫MOVA,R7;发送字节长数MOVSBUF,AADDA,R6;形成累加和送R6MOVR6,A;存累加和WAIT2:JBCTI,SYS1_DATA;等待发送SJMPWAIT2SYS1_DATA:MOVXA,R0;发送数据MOVSBUF,AADDA,R6;形成累加和送R6MOVR6,AINCR0;修改地址指针,43,WAIT3:JBCTI,NEXT2;等待发送SJMPWAIT3NEXT2:DJNZR7,SYS1_DATA;数据发送完?MOVA,R6;发送累加和MOVSBUF,AWAIT4:JBCTI,TEST2;等待发送SJMPWAIT4TEST2:JBCRI,RIGHT;等待系统2应答SJMPTEST2RIGHT:MOVA,SBUFCJNEA,#R,SYS1_SEND;系统2接收错误,重新发送RET;系统2接收正确,返回,44,系统2接收子程序:根据通信协议及控制要求,可绘制系统2接收控制流程图,如图5-24所示。,图5-24系统2接收控制流程图,45,;R1存放接收数据缓冲区首址TARGET;R7存放数据块长度;R6存放累加和。SYS2_RECEIVE:MOVTMOD,#20H;定时器T1方式2,定时MOVTL1,#0F3H;置计数初值MOVTH1,#0F3HSETBTR1;启动T1MOVSCON,#50H;串行口方式1,允许接收MOVPCON,#80H;SMOD=1,波特率加倍AGREE:MOVR1,#TARGET;置目的地址指针MOVR6,#00H;校验和寄存器清零JBCRI,ACK;等待接收呼叫信号SJMPAGREEACK:MOVA,SBUFCJNEA,#C,ACK_D;是呼叫信号C?MOVA,#A;向系统1回送同意接收信号AMOVSBUF,A,46,WAIT1:JBCTI,REC_DATA;等待接收数据SJMPWAIT1ACK_D:MOVA,#D;向系统1回送不同意信号DMOVSBUF,AWAIT2:JBCTI,AGREE;重新接收呼叫SJMPWAIT2REC_DATA:JBCRI,BYTE_DATA;接收数据块长度SJMPREC_DATABYTE_DATA:MOVA,SBUF;给长度寄存器赋值MOVR7,AMOVR6,A;形成累加和NEXT:JBCRI,SAVE_DATA;接收数据SJMPNEXTSAVE_DATA:MOVA,SBUF;接收数据并保存MOVR1,AINCR1;修改地址指针ADDA,R6;形成累加和MOVR6,ADJNZR7,NEXT;数据接收完否?,47,WAIT3:JBCRI,REC_TATAL;接收效验和SJMPWAIT3REC_TATAL:MOVA,SUBFCJNEA,R6,REC_ERR0R;接收正确?MOVA,#R;向系统1应答传送正确信号RMOVSBUF,AWAIT4:JBCTI,RETURN;正确,返回SJMPWAIT4REC_ERR0R:MOVA,#E;向系统1应答传送错误信号EMOVSBUF,AWAIT5:JBCTI,AGREESJMPWAIT5RETURN:RET,48,5.4.2MCS-51多机通信技术计算机与计算机的通信不仅限于点对点的通信,还体现在一对多或多对多之间的通信,以此构成计算机网络控制系统。MCS-51单片机构成的多机系统常采用总线型主从式结构。所谓主从式,即在数个单片机中,有一个是主机,其余的是从机,从机服从主机的调度、支配。在实际的多机应用系统中,常采用RS-485串行标准总线进行数据传输。如图5-25所示。,图5-25多机通信原理图,49,要保证主机与所选择的从机实现可靠的通信,必须保证通信接口具有识别功能。MCS-51串行控制寄存器中的SM2就是为了满足这一要求而设置的多机控制位。若SM2=1(在串行口以方式2或方式3接收时),表示多机通信功能,这时出现两种可能的情况:接收到的第9位数据为1,数据装入SBUF,并置RI=1,向CPU发出中断请求。接收到的第9位数据为0,不产生中断,信息将被丢失。若SM2=0,则接收到的第9位信息无论是0还是1,都产生RI=1的中断标志,接收到的数据装入SBUF。根据这个功能,便可实现多个MCS-51系统的串行通信。,50,多机通信的过程:使所有从机的SM2=1,处于准备接收一帧地址数据的状态。主机设第9位数据为1,发送一帧地址信息,与所需的从机进行联络。从机接收到地址信息后,各自将其与自己的地址相比较,对于地址相符的从机,使SM2=0,并将本机的地址送回主机作为应答,准备接收主机随后发来的数据或命令信息;对于地址不相符的从机,仍保持SM2=1状态,不响应主机信息,直至发送新的一帧地址信息。MCS51单片机构成的多机通信系统最多允许255台从机,其地址分别为00HFEH。“地址”FFH是对所有从机都起作用的一条控制命令,命令使被寻址从机恢复SM2=1的状态。主机接收从机回送的地址应答信息后,于其发送的地址信息比较:相符,则复位TB8,开始发送数据信息或控制信息;如果不相符,则置位TB8,继续发送地址信息。,51,多机通信控制程序设计:主机发送的命令控制字:00H-从机接收数据命令,01H-从机发送数据命令,其他位非法命令。从机状态字格式:,ERR=1:从机接收到非法命令;TRDY=1:从机发送准备就绪;RRDY=1:从机接收准备就绪。,52,主机控制程序:主机主程序用于定时器T1初始化,串行口初始化和传递主机通信子程序所需入口参数。主机通信子程序用于主机和从机间一个数据块的传送。程序中所用寄存器分配如下:,R0存放主机发送数据块首地址(SOURCE1);,R1存放主机接收数据块首地址(TARGET1);,R2存放被寻址从机地址(SLAVE);,R3存放主机发出命令(00H,01H);,R4存放发送数据块长度(LEN1);,R5存放接收数据块长度(LEN2)。,53,主机主程序:START:MOVTMOD,#20H;定时器T1方式2MOVTH1,#0F3H;定时器T1初值MOVTL1,#0F3H;波特率为2400bps(fosc=6M)SETBTR1;启动T1工作MOVSCON,#0D8H;串行口方式3,允许接收MOVPCON,#80H;SMOD=1,波特率加倍MOVR0,#SOURCE1;发送数据块首址送R0MOVR1,#TARGET1;接收数据块首址送R1MOVR2,#SLAVE;被寻址从机地址送R2MOVR3,#00H/01H;00H,从机接收命令;01H,从机发送命令MOVR4,#LEN1;发送数据块长度送R4MOVR5,#LEN2;接收数据块长度送R5ACALLHOST_COMM;调用主机通信子程序SJMP;等待,54,主机通信子程序:HOST_COMM:MOVA,R2;从机地址送AMOVSBUF,A;发送从机地址JNBRI,;等待接收从机应答地址CLRRI;从机应答后清RIMOVA,SBUF;从机应答地址送AXRLA,R2;核对两个地址JZHOST_COMD;相符,则转HOST_COMDHOST_RST:MOVSBUF,#0FFH;发送从机复位信号SETBTB8;地址帧标志送TB8SJMPHOST_COMM;重发从机地址HOST_COMD:CLRTB8;准备发送命令MOVSBUF,R3;送出命令JNBRI,;等待从机应答CLRRI;从机应答后清RIMOVA,SBUF;读从机状态送AJNBACC.7,COMD_TYPE;有效命令,转移SJMPHOST_RST;若非法命令,则重新联络,55,COMD_TYPE:CJNER3,#00H,HOST_TEST;若为从机发送(01H)转HOST_TESTJNBACC.0,HOST_RST;若为从机接收且未就绪,则重新联络HOST_SEND:MOVSBUF,R0;从机接收就绪,开始发送JNBTI,;等待发送结束CLRTI;发送结束后清TIINCR0;R0指向下一发送数据DJNZR4,HOST_SEND;若数据块未发完,则继续SJMPRETURNHOST_TEST:JNBACC.1,HOST_RST;从机发送未就绪,重新联络HOST_RECEIVE:JNBRI,;等待接收完毕CLRRI;接收到一帧后清RIMOVA,SBUF;收到的数据送AMOVR1,A;存入内存INCR1;接收数据区指针加1DJNZR5,HOST_RECEIVE;若未接收完,则继续RETURN:RETEND,56,从机控制程序:从机主程序用于定时器T1初始化、串行口初始化和中断初始化,中断服务程序用于对主机的通信。寄存器分配为:R0:存放发送数据块首地址(SOURCE2)R1:存放接收数据块首地址(TARGET2)R2:存放发送数据块长度(LEN3)R3:存放接收数据块长度(LEN4),ORG0000HLJMPSTARTORG0023HLJMPSINTSBV;转入从机中断服务程序,57,START:MOVSP,#30HMOVTMOD,#20H;定时器T1方式2MOVTH1,#0F3H;定时器T1初值MOVTL1,#0F3H;波特率为2400bps(fosc=6M)SETBTR1;启动T1工作MOVSCON,#0F8H;串行口为方式3,允许接收,SM2=1,TB8=1MOVPCON,#80H;SMOD=1,波特率加倍MOVR0,#SOURCE2;R0指向发送数据块始址MOVR1,#TARGET2;R1指向接收数据块始址MOVR2,#LEN3;发送数块长度送R2MOVR3,#LEN4;接收数块长度送R3SETBES;允许串行口中断SETBEA;开CPU中断CLRRI;清RISJMP;等待中断,58,从机中断服务程序:由于从机串行口设定为方式3、SM2=1和RI=0,且串行口中断已经开放,因此从机的接收中断总能被响应(主机发送地址时)。在中断服务程序中,SLAVE是从机的本机地址,25H位(即20H.5)为本机发送就绪位地址(1表示从机发送准备就绪),21H位(即20H.1)为本机接收就绪状态位(1表示本机已准备就绪)。,SLAVE_INT_R:CLRRI;接收到地址后清RIPUSHACC;保护A于堆栈PUSHPSW;保护PSW于堆栈MOVA,SBUF;接收的从机地址送AXRLA,#SLAVE;和本机地址核对JZSL_R_ADD;若是呼叫本机,则继续SJMPRETURN;返主程序,59,SL_R_ADD:CLRSM2;复位SM2,准备接收数据/命令MOVSBUF,#SLAVE;发回本机地址,供核对JNBRI,;等待接收主机发来的数据/命令CLRRI;接收到后清RIJNBRB8,SL_R_CD;若是数据/命令,则继续SETBSM2;若是复位信号,则置位SM2SJMPRETURN;返主程序SL_R_CD:MOVA,SBUF;接收命令送ACJNEA,#02H,$+3;命令合法?JCSL_R_YXCD;若命令合法(00H或01H),则继续CLRTI;若命令不合法,则清TIMOVSBUF,#80H;发送ERR=1的状态字SETBSM2;令SM2=1SJMPRETURN;返主程序,60,SL_R_YXCD:JZSL_R_COMD;若为接收命令(00H),则转SL_R_DJB20H.5,SL_T_RAD;若为发送命令(01H)且发送就绪,则转SL_T_RADMOVSBUF,#00H;本机发送未就绪,发TRDY=0SETBSM2SJMPRETURN;返主程序SL_T_RAD:MOVSBUF,#02H;发送TRDY=1的状态字JNBTI,;等待发送完毕CLRTI;接收到后清TILOOP1:MOVSBUF,R0;发送一个字符数据JNBTI,;等待发送完毕CLRTI;发送完毕后清TIINCR0;发送数据块始址加1DJNZR2,LOOP1;字符未发完,则继续SETBSM2;令SM2=1SJMPRETURN;返回,61,SL_R_D:JB20H.1,SL_R_DATA;本机接收就绪则SL_T_RADMOVSBUF,#00H;本机接收未就绪,发RRDY=0SETBSM2;令SM2=1SJMPRETURN;返回主程序SL_R_DATA:MOVSBUF,#01H;发出RRDY=1状态字LOOP2:JNBRI,;接收一个字符CLRRI;接收一帧字符后后清RIMOVR1,SBUF;存入内存INCR1;接收数据块指针加1DJNZR3,LOOP2;若未接收完,则继续SETBSM2;令SM2=1RETURN:POPPSW;不是呼叫本机,则恢复PSWPOPACC;恢复ACCRETI;中断返回END,62,在工控系统(尤其是多点现场工控系统)设计实践中,单片机与PC机组合构成分布式控制系统是一个重要的发展方向。分布式系统主从管理,层层控制。主控计算机监督管理各子系统分机的运行状况。子系统与子系统可以平等信息交换,也可以有主从关系。分布式系统最明显的特点是可靠性高,某个子系统的故障不会影响其它子系统的正常工作。1台PC机即可以与1个80C51单片机应用系统通信,也可以与多个80C51单片机应用系统通信,如图5-26所示。单片机与PC机通信时,其硬件接口技
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 巴中市中储粮2025秋招基建工程岗高频笔试题库含答案
- 国家能源日喀则市2025秋招计算机与自动化类面试追问及参考回答
- 舟山市中石油2025秋招笔试模拟题含答案财务与审计岗
- 中国联通金昌市2025秋招面试无领导高频议题20例
- 鸡西市中石化2025秋招面试半结构化模拟题及答案油气储运与管道岗
- 吕梁市中储粮2025秋招综合管理岗高频笔试题库含答案
- 湘潭市中石化2025秋招面试半结构化模拟题及答案安全环保与HSE岗
- 大唐电力佳木斯市2025秋招半结构化面试模拟30问及答案
- 中国移动安康市2025秋招行业解决方案岗位专业追问清单及参考回答
- 中国联通新疆地区2025秋招行业解决方案岗位专业追问清单及参考回答
- 结肠癌肝转移护理查房课件
- 口腔预防保健课件
- 九年级数学上(前两章)试题 Microsoft Word 文档1
- 视频监控系统安装施工方案
- -首次执行衔接问题-行政
- GB/T 95-2002平垫圈C级
- 一起重新构想我们的未来:为教育打造新的社会契约
- GB/T 21073-2007环氧涂层七丝预应力钢绞线
- 压力管道特性表
- 高级会计师评审个人业绩报告(精选9篇)
- 储能型虚拟电厂的建设与思考分析报告
评论
0/150
提交评论