您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第9章串口及串行通信技术.
●教学目标第9章串口及串行通信技术介绍MCS-51串行通信接口技术●学习要求掌握单片机串行通信接口的基本功能,了解串行通信接口的一般结构介绍PC机与单片机间的串行通信接口技术介绍MCS-51单片机之间的串行通信接口技术熟悉单片机串行通信接口,掌握单片机之间的串行通信接口以及PC机与单片机间的串行通信接口程序编制9.1MCS-51串行通信接口MCS-51内部含有一个可编程全双工串行通信接口,具有UART的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。9.1.1MCS-51串行口的结构MCS-51系列单片机的串行接口由发送缓冲器、接收缓冲器以及两个专用寄存器SCON和PCON组成,占用两条I/O专线(P3.0、P3.1),分别为RXD和TXD,从而构成全双工的通信方式。两个独立的接收、发送缓冲器SBUF(属于特殊功能寄存器)共用一个字节地址(99H),一个用来发送;一个用来接收。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入。在进行异步通信时,数据的发送和接收分别在各自的时钟(TCLK和RCLK)控制下进行的,但都必须与字符位数的波特率保持一致。MCS-51串行口的发送和接收时钟可由两种方式产生,一种是由主机频率fosc经分频后产生,另一种方式是由内部定时器T1或T2的溢出率经16分频后提供。串行口的发送过程由指令MOVSBUF,A启动,即CPU由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平)及其它控制位(如奇偶位等),然后在移位脉冲SHIFT的控制下,低位在前,高位在后,从TXD端(方式0除外)一位位地向外发送。串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。接收端RXD一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI置“1”,并向CPU申请中断。CPU响应中断,用一条指令(MOVA,SBUF)把接收缓冲器SBUF(收)的内容读入累加器。在整个串行收发过程中,CPU的操作时间很短,使得CPU还可以从事其它的各种操作(指工作在中断方式下),从而大大提高了CPU的效率。⑴串行口数据缓冲器SBUFSBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。CPU在写SBUF,就是修改发送缓冲器;读SBUF,就是读接收缓冲器。串行口对外有两条独立的收发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工。⑵串行口控制寄存器SCONSCON寄存器用来控制串行口的工作方式和状态,它是一个可按位寻址的特殊功能寄存器。在复位时所有位被清零,其字节地址为98H。SCON寄存器的格式如下SM0SM1工作方式000011102113⑶特殊功能寄存器PCONPCON主要是为CHMOS型单片机的电源控制设置的专用寄存器,字节地址为87H,不能按位寻址。9.1.2MCS-51系列单片机串行接口的工作方式MCS-51的串行口有四种工作方式,它是由SCON中的SM1和SM0来决定可变9位UART方式311fosc/32或fosc/649位UART方式201可变8位UART方式110fosc/12同步移位寄存器方式000波特率功能说明工作方式SM1SM01)方式0串行接口工作方式0为同步移位寄存器方式,其波特率是固定为振荡频率fosc的1/12。在这种工作方式下,发送和接收串行数据都通过RXD(P3.0)进行,从TXD(P3.1)输出移位脉冲,控制外部的移位寄存器移位。⑴方式0发送数据从RXD引脚串行输出,TXD引脚输出同步脉冲。发送操作在TI=0的情况下开始,由指令(MOVSBUF,A)将一个数据写入串行口发送缓冲器时启动发送,串行口将8位数据以fosc/12的固定波特率由低位到高位逐位从RXD引脚输出,当8位数据发送完后,硬件自动置中断标志TI为1,并向CPU请求中断(若中断已开放),CPU响应中断后,先将TI清零,再向SBUF传送下一个待发送的信息,以继续发送数据。⑵方式0接收在满足REN=1和RI=0的条件下,串行口处于方式0输入。此时,RXD为数据输入端,TXD为同步信号输出端,接收器也以fosc/12的波特率对RXD引脚输入的数据信息进行采样。当接收器接收完8位数据后,硬件自动置中断标志RI=1,并向CPU发出请求中断,CPU响应中断(或采用查询方式)后,通过指令(MOVA,SBUF)将接收的数据传送给累加器A。在再次接收之前,必须用软件将RI清零。在方式0工作时,必须使SCON寄存器中的SM2位为“0”,这并不影响TB8位和RB8位。方式0发送或接收完数据后由硬件置位TI或RI,CPU在响应中断后要用软件清除TI或RI标志。2)方式1在方式1时,串行口被设置为波特率可变的8位异步通信接口。⑴方式1发送串行口以方式1发送时,数据位由TXD端输出,发送1帧信息为10位,其中一位起始位“0”、八位数据位(先低位后高位)和一个停止位“1”。在TI=0的条件下,CPU执行一条数据写入发送缓冲器SBUF的指令(MOVSBUF,A),发送电路自动在8位数据位前后分别加一位起始位和一位停止位,就启动串行传送过程,在移位脉冲的作用下,从TXD线上依次发送一帧信息。当发送完数据后,置中断标志TI为“1”,TXD自动维持高电平。方式1所传送的波特率取决于定时器1的溢出率和特殊功能寄存器PCON中SMOD的值,计算方法如下:方式1波特率=×定时器T1的溢出率322SMOD⑵方式1接收当串行口置为方式1,且REN=1,RI=0时,串行口处于方式1的输入状态。它以所选波特率的16倍的速率对RXD引脚状态采样。当采样到由1到0的负跳变时,且接收电路连续8次采样均为低电平时,表明RXD线上已出现起始位,就启动接收器,开始接收一帧的其余的信息,一帧信息也为10位,一位起始位“0”、八位数据位(先低位后高位)和一个停止位“1”。接收电路开始在每位传送数据的第7、8、9三个脉冲进行采样,并以三取二的原则决定所采样数据的值,以保证可靠无误。在移位脉冲的作用下,逐位移入移位寄存器。方式1接收波特率设计方法与方式1传送波特率相同。在方式1接收时,必须同时满足以下两个条件:①RI=0,②停止位为“1”或SM2=0时,则接收数据有效,进入SBUF,停止位进入RB8,并置中断请求标志RI为“1”,CPU响应中断(或采用查询方式)后,通过指令(MOVA,SBUF)将接收的数据传送给累加器A,并用软件将RI清零。若上述两个条件不满足,则该组数据丢失,不再恢复。3)方式2串行口工作为方式2时,被定义为9位异步通信接口。方式2波特率=×振荡器频率642SMOD⑴方式2发送发送数据由TXD端输出,发送一帧信息为11位,其中一位起始位(0)、八位数据位(先低位后高位)、一位可控位1或0的第9位数据和一位停止位“1”。附加的第9位数据为SCON中的TB8(SCON中的D3位)的值,它由软件置位或清零,可作为多机通信中地址/数据信息的标志位,也可作为数据的奇偶校验位。⑵方式2接收当串行口置为方式2,且REN=1时,串行口以方式2接收数据。方式2的接收与方式1基本相似。数据由RXD端输入,接收11位信息,其中,一位起始位(0)、八位数据位(先低位后高位),一位可控位1或0的第9位数据和一位停止位“1”。当采样到RXD端由1到0的负跳变,并判断起始位有效后,便开始接收一帧信息,当接收器接收到第9位数据后,又同时满足下列两个条件:①RI=0;②SM2=0或接收到的第9位数据位为“1”时,将收到的数据送入SBUF(接收数据缓冲器),第9位数据送入RB8,并对RI置1;若以上两个条件有一个不满足,所接收的信息帧就会被丢失。4)方式3方式3为波特率可变的9位异步通信方式,除了波特率有所区别之外,其余都与方式2相同。方式3波特率=×定时器T1的溢出率322SMOD9.1.3MCS-51串行通信的波特率⑴方式0的波特率波特率是固定的,其值为fosc/12(fosc为主机频率)。⑵方式2的波特率方式2波特率=×振荡器频率642SMOD若SMOD=0,则所选波特率为fosc/64;若SMOD=1,则波特率为fosc/32。⑶方式1或方式3的波特率波特率=×定时器T1的溢出率322SMOD定时器T1溢出率=初值Kfosc211272H2006MHz110D0H20011.0592MHz600E8H20011.0592MHz1.2KF4H20011.0592MHz2.4KFAH20011.0592MHz4.8KFDH20011.0592MHz9.6KFDH20111.0592MHz19.2KFFH20112MHz62.5K串口方式1或3×××112MHz375K串口方式2××××12MHz1M串口方式0相应初值所选方式C/T定时器T1SMODFosc波特率9.2MCS-51单片机之间的通信MCS-51单片机的串行通信技术根据其应用可分为双机通信和多机通信。9.2.1MCS-51双机通信技术最简单的双机异步通信接口电路符合RS-422标准的双机通信接口电路1)查询方式进行双机通信甲机发送,乙机接收,双方都用查询方式的程序编制。⑴甲机发送甲机片内RAM中70H~7FH单元中的数据从串行口输出。定义以工作方式2发送,TB8作奇偶校验位。其中fosc=12MHz,波特率为375kbit/s,所以SMOD=1。参考程序:⑵乙机接收乙机接收到16字节数据并存入片外1000H~100FH单元中。接收过程要求判断奇偶校验位RB8。若出错,置F0标志为1;正确,则置F0标志为0,然后返回。参考程序:2)中断方式进行双机通信双机通信的接收方采用中断方式来接收数据,以提高CPU的工作效率,发送方仍采用查询方式发送数据。⑴甲机发送将外部数据存储器1000H为首地址的字节单元中的数据向乙机发送,在发送之前将数据块长度N发送给乙机,当发送完N个字节后,再发送一个累加校验和。发送的波特率为9600,两机晶振均为11.0592MHz。双机都工作于方式1,定时器Tl按方式2工作,经查表得初值为FDH,SMOD=0。参考程序:⑵乙机接收乙机接收甲机发送的数据,并写入以4000H为首址的外部数据存储器中,首先接收数据长度N,然后接收N个字节的数据,再接收校验码,进行累加和校验,数据传送结束后,向甲机发送一个状态字,表示正确或出错,出错则要求重发。接收采用中断的方式,设置两个标志位来判断接收到的信息是数据块长度、数据还是校验和。参考程序:9.2.2MCS-51多机通信技术通常MCS-51的多机通信采用主从式多机通信方式。在这种方式中,只有一台主机,有多台从机。主机发送的信息可以传到各个从机或指定的从机,各从机发送的信息只能被主机接收。1)多机通信原理MCS-51串行控制寄存器中的SM2就是为了满足这一要求而设置的多机控制位方式2或3接收时,若SM2=1,表示置多机通信功能位,这时出现两种可能的情况:①接收到第9位数据为1,数据装入SBUF,并置RI=1,向CPU发出中断请求;②接收到第9位数据为0,不产生中断,信息将被丢失。若SM2=0,则接收到的第9位信息无论是0还是1,都产生RI=1的中断标志,接收到的数据装人SBUF。根据这个功能,便可实现多个MCS-51系统的串行通信。多机通信的过程如下:①使所有从机的SM2=1,处于准备接收一帧地址数据的状态;②主机设第9位数据为1,发送一帧地址信息,与所需的从机进行联络;③每个从机接收到地址信息后,各自将其与自己的地址相比较,对于地址相符的从机,使SM2=0,准备接收主机随后发来的所有信息;对于地址不相符的从机,仍保持SM2=1状态,对主机随后发来的数据不理睬,直至发送新的一帧地址信息;④主机发送控制指令与数据
本文标题:第9章串口及串行通信技术.
链接地址:https://www.777doc.com/doc-2113321 .html