《第7章_MCS-51的串行口.ppt》由会员分享,可在线阅读,更多相关《第7章_MCS-51的串行口.ppt(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7章章 MCS-51的串行口的串行口主要内容:MCS-51单片机内部串行口的具体结构、组成原理、工作方式的设置及典型应用,为读者后续学习单片机应用系统设计中双机、多机通讯问题奠定基础。1第第7 7章章 MSC-51MSC-51的串行口的串行口7 MCS-517 MCS-51的串行口的串行口w所谓通信,是指微型计算机系统内部部件之间、微型计算机与外部设备之间、微型计算机与微型计算机之间的数据传送(信息交换)。2第第7 7章章 MSC-51MSC-51的串行口的串行口串行通信和并行通信串行通信和并行通信w并行并行并行并行通信,即数据的各位通信,即数据的各位通信,即数据的各位通信,即数据的各位同
2、时同时同时同时传送;传送;传送;传送;计算机1GND计算机2GND并行通信计算机1GND计算机2GND发送接收串行通信串行通信,即数据串行通信,即数据串行通信,即数据串行通信,即数据一位一位一位一位一位一位一位一位顺序传送。顺序传送。顺序传送。顺序传送。3第第7 7章章 MSC-51MSC-51的串行口的串行口异步通信和同步通信异步通信和同步通信 1异步通信 数据通常是以字符(或字节)为单位组成字符帧传送的,由发送端一帧一帧地发送,通过传输线由接收设备一帧一帧地接收。4第第7 7章章 MSC-51MSC-51的串行口的串行口异步通信和同步通信异步通信和同步通信5第第7 7章章 MSC-51MS
3、C-51的串行口的串行口异步通信和同步通信异步通信和同步通信2同步通信 同步通信中,在数据开始传送前用同步字符来同步通信中,在数据开始传送前用同步字符来指示(常约定指示(常约定1个个-2个),并由时钟来实现发送个),并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,端和接收端同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到通信告一段落。下面就连续按顺序传送数据,直到通信告一段落。同步传送时,字符与字符之间没有间隙,也同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步不用起始位和停止位,仅在数据块开始时用同步字符字符SYNC来指示,来指示,6
4、第第7 7章章 MSC-51MSC-51的串行口的串行口异步通信和同步通信异步通信和同步通信7第第7 7章章 MSC-51MSC-51的串行口的串行口波特率波特率在串行通信中,数据是按位进行传送的,因此传送速率用每秒传送数据位的数目来表示,称之为波特率波特率(Baudrate),单位是BPS(BitPerSecond)波特率是串行通信的重要指标,用于表征数据传输的速度。但和字符实际传输速率不同,字符的实际传输速率指每秒钟内所传字符的帧数,和字符帧格式有关。8第第7 7章章 MSC-51MSC-51的串行口的串行口7.1 MCS-51串行口的结构串行口的结构MCS-51单片机具有一个全双工串行通
5、信接口,即单片机具有一个全双工串行通信接口,即能同时进行串行发送和接收数据。能同时进行串行发送和接收数据。它可以作它可以作UATR(Universalasynchronousreceiverandtransmitter通用异步接收和发送器)用,也可以通用异步接收和发送器)用,也可以作同步移位寄存器用。作同步移位寄存器用。使用串行接口可以实现单片机系统之间点对点的单使用串行接口可以实现单片机系统之间点对点的单机通信和单片机与系统机的单机或多机通信。机通信和单片机与系统机的单机或多机通信。9第第7 7章章 MSC-51MSC-51的串行口的串行口7.1 MCS-51串行口的结构串行口的结构10第第
6、7 7章章 MSC-51MSC-51的串行口的串行口串行口控制寄存器串行口控制寄存器n nSBUFSBUF串行口数据缓冲器串行口数据缓冲器串行口数据缓冲器串行口数据缓冲器l共两个:一个发送寄存器共两个:一个发送寄存器SBUF,一个接收一个接收SBUF,二者共用一个地址二者共用一个地址99H。n nSCONSCON串行口控制寄存器(串行口控制寄存器(串行口控制寄存器(串行口控制寄存器(98H98H)。)。)。)。n nPCONPCON电源控制寄存器(电源控制寄存器(电源控制寄存器(电源控制寄存器(87H87H)11第第7 7章章 MSC-51MSC-51的串行口的串行口串行口控制寄存器串行口控制
7、寄存器SCONSCON工作方式选择多机通信控制串行接收允许控制接收数据的第9位发送数据的第9位接收中断标志发送中断标志SM0 SM1SM2 REN TB8RB8TIRI9FH9EH9DH9CH 9BH 9AH99H98H例:设串行口工作在方式例:设串行口工作在方式1,允许接收,则指令为:,允许接收,则指令为:MOV SCON,#01010000B12第第7 7章章 MSC-51MSC-51的串行口的串行口串行口控制寄存器串行口控制寄存器SCONSCONSM0SM1模式功能波特率000110110123同步移位寄存器10位UART11位UART11位UARTfOSC/12可变(T1溢出率)fOS
8、C/64或fOSC/32可变(T1溢出率)13第第7 7章章 MSC-51MSC-51的串行口的串行口电源控制寄存器电源控制寄存器PCONPCON只有该位有用,为只有该位有用,为只有该位有用,为只有该位有用,为1 1时,方式时,方式时,方式时,方式1 1、方式、方式、方式、方式2 2和和和和方式方式方式方式3 3的波特率加倍;为的波特率加倍;为的波特率加倍;为的波特率加倍;为0 0时不变。时不变。时不变。时不变。SMOD GF1 GF0PDIDL87H14第第7 7章章 MSC-51MSC-51的串行口的串行口7.2 7.2 串行口工作方式串行口工作方式 在串行口控制寄存器在串行口控制寄存器S
9、CON中,中,SM0和和SM1位决定串行口的工作方式。位决定串行口的工作方式。8051串串行口共有四种工作方式。行口共有四种工作方式。15第第7 7章章 MSC-51MSC-51的串行口的串行口方式方式00同步移位寄存器方式同步移位寄存器方式 当当SM00、SM10时,串行口选择方式时,串行口选择方式0。这种工作方式实质上是一种同步移位寄器方式。这种工作方式实质上是一种同步移位寄器方式。数据传输波特率固定为(数据传输波特率固定为(1/12)fosc。由由RXD(P3.0)引脚输入或输出数据,引脚输入或输出数据,由由TXD(P3.1)引脚输出同步移位时钟。引脚输出同步移位时钟。接收接收/发送的每
10、发送的每一帧信息有一帧信息有8 8位数据,低位位数据,低位在前,高位在后,没有起始位和停止位在前,高位在后,没有起始位和停止位。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0 16第第7 7章章 MSC-51MSC-51的串行口的串行口方式方式00同步移位寄存器方式同步移位寄存器方式 串行口的串行口的SBUF是作为是作为8位同步移位寄存器用,位同步移位寄存器用,主要用于和外部同步移位寄存器连接以扩展并行主要用于和外部同步移位寄存器连接以扩展并行I/O接口(将串行口变为接口(将串行口变为1个或多个个或多个8位并行位并行I/O口口使用)。此方式是半双工的,并非是一种同步通使用)。
11、此方式是半双工的,并非是一种同步通信方式。信方式。17第第7 7章章 MSC-51MSC-51的串行口的串行口 数据发送数据发送 串行口扩展并行输出口使用时,要有串行口扩展并行输出口使用时,要有“串入并出串入并出”的移位寄存器配合。的移位寄存器配合。18第第7 7章章 MSC-51MSC-51的串行口的串行口 数据发送数据发送19第第7 7章章 MSC-51MSC-51的串行口的串行口 数据发送数据发送20第第7 7章章 MSC-51MSC-51的串行口的串行口 数据发送数据发送RXDTXD21第第7 7章章 MSC-51MSC-51的串行口的串行口 数据发送数据发送TXDRXD22第第7 7
12、章章 MSC-51MSC-51的串行口的串行口 数据发送数据发送串行口方式串行口方式0 0发送时的控制字:发送时的控制字:w方式0时:SM0,SM100w方式0时SM2必须为0:SM20wREN1时允许接收:REN0w方式0为8位数据,TB8、RB800w发送前,发送中断标志TI0接收中断标志RI0w故控制字(SCON)00000000B00H23第第7 7章章 MSC-51MSC-51的串行口的串行口 数据接收数据接收 接收时,软件置接收时,软件置REN=1(同时同时RI=0),),即开始接即开始接收。在下一个机器周期的收。在下一个机器周期的S3P1S5P2,从,从TXD(P3.1)脚上输出
13、低电平的移位时钟,在此机器周期的脚上输出低电平的移位时钟,在此机器周期的S5P2对对P3.0脚采样。脚采样。24第第7 7章章 MSC-51MSC-51的串行口的串行口 数据接收数据接收25第第7 7章章 MSC-51MSC-51的串行口的串行口 数据接收数据接收串行口方式串行口方式0 0接收时的控制字:接收时的控制字:w方式0时:SM0,SM100w方式0时SM2必须为0:SM20wREN1时允许接收:REN1w方式0为8位数据,TB8、RB800w接收前,发送中断标志TI0接收中断标志RI0w故控制字(SCON)00010000B10H26第第7 7章章 MSC-51MSC-51的串行口的
14、串行口方式方式110110位位UARTUART w方式方式1 1、方式、方式2 2、方式、方式3 3均为全双工异步收发方式,串行均为全双工异步收发方式,串行数据经数据经TXDTXD(P3.1P3.1)端发送给外设,而外设发出的串行端发送给外设,而外设发出的串行数据由数据由RXDRXD(P3.0P3.0)端接收,发送和接收可同时进行。端接收,发送和接收可同时进行。w当当SM0SM00 0,SM1SM11 1时,串行口工作在方式时,串行口工作在方式1 1。串行口为。串行口为1010位异步通信方式。方式位异步通信方式。方式1 1多用于两个单片机(双机)多用于两个单片机(双机)之间或单片机与外设电路间
15、的点对点通信。之间或单片机与外设电路间的点对点通信。w在接收时,停止位进入在接收时,停止位进入SCONSCON的的RB8RB8。方式方式1 1的传送波特率的传送波特率可调。可调。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0 起始起始停止停止27第第7 7章章 MSC-51MSC-51的串行口的串行口(1 1)发送过程)发送过程TI0时,任何一条“写SBUF”指令都可以启动一次发送,数据送入发送缓冲器SBUF,硬件自动加入起始位和停止位,构成完整的一帧数据。在移位脉冲的控制下,由TXD端串行输出。当一帧字符发送完后,使TXD输出线维持在1状态,并使TI置1以通知CPU再发送下
16、一个字符。28第第7 7章章 MSC-51MSC-51的串行口的串行口(2 2)接收过程)接收过程w接收操作在REN1和RI0条件下进行。w方式1是靠检测RXD来判断的,CPU不断采样RXD端,采样速率为波特率的16倍,当采样到1到0的负跳变时,启动一次接收。29第第7 7章章 MSC-51MSC-51的串行口的串行口(2 2)接收过程)接收过程w在移位脉冲控制下,把接收的数据移入输入移位寄存器中,直到接收到数据第9位(即停止位)时,接收电路必须同时满足以下两个条件:RI0,且,且SM20或接或接收到的停止位为收到的停止位为1,才能把输入移位寄存器的8位数据存入“SBUF(接收)”,把停止位送
17、入RB8中,并使RI置1发出串行口中断请求(需开放中断),通知CPU执行“读SBUF”指令,从SBUF中取出接收到的一个数据。w条件不满足,则这次收到的数据就被舍去,不送入“SBUF(接收)”中,这就意味着丢失了一组接收数据。30第第7 7章章 MSC-51MSC-51的串行口的串行口方式方式2 2、311311位位UARTUART 每帧每帧11位,包括位,包括1位起始位,位起始位,8位数据位,位数据位,1位可位可编程的第编程的第9数据位和数据位和1位停止位。位停止位。串行口工作方式串行口工作方式2和方式和方式3均为每帧均为每帧11位异步通信格位异步通信格式,由式,由TXD和和RXD发送与接收
18、(两种方式操作是完全一发送与接收(两种方式操作是完全一样的,所不同的只是波特率)。样的,所不同的只是波特率)。发送时第发送时第9数据位来自数据位来自SCON寄存器的寄存器的TB8位,位,可以作可以作为数据的奇偶校验位,也可以作为多机通信中的地址、数为数据的奇偶校验位,也可以作为多机通信中的地址、数据标志位据标志位;接收时,第;接收时,第9数据位进入数据位进入SCON的的RB8。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0 起始起始停止停止D8D831第第7 7章章 MSC-51MSC-51的串行口的串行口(1 1)发送过程)发送过程 发送前,先根据通信协议由软件设置发送前,
19、先根据通信协议由软件设置TB8,然后然后将要发送的数据写入将要发送的数据写入SBUF,即可启动发送过程。串即可启动发送过程。串行口能自动把行口能自动把TB8取出,并装入到第取出,并装入到第9位数据位的位位数据位的位置,再逐一发送出去。发送完毕,使置,再逐一发送出去。发送完毕,使TI=1。32第第7 7章章 MSC-51MSC-51的串行口的串行口(2 2)接收过程)接收过程 使使SCON中的中的REN=1,开始接收。当检测到开始接收。当检测到RXD端有端有10的跳变(起始位)时,开始接收的跳变(起始位)时,开始接收9位数据,送入移位位数据,送入移位寄存器(寄存器(9位)。当满足位)。当满足RI
20、=0且且SM2=0或接收到的第或接收到的第9位位数据为数据为1时,前时,前8位数据送入位数据送入SBUF,附加的第附加的第9位数据送位数据送入入SCON中的中的RB8,置,置RI为为1;否则,这次接收无效,也;否则,这次接收无效,也不置位不置位RI。33第第7 7章章 MSC-51MSC-51的串行口的串行口7.3 7.3 多机通信多机通信 80518051单片机工作在串行方式单片机工作在串行方式2 2、3 3时,具有多机时,具有多机通信功能,可以实现一台主机与多台从机的信息交通信功能,可以实现一台主机与多台从机的信息交流。通信只在主从机之间进行,而从机与从机之间流。通信只在主从机之间进行,而
21、从机与从机之间不可以直接通信。不可以直接通信。RXDTXD主机8051RXD TXD 8051 0#从机RXD TXD 80511#从机RXD TXD 8051 N#从机34第第7 7章章 MSC-51MSC-51的串行口的串行口主从多机通信的过程如下主从多机通信的过程如下 )使所有的从机工作在方式2或方式3,且SM2位置1,REN=1,以便接收主机发来的地址。)主机发出要寻址的从机的一帧地址信息,其中包括8位需要与之通信的从机地址,第9位TB8=1。)所有从机接收到地址帧后,置RI=1。)各从机相应中断,进入中断服务程序,进行地址比较。对于地址相同的从机,使SM20,准备接收主机随后发来的数
22、据信息;对于地址不符合的从机,仍保持SM2=1的状态,对主机随后发来的数据不予理睬,直至发送新的地址帧。)主机给已被寻址的从机发送控制指令和数据(数据帧的第9位为0)实现主从通信。35第第7 7章章 MSC-51MSC-51的串行口的串行口7.4 7.4 串行通信的波特率串行通信的波特率方式0的波特率:方式方式0时,发送或接收一位数据的移位时钟脉冲时,发送或接收一位数据的移位时钟脉冲由由S6P2给出,每个机器周期产生一个移位时钟,发给出,每个机器周期产生一个移位时钟,发送或接收一位数据。因此,波特率固定为振荡频率送或接收一位数据。因此,波特率固定为振荡频率的的1/12,并不受,并不受PCON寄
23、存器中寄存器中SMOD位的影响。位的影响。36第第7 7章章 MSC-51MSC-51的串行口的串行口方式方式1 1、方式、方式3 3的波特率的波特率方式方式1、方式、方式3的波特率由定时器的波特率由定时器T1的溢出率和的溢出率和SMOD值决定。值决定。37第第7 7章章 MSC-51MSC-51的串行口的串行口方式方式1 1、方式、方式3 3的波特率的波特率定时器T1溢出率指在1秒钟内溢出的次数,即T1定时时间T的倒数。定时器T1作为波特率发生器最典型的用法是使用T1工作在定时方式2状态,则其波特率为:38第第7 7章章 MSC-51MSC-51的串行口的串行口方式方式1 1、方式、方式3
24、3的波特率的波特率例:设例:设PCON00H,fosc=6MHz,要波特率为要波特率为1200bps,试计算试计算T1定时初值。定时初值。解:由PCON00H可知SMOD0若若采用采用fosc=11.0592MHz39第第7 7章章 MSC-51MSC-51的串行口的串行口方式方式2 2的波特率的波特率 串行口方式串行口方式2控制接收与发送的移位时钟由振荡频控制接收与发送的移位时钟由振荡频率率fosc的第二节拍的第二节拍P2时钟(即时钟(即fosc/2)给出,还取决于给出,还取决于PCON中中SMOD位的值。位的值。40第第7 7章章 MSC-51MSC-51的串行口的串行口 四四种种工工作作
25、方方式式的的区区别别主主要要表表现现在在帧帧格格式式及及波特率两个方面。波特率两个方面。工作方式工作方式帧帧 格格 式式波波 特特 率率方式方式0 08 8位位全全是是数数据据位位,没没有有起起始始位位、停停止止位位固固定定,即即每每个个机机器器周周期期传传送送一位数据一位数据方式方式1 11010位位,其其中中1 1位位起起始始位位,8,8位位数数据据位位,1,1位停止位位停止位不不固固定定,取取决决于于T1T1溢溢出出率率和和SMODSMOD方式方式2 21111位位,其其中中1 1位位起起始始位位,9,9位位数数据据位位,1,1位停止位位停止位固定固定,即即2 2SMODSMODfosc
26、/64fosc/64方式方式3 3同方式同方式2 2同方式同方式1 141第第7 7章章 MSC-51MSC-51的串行口的串行口7.5 7.5 串行口应用和编程串行口应用和编程串行口的初始化编程:(1)按选定串行口的工作方式设定SCON的SM0、SM1两位二进制编码。(2)对于工作方式2或3,应根据需要在TB8中写入待发送的第9位数据(地址为1,数据为0)。(3)若选定的工作方式不是方式0,还需设定接收/发送的波特率。设定SMOD状态,以控制波特率是否加倍。(4)若选定工作方式1或3,则应对定时器T1进行初始化以设定其溢出率。(5)串行通信编程有两种方式:查询方式和中断方式,这两种方式中发送
27、和接收数据后都用注意清TI和RI。42第第7 7章章 MSC-51MSC-51的串行口的串行口3.4.5 3.4.5 串行口应用串行口应用T1初始化、启动设定串行通信方式发送数据地址、长度设定发送数据TI=1?清TI,修改地址指针发送完?RETNYYNT1初始化、启动设定串行通信方式,允许接收接收缓冲区地址、长度设定接收数据RI=1?清RI,修改地址指针接收完?RETNYYN查询方式发送流程图:查询方式接收流程图:43第第7 7章章 MSC-51MSC-51的串行口的串行口中断发送中断发送主程序:主程序:设定T1和SCON开中断EA、ES发送数据地址、长度设定其它操作发送数据中断服中断服务程序
28、:务程序:修改地址指针发送完?发送数据NY清TI清EA、ESRETI中断接收中断接收主程序:主程序:设T1和SCON允许接收开中断EA、ES接收数据缓冲区、长度设定其它操作中断服中断服务程序:务程序:接收数据送接收缓冲区接收完?NY清RI清EA、ESRETI44第第7 7章章 MSC-51MSC-51的串行口的串行口1 1、用串行口扩展并行输出口、用串行口扩展并行输出口串行口在方式0下有两种不同用途:一种是把串行口设置成并入串出的输出口,另一种是把串行口设置成串入并出的输入口。串行口设置成并入串出的输出口时,需要外接一片8位串行输入并行输出的同步移位寄存器74LS164或CD4094;设置成串
29、入并出的输入口时需要外接一片8位并行输入串行输出的同步移位寄存器74LS165或CD4014等。方式0的数据传送可以采用中断方式,也可以采用查询方式。无论哪种方式,都要借助于TI或RI标志。45第第7 7章章 MSC-51MSC-51的串行口的串行口例:用8051串行口外接CD4094移位寄存器扩展8位并行口,8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。可以采用查询方式或中断方式实现46ORG0000HAJMPMAINORG0100HSTART:MOVSCON,#00H;串行口初始化为方式0MOVA,#80H;最左位先亮的起始显示码送ACLRP1.
30、0;关闭并行输出CLRESOUT0:MOVSBUF,A;开始串行输出OUT1:JNBTI,OUT1;输出完否CLRTI;完了,清TI标志,以备下次发送SETBP1.0;打开并行口输出ACALLDELAY;延时一段时间RRA;循环右移CLRP1.0;关闭并行输出SJMPOUT0;循环DELAY:END47第第7 7章章 MSC-51MSC-51的串行口的串行口若要显示的N个数字存放在R0开始的n个存储单元,字符数n存放在R7,段码表地址位TABLETXDRXD48第第7 7章章 MSC-51MSC-51的串行口的串行口DISP:MOVSCON,#00HCLRESMOVDPTR,#TABLEMOV
31、A,R0ADDA,R7DECAMOVR0,ALOOP:MOVA,R0MOVCA,A+DPTRMOVSUBF,AJNBTI,$DECR0CLRTIDJNZR7,LOOPRET49第第7 7章章 MSC-51MSC-51的串行口的串行口3 3、点对点双机通信、点对点双机通信 点对点串行通信为双工通信,要求双方收、发点对点串行通信为双工通信,要求双方收、发能同时进行,用串行口工作方式能同时进行,用串行口工作方式1、方式、方式2、方式、方式3均均可以实现。可以实现。实际上,收、发操作主要是在串行接口进行,实际上,收、发操作主要是在串行接口进行,CPU只是把数据从接收缓冲器读出和把数据写入发送只是把数据
32、从接收缓冲器读出和把数据写入发送缓冲器。数据传送用中断方式进行,响应中断以后,缓冲器。数据传送用中断方式进行,响应中断以后,通过检测是通过检测是RI置位还是置位还是TI置位来决定置位来决定CPU是进行发送是进行发送操作还是接收操作。操作还是接收操作。50第第7 7章章 MSC-51MSC-51的串行口的串行口3 3、点对点双机通信、点对点双机通信 这种约定就叫做通信规程或协议,它必须在编程之这种约定就叫做通信规程或协议,它必须在编程之前确定,只有双方遵守这些规定才能顺利地进行通信。前确定,只有双方遵守这些规定才能顺利地进行通信。双机串行通信要想保证通信成功,双方必须有一系双机串行通信要想保证通
33、信成功,双方必须有一系列的约定,比如:列的约定,比如:发送方发送信息的内容,发送的波特率,发送数据发送方发送信息的内容,发送的波特率,发送数据帧格式、数据校验方式,对方是否收到,收到的内容有帧格式、数据校验方式,对方是否收到,收到的内容有没有错,要不要重发,怎样通知对方结束等等。没有错,要不要重发,怎样通知对方结束等等。51第第7 7章章 MSC-51MSC-51的串行口的串行口3 3、点对点双机通信、点对点双机通信利用方式1实现双机通信硬件连接图如下图所示。设1号机是发送方,2号机是接收方。采用串行口方式1进行通信,波特率为2400bps,T1工作在定时器方式2,单片机时钟振荡频率选用11.
34、0592MHz,则定时器T1的初值TH1=TL1=0F4H,PCON寄存器的SMOD位为0。52第第7 7章章 MSC-51MSC-51的串行口的串行口3 3、点对点双机通信、点对点双机通信当1号机发送时,先发送一个“E1”联络信号,2号机收到后回答一个“E2”应答信号,表示同意接收。当1号机收到应答信号“E2”后,开始发送数据,每发送一个字节数据都要计算“校验和”,假定数据块长度为16个字节,起始地址为40H,一个数据块发送完毕后立即发送“校验和”。2号机接收数据并转存到数据缓冲区,起始地址也为40H,每接收到一个字节数据便计算一次“校验和”,当收到一个数据块后,再接收1号机发来的“校验和”
35、,并将它与2号机求出的校验和进行比较。若两者相等,说明接收正确,2号机回答00H;若两者不相等,说明接收不正确,2号机回答0FFH,请求重发。1号机接到00H后结束发送。若收到的答复非零,则重新发送数据一次。53第第7 7章章 MSC-51MSC-51的串行口的串行口54第第7 7章章 MSC-51MSC-51的串行口的串行口发送程序如下:发送程序如下:ORG1000HASTART:CLREAMOVTMOD,#20H;定时器1置为方式2MOVTH1,#0F4H;装载定时器初值,波特率2400MOVTL1,#0F4HMOVPCON,#00HSETBTR1;启动定时器MOVSCON,#50H;设定
36、串口方式1,ALOOP1:MOVSBUF,#0E1H;发联络信号JNBTI,$;等待一帧发送完毕CLRTI;允许再发送JNBRI,$;等待2号机的应答信号CLRRI;允许再接收MOVA,SBUF;2号机应答后,读至AXRLA,#0E2H;判断2号机是否准备完毕JNZALOOP1;2号机未准备好,继续联络55第第7 7章章 MSC-51MSC-51的串行口的串行口ALOOP2:MOVR0,#40H;设定数据地址指针初值MOVR7,#10H;设定数据块长度初值MOVR6,#00H;清校验和单元ALOOP3:MOVSBUF,R0;发送一个数据字节MOVA,R6ADDA,R0;求校验和MOVR6,A;
37、保存校验和INCR0JNBTI,$CLRTIDJNZR7,ALOOP3;整个数据块是否发送完毕MOVSBUF,R6;发送校验和JNBTI,$CLRTIJNBRI,$;等待2号机的应答信号CLRRIMOVA,SBUF;2号机应答,读至AJNZALOOP2;2号机应答“错误”,转重新发送RET;2号机应答“正确”,返回56第第7 7章章 MSC-51MSC-51的串行口的串行口 ORG1000HBSTART:CLREAMOVTMOD,#20HMOVTH1,#0F4HMOVTL1,#0F4HMOVPCON,#00HSETBTR1MOVSCON,#50H;设定串口方式1,且准备接收BLOOP1:JNB
38、RI,$;等待1号机的联络信号CLRRIMOVA,SBUF;收到1号机信号XRLA,#0E1H;判断是否为1号机联络信号JNZBLOOP1;不是1号机联络信号,再等待MOVSBUF,#0E2H;是1号机联络信号,发应答信号JNBTI,$CLRTIMOVR0,#40H;设定数据块地址指针初值MOVR7,#10H;设定数据块长度初值MOVR6,#00H;清校验和单元接收程序接收程序57第第7 7章章 MSC-51MSC-51的串行口的串行口BLOOP2:JNBRI,$CLRRIMOVA,SBUFMOVR0,A;接收数据转储INCR0ADDA,R6;求校验和MOVR6,ADJNZR7,BLOOP2;
39、判断数据块是否接收完毕JNBRI,$;完毕,接收1号机发来的校验和CLRRIMOVA,SBUFXRLA,R6;比较校验和JZEND1;校验和相等,跳至发正确标志MOVSBUF,#0FFH;校验和不相等,发错误标志JNBTI,$;转重新接收CLRTIAJMPBLOOP1END1:MOVSBUF,#00HRET58第第7 7章章 MSC-51MSC-51的串行口的串行口3 3、点对点双机通信、点对点双机通信乙机:乙机:接收甲机发送的数据,并写入以接收甲机发送的数据,并写入以4000H为首址的片外数据存为首址的片外数据存储器中。每接收一帧数据,乙机对所接收的数据进行偶校验,并储器中。每接收一帧数据,
40、乙机对所接收的数据进行偶校验,并发出相应的应答信号,直至接收完所有数据。发出相应的应答信号,直至接收完所有数据。例:设甲机发送,乙机接收。串行接口工作于方式例:设甲机发送,乙机接收。串行接口工作于方式3(每帧数据为(每帧数据为11位,第位,第9位用于奇偶校验),两机均选用位用于奇偶校验),两机均选用 6.0MHz的振荡频率,的振荡频率,波特率为波特率为 2400 b/s。通信的功能为:通信的功能为:甲机:甲机:将片外数据存储器将片外数据存储器4000H407FH单元的内容向乙机发送,单元的内容向乙机发送,每发送一帧信息,乙机对接收的信息作偶校验,将每发送一帧信息,乙机对接收的信息作偶校验,将P
41、位值放在位值放在TB8中。中。若校验正确,则乙机向甲机回发若校验正确,则乙机向甲机回发“数据发送正确数据发送正确”的信号(以的信号(以00H作应答信号)。甲机收到乙机作应答信号)。甲机收到乙机“正确正确”的应答信号后再发送下一个的应答信号后再发送下一个字节。若奇偶校验有错,则乙机发出字节。若奇偶校验有错,则乙机发出“数据发送不正确数据发送不正确”的信号的信号(以(以FFH为应答信号)。甲机接收到为应答信号)。甲机接收到“不正确不正确”应答信号后,重新应答信号后,重新发送原数据,直至发送正确。该数据块发送完毕后停止发送。发送原数据,直至发送正确。该数据块发送完毕后停止发送。59第第7 7章章 M
42、SC-51MSC-51的串行口的串行口分析分析定时器定时器T1计数初值计数初值X:取取SMOD=0时,时,X=249.49。因取整数误差过大,故因取整数误差过大,故设设SMOD=1,则,则X=242.98243=F3H。定时器定时器T1工作于方式工作于方式2,故,故TMOD=20H串行口工作于方式3,允许接收,非多机通信,故SCON=11010000B=0D0H60第第7 7章章 MSC-51MSC-51的串行口的串行口61第第7 7章章 MSC-51MSC-51的串行口的串行口 ORG 0000H LJMP MAIN ;上电,转向主程序上电,转向主程序 ORG 0023H ;串行口的中断入口
43、地址串行口的中断入口地址 LJMP SERVE1 ;转向甲机中断服务程序转向甲机中断服务程序 ORG 2000H ;主程序主程序MAIN:MOV TMOD,#20H ;设设T1工作与模式工作与模式2 MOV TH1,#0F3H ;赋计数初值赋计数初值 MOV TL1,#0F3H ;赋计数值赋计数值 SETB TR1 ;启动定时器启动定时器T1 MOV PCON,#80H ;设设SMOD=1 MOV SCON,#0D0H ;置串行口方式置串行口方式3,允许接收,允许接收 MOV DPTR,#4000H ;置数据块首址置数据块首址 MOV R0,#80H ;置发送字节数初值置发送字节数初值 SET
44、B ES ;允许串行口中断允许串行口中断 SETB EA ;CPU开中断开中断 MOVX A,DPTR ;取第一个数据发送取第一个数据发送 MOV C,P MOV TB8,C ;奇偶标志送奇偶标志送TB8 MOV SBUF,A ;发送数据发送数据 SJMP$;等待中断等待中断甲机甲机 主程序主程序62第第7 7章章 MSC-51MSC-51的串行口的串行口SERVE1:JBC RI,LOOP;是接收中断,清除是接收中断,清除RI,转入接收转入接收 CLR TI ;是发送中断,清除此中断标志是发送中断,清除此中断标志 SJMP ENDTLOOP:MOV A,SBUF ;取乙机的应答信息取乙机的应
45、答信息 JZ LOOP1 MOVX A,DPTR ;否则甲机重发否则甲机重发 MOV C,P MOV TB8,C MOV SBUF,A ;甲机重发原数据甲机重发原数据 SJMP ENDTLOOP1:INC DPTR ;修改地址指针,准备发送下一数据修改地址指针,准备发送下一数据 MOVX A,DPTR MOV C,P MOV TB8,C MOV SBUF,A ;发送发送 DJNZ R0,ENDT ;数据块未发送完,继续发送数据块未发送完,继续发送 CLR ES ;全部发送完,禁止串行口中断全部发送完,禁止串行口中断ENDT:RETI ;中断返回中断返回 END中断服中断服务程序务程序:63第第
46、7 7章章 MSC-51MSC-51的串行口的串行口64第第7 7章章 MSC-51MSC-51的串行口的串行口 ORG 0000H LJMP MAIN ;上电,转向主程序上电,转向主程序 ORG 0023H ;串行口的中断入口地址串行口的中断入口地址 LJMP SERVE2 ;转向乙机中断服务程序转向乙机中断服务程序 ORG 2000H ;主程序主程序MAIN:MOV TMOD,#20H ;设设T1工作与模式工作与模式2 MOV TH1,#0F3H ;赋计数初值赋计数初值 MOV TL1,#0F3H ;赋计数值赋计数值 SETB TR1 ;启动定时器启动定时器T1 MOV PCON,#80H
47、 ;设设SMOD=1 MOV SCON,#0D0H ;置串行口方式置串行口方式3,允许接收,允许接收 MOV DPTR,#4000H ;置数据区首址置数据区首址 MOV R0,#80H ;置接收字节数初值置接收字节数初值 SETB ES ;允许串行口中断允许串行口中断 SETB EA ;CPU开中断开中断 SJMP$;等待中断等待中断乙机主程序乙机主程序:65第第7 7章章 MSC-51MSC-51的串行口的串行口SERVE2:JBC RI,LOOP ;是接收中断,清除此中断标志是接收中断,清除此中断标志 CLR TI ;是发送中断,清除此中断是发送中断,清除此中断 标志标志 SJMP END
48、TLOOP:MOV A,SBUF ;接收(读入)数据接收(读入)数据 MOV C,P ;奇偶标志送奇偶标志送C JC LOOP1 ;为奇数,转为奇数,转LOOP1 ORL C,RB8 ;为偶数,检测为偶数,检测RB8 JC LOOP2 ;奇偶校验错,转奇偶校验错,转LOOP2 SJMP LOOP3LOOP1:ANL C,RB8 ;检测检测RB8 JC LOOP3 ;奇偶校验正确,转奇偶校验正确,转LOOP3LOOP2:MOV A,#0FFH MOV SBUF,A ;发送发送“不正确不正确”应答信号应答信号 SJMP ENDT中断服中断服务程序:务程序:66第第7 7章章 MSC-51MSC-5
49、1的串行口的串行口LOOP3:MOVX DPTR,A ;存放接收数据存放接收数据 MOV A,#00H MOV SBUF,A ;发送发送“正确正确”应答信号应答信号 INC DPTR ;修改数据区指针修改数据区指针 DJNZ R0,ENDT ;数据块未接收完,返回数据块未接收完,返回 CLR ES ;所有数据接收完毕,禁止串行口中断所有数据接收完毕,禁止串行口中断ENDT:RETI ;中断返回中断返回 END67第第7 7章章 MSC-51MSC-51的串行口的串行口4.4.多机通信多机通信在主从式多机系统中,只有一台主机,但从机可以有多台。主机发送的信息可以传送到各个从机或指定从机,从机发送
50、的信息只能为主机所接收,各从机之间不能直接通信。串行口的方式2和方式3具有多机通信功能,可实现一台主单片机和若干台从单片机构成总线式的多机分布式系统。TXDRXD8051主机TXDRXD8051从机0TXDRXD8051从机1 TXDRXD8051从机n68第第7 7章章 MSC-51MSC-51的串行口的串行口4.4.多机通信多机通信1)1)主机的主机的SM2SM20 0;所有从机的所有从机的SM2SM21 1,都处于只接收地址帧都处于只接收地址帧的状态,以便接收主机发来的地址。的状态,以便接收主机发来的地址。2)2)主机给从发送一帧地址信息时,其中的主机给从发送一帧地址信息时,其中的8 8