单片计算机及其应用7-9.ppt
第第章章51系系统统的的串串行行接接口口本章内容本章内容Single Chip Microcomputer7-1概概概概 述述述述7-4选学内容选学内容选学内容选学内容7-2 MCS-51的串行接口的串行接口7-3 MCS-517-3 MCS-51单片机串行口的应用单片机串行口的应用单片机串行口的应用单片机串行口的应用7-1概概 述述当今社会已进入信息时代,网络成为当今科技当今社会已进入信息时代,网络成为当今科技发展的一大方向,计算机系统通过网络这一桥梁,发展的一大方向,计算机系统通过网络这一桥梁,在信息时代中发挥着越来越大的作用。在单片机的在信息时代中发挥着越来越大的作用。在单片机的应用系统中,单机应用非常广泛,但在一些大型、应用系统中,单机应用非常广泛,但在一些大型、智能化系统中,必须要由多个单片机协同工作才能智能化系统中,必须要由多个单片机协同工作才能完成任务,因此,它们之间的信息传递成为了一种完成任务,因此,它们之间的信息传递成为了一种必然。在学习单片机间的通讯之前,我们有必要对必然。在学习单片机间的通讯之前,我们有必要对通信的基础知识有一些了解。通信的基础知识有一些了解。一、什么是串行通信?一、什么是串行通信?vv串行通信和并行通信串行通信和并行通信 计算机1 GND 计算机2 GND并行通信 计算机1 GND 计算机2 GND发送接收串行通信并行通信,即数据的各位并行通信,即数据的各位并行通信,即数据的各位并行通信,即数据的各位同时同时同时同时传送;传送;传送;传送;串行通信,即数据串行通信,即数据串行通信,即数据串行通信,即数据一位一位一位一位一位一位一位一位顺序传送。顺序传送。顺序传送。顺序传送。二、串行通信的分类二、串行通信的分类vv异步异步异步异步(Asynchronous Communication)(Asynchronous Communication)v异步是指收发双方时钟异步,即收方和发方的时钟异步是指收发双方时钟异步,即收方和发方的时钟各自独立,由起始位和结束位来实现收、发同步。各自独立,由起始位和结束位来实现收、发同步。允许允许5%的误差。的误差。(1 1 1 1)帧结构)帧结构)帧结构)帧结构 帧为收发双方传数据的基本单位帧为收发双方传数据的基本单位其结构如图所示。由一个起始位其结构如图所示。由一个起始位“0”,58位数据位数据(低位在前),再后为奇偶校验位和一个停止位(低位在前),再后为奇偶校验位和一个停止位“1”构成。构成。异步异步(Asynchronous Communication)(2)特点)特点v利用起始位和结束位来实现收发同步利用起始位和结束位来实现收发同步v帧间间隔随机帧间间隔随机v位间隔固定位间隔固定v每帧数据最多一个字节每帧数据最多一个字节(3)错误检验方法:)错误检验方法:奇偶校验奇偶校验串行通信的分类串行通信的分类vv同步同步同步同步(Synchronous Communication)(Synchronous Communication)v同步传送方式是一种同步传送方式是一种连续传送连续传送连续传送连续传送方式,适合于大量数据的高速方式,适合于大量数据的高速传送。收发双方的时钟实现同步。传送。收发双方的时钟实现同步。(1 1)帧结构)帧结构)帧结构)帧结构(2 2)特点)特点)特点)特点v利用同步字符或同步时钟实现收、发同步利用同步字符或同步时钟实现收、发同步v每帧数据为一数据块,故传送速率较异步快每帧数据为一数据块,故传送速率较异步快v同步时钟要求较严格同步时钟要求较严格(3 3)校验方法:)校验方法:)校验方法:)校验方法:CRC 循环冗余校验循环冗余校验三、波特率(三、波特率(Baud rateBaud rate)vv波特率波特率波特率波特率是指串行通讯中数据传送的速率,即每秒种是指串行通讯中数据传送的速率,即每秒种传送的数据传送的二进制位数。它指的是位与位之传送的数据传送的二进制位数。它指的是位与位之间的时间间隔。其单位为比特间的时间间隔。其单位为比特/秒,秒,bpsv在异步通讯中,收发双方是通过设定相同的波特率、在异步通讯中,收发双方是通过设定相同的波特率、依靠起始位和结束位来实现数据的准确传送。依靠起始位和结束位来实现数据的准确传送。例:例:例:例:设每秒传送设每秒传送120个字符,其帧结构为个字符,其帧结构为1个起始位,个起始位,7个数据位,个数据位,1位校验位和位校验位和1位结束位,其波特率为:位结束位,其波特率为:120字符字符/秒秒*10位位/字符字符=1200bps四、串行通信制式四、串行通信制式vv 单工单工(simplex)vv 半双工半双工(half duplex)vv 全双工全双工(full duplex)串行通信制式串行通信制式数据只能单数据只能单向流动向流动数据虽能双向通讯,数据虽能双向通讯,但任一时刻仅能单向但任一时刻仅能单向传送。传送。数据双向通讯,收、数据双向通讯,收、发各用一根信号线,发各用一根信号线,可完全独立工作。可完全独立工作。7-2 7-2 MCS-51的串行接口的串行接口vv概述概述有一个可编程全双工串行通信接口(有一个可编程全双工串行通信接口(有一个可编程全双工串行通信接口(有一个可编程全双工串行通信接口(UART)UART)UART)UART)(Universal Asychronous Receiver/Transmitter(Universal Asychronous Receiver/Transmitter(Universal Asychronous Receiver/Transmitter(Universal Asychronous Receiver/Transmitter )可同时发送、接收数据可同时发送、接收数据可同时发送、接收数据可同时发送、接收数据(Transmit/Receive)Transmit/Receive)有四种工作方式,帧格式有有四种工作方式,帧格式有有四种工作方式,帧格式有有四种工作方式,帧格式有8 8 8 8、10101010、11111111位。位。位。位。波特率波特率波特率波特率(Baud rate)(Baud rate)(Baud rate)(Baud rate)可设置可设置可设置可设置 波特率为每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒(bps)。一、串行口的构成一、串行口的构成串行口内部组成示意图串行口内部组成示意图如图所如图所示,结构较为复杂,我们在使示,结构较为复杂,我们在使用时可将其抽象为三个可供软用时可将其抽象为三个可供软件直接访问的的特殊功能寄存件直接访问的的特殊功能寄存器:器:PCON、SCON和和SBUF。通过对它们的读写操作即可完通过对它们的读写操作即可完全控制串行口。全控制串行口。MCS-51串行接口寄存器SBUFSBUF串行口数据缓冲器串行口数据缓冲器串行口数据缓冲器串行口数据缓冲器vv共两个:一个发送寄存器共两个:一个发送寄存器共两个:一个发送寄存器共两个:一个发送寄存器SBUFSBUF,一个接收,一个接收,一个接收,一个接收SBUFSBUF,二者,二者,二者,二者共用一个地址共用一个地址共用一个地址共用一个地址99H99H。它在物理上对应两个寄存器,发送它在物理上对应两个寄存器,发送它在物理上对应两个寄存器,发送它在物理上对应两个寄存器,发送寄存器和接收寄存器,由于它们并不在同一时刻使用,寄存器和接收寄存器,由于它们并不在同一时刻使用,寄存器和接收寄存器,由于它们并不在同一时刻使用,寄存器和接收寄存器,由于它们并不在同一时刻使用,因此两个寄存器共用一个地址并不会发生冲突,通过指因此两个寄存器共用一个地址并不会发生冲突,通过指因此两个寄存器共用一个地址并不会发生冲突,通过指因此两个寄存器共用一个地址并不会发生冲突,通过指令来区别是发送还是接收。其中,接收寄存器采用双缓令来区别是发送还是接收。其中,接收寄存器采用双缓令来区别是发送还是接收。其中,接收寄存器采用双缓令来区别是发送还是接收。其中,接收寄存器采用双缓冲而发送寄存器采用单缓冲。冲而发送寄存器采用单缓冲。冲而发送寄存器采用单缓冲。冲而发送寄存器采用单缓冲。SCONSCON串行口控制寄存器。串行口控制寄存器。串行口控制寄存器。串行口控制寄存器。它用来定义串行口它用来定义串行口它用来定义串行口它用来定义串行口的工作方式及监视串行口的工作状态。的工作方式及监视串行口的工作状态。的工作方式及监视串行口的工作状态。的工作方式及监视串行口的工作状态。PCONPCON电源及波特率选择寄存器,电源及波特率选择寄存器,电源及波特率选择寄存器,电源及波特率选择寄存器,PCON.7为为SMOD,波特率加倍位,当,波特率加倍位,当SMOD=1时,波特率为时,波特率为SMOD=0时的两倍。时的两倍。PCON不能进行位寻址,可用不能进行位寻址,可用ANLPCON,#7FH或或ORL PCON,#80H来对其来对其清零或置清零或置“1”。只有该位有用,为只有该位有用,为只有该位有用,为只有该位有用,为1 1时,波特率时,波特率时,波特率时,波特率22;为;为;为;为0 0时不变。时不变。时不变。时不变。电源及波特率选择寄存器电源及波特率选择寄存器PCONPCONSMOD GF1 GF0PDIDL87H串行口控制寄存器串行口控制寄存器SCONSCONSM0SM1SM2RENTB8RB8TIRI工作方式选择多机通信控制位允许串行接收位REN=1时,允许接收;REN=0时,禁止接收。接收数据的第9位方式2、3中第九位,多机通讯中可用来表示是地址帧还是数据帧接收中断标志,由硬件置“1”,而由软件清零发送中断标志9FH9EH9DH9CH9BH9AH99H98HSM0SM1工作方式工作方式功能功能波特率波特率00方式方式08位同步移位寄存器位同步移位寄存器fosc/1201方式方式110位位UART可变可变10方式方式211位位UARTfosc/64或或fosc/3211方式方式311位位UART可变可变串行方式的定义例:设串行口工作在方式例:设串行口工作在方式例:设串行口工作在方式例:设串行口工作在方式1 1 1 1,允许接收,则指令为:,允许接收,则指令为:,允许接收,则指令为:,允许接收,则指令为:MOV SCON,#01010000BMOV SCON,#01010000BMOV SCON,#01010000BMOV SCON,#01010000B串行口的四种工作方式串行口的四种工作方式vv方式的选择由方式的选择由方式的选择由方式的选择由SM1SM1、SM0SM0实现。实现。实现。实现。vv四种方式的比较:四种方式的比较:四种方式的比较:四种方式的比较:工作方式功能说明波特率方式08位同步移位寄存器常用于扩展I/O口fosc/12方式110位UART8位数据、起始位、结束位可变(取决于定时器1溢出率)方式211位UART8位数据、起始位0、结束位1和奇偶校验位fosc/64或fosc/32方式311位UART8位数据、起始位、结束位可变(取决于定时器1溢出率)1、方式、方式0v在此种方式下,串行口工作在在此种方式下,串行口工作在移位寄存器移位寄存器移位寄存器移位寄存器方式,其方式,其波特率为波特率为fOSC/12fOSC/12,数据从,数据从RXD(P3.0)端移出,)端移出,同步移位脉冲由同步移位脉冲由TXD(P3.1)输出。发送、接收的)输出。发送、接收的数据为低位在前。数据为低位在前。vv(1 1)发送。)发送。)发送。)发送。执行执行MOV SBUF,A后,数据和同步后,数据和同步时钟从串行口发出,发送结束后,必须由软件对时钟从串行口发出,发送结束后,必须由软件对TI清零。即:清零。即:JNB TI,$CLR TI其其时序如图时序如图所示:所示:(2)接)接 收收 REN=1且且RI=0时,启动一个接收过程。时,启动一个接收过程。数据从串行口输入,接收完毕后,数据从串行口输入,接收完毕后,RI=1,执,执行行MOV A,SBUF后,数据进入后,数据进入CPU,要进,要进行下一次接收,必须用软件对行下一次接收,必须用软件对RI清零,清零,SETBREN;MOV SCON,#10HJNB RI,$MOV A,SBUF其接收时序其接收时序如下图如下图所示:所示:2 2、方式、方式1 1v串行口工作在串行口工作在8 8位异步通讯接口位异步通讯接口方式。其一帧方式。其一帧信息为信息为1010位,其中,位,其中,8 8位数据位,一位起始位位数据位,一位起始位(0 0)和一位停止位()和一位停止位(1 1)。)。TXDTXD端为发送端端为发送端而而RXDRXD为接收端为接收端,波特率可变。,波特率可变。TXDRXDMCU(1)、方式方式1-1-发送发送v执行MOV SBUF,A后,数据从TXD输出,发送完一帧信息后,置TI=1,再次发送前,须对TI清零。其时序图如下图所示:(2)方式方式1-1-接收接收v由于方式由于方式1发送时不传送同步时钟,因而接收端在接收数据发送时不传送同步时钟,因而接收端在接收数据是通过采样来实现的。其采样频率为波特率的是通过采样来实现的。其采样频率为波特率的16倍,利用三倍,利用三中取二原则来确认接收数据。中取二原则来确认接收数据。v 接收过程在接收过程在REN置置1的前提下,从搜索到起始位开始。直到的前提下,从搜索到起始位开始。直到9位接收完毕(含位接收完毕(含1位停止位)。位停止位)。v在在9位接收完毕后,只有:位接收完毕后,只有:RI=0、SM2=0或接收到的停止位或接收到的停止位为为1,才将,才将8位数据送入位数据送入SBUF,停止位送,停止位送RB8,并置,并置RI=1。3 3、方式、方式2 2和方式和方式3 3v方式方式2和方式和方式3为为9位异步通讯口,一帧信息由位异步通讯口,一帧信息由11位组成,即起始位(位组成,即起始位(0)、)、8位数据位、位数据位、1位位可编程位和可编程位和1位停止位。方式位停止位。方式2和方式和方式3的区别的区别仅在于波特率不同仅在于波特率不同方式方式2波特率波特率=2SMOD64*fOSC方式方式3波特率波特率=2SMOD32*(定时器(定时器T1的溢出率)的溢出率)(1 1 1 1)发送)发送)发送)发送发送前,可以用任何位操作指令将第发送前,可以用任何位操作指令将第9位数据装入位数据装入TB8中,然后执行中,然后执行MOVSBUF,A。串行口会自动将。串行口会自动将TB8作为第作为第9位数据发出,发送完毕,位数据发出,发送完毕,TI=1。(2 2 2 2)接收)接收)接收)接收其方法与方式其方法与方式1类似类似说说 明明由于方式由于方式1、2和和3并不传送同步时钟,因并不传送同步时钟,因此,必须保证发送方和接收方应工作在相同此,必须保证发送方和接收方应工作在相同的波特率下,才能保证数据的准确传送。的波特率下,才能保证数据的准确传送。7-3 MCS-517-3 MCS-51单片机串行口的应用单片机串行口的应用一、一、MCS-51单片机的串行通讯的波特率单片机的串行通讯的波特率串行口的传送速率即波特率由串行口的传送速率即波特率由fosc、PCON、SMOD及定时器及定时器Ti的设定。的设定。串行口的四种工作方式对应于三种波串行口的四种工作方式对应于三种波特率:特率:1 1、方式、方式、方式、方式0:0:其波特率固定为其波特率固定为fosc/122 2、方式、方式、方式、方式2:2:有两种波特率可供选择有两种波特率可供选择方式方式2波特率波特率=2SMOD64*fOSC3 3、方式、方式、方式、方式1 1和方式和方式和方式和方式3 3波特率波特率=2SMOD32*(定时器(定时器T1的溢出率)的溢出率)定时器定时器T1的溢出率的溢出率=fOSC122K-初值初值1*其中,其中,K是定时器的位数,取决于定时器的工作方式。为是定时器的位数,取决于定时器的工作方式。为保证高精度,尽可能选择方式保证高精度,尽可能选择方式2自动装入方式。自动装入方式。定时器T1产生的常用波特率二、串行口方式二、串行口方式0 0用作扩展并行用作扩展并行I/OI/O口口用串行口扩展用串行口扩展I/O口具有电路简单易行,成本低口具有电路简单易行,成本低等优点,因而被经常使用。等优点,因而被经常使用。1 1 1 1、用方式、用方式、用方式、用方式0 0 0 0扩展并行输出口扩展并行输出口扩展并行输出口扩展并行输出口74LS164为为TTL型型,而而CD4094为为CMOS型串行移型串行移位寄存器位寄存器在串行口外接一个串入并出的移位寄存器,即在串行口外接一个串入并出的移位寄存器,即可扩展一个并行可扩展一个并行I/O口。口。例例例例7-4-1 7-4-1 7-4-1 7-4-1 用用用用8051805180518051串行口外接串行口外接串行口外接串行口外接74LS16474LS16474LS16474LS164扩展扩展扩展扩展8 8 8 8位并行输出口。位并行输出口。位并行输出口。位并行输出口。74LS16474LS164为为为为一串入并出移位寄存器,其一串入并出移位寄存器,其A、B为串为串行输入端,行输入端,CLK为移位时钟,为移位时钟,MR为清零端。串行口为清零端。串行口工作在方式工作在方式0,移位寄存器方式,也可将清零端直接连,移位寄存器方式,也可将清零端直接连到到VCC端。端。8051RXDTXDP1.0VCC发光二极管的显示延时采用延时子程序发光二极管的显示延时采用延时子程序DELAY来实现。来实现。SM0SM1SM2RENTB8RB8TIRI9FH9EH9DH9CH9BH9AH99H98H程序清单:程序清单:程序清单:程序清单:ORG2000HUART:MOV SCON,#00HMOV A,#80HCLRP1.0;移位寄存器清零移位寄存器清零LCALLDELAYSETB P1.0STA:MOV SBUF,AJNBTI,$CLRTIRRASJMP STA串行口发送标准模块串行口发送标准模块74LS16574LS165为为为为TTLTTL型型型型,而而而而CD4014CD4014为为为为CMOSCMOS型串行移位寄存器型串行移位寄存器型串行移位寄存器型串行移位寄存器SM0SM1SM2RENTB8RB8TIRI9FH9EH9DH9CH9BH9AH99H98H2 2、用方式、用方式0 0扩展并行输入口扩展并行输入口例例例例7-4-27-4-2用用用用80518051串行口外接串行口外接串行口外接串行口外接CD4014CD4014扩展扩展扩展扩展8 8位并行输出口。位并行输出口。位并行输出口。位并行输出口。CD4014为一并入串出移位寄存器,为一并入串出移位寄存器,Q8为串行数据输为串行数据输出端,出端,CLK为移位时钟端,为移位时钟端,P/S为预置为预置/移位控制端。移位控制端。P/S=1时,并行置入数据,时,并行置入数据,P/S=0时,开始串行移位。时,开始串行移位。输入联络信号由输入联络信号由K提供,提供,K=0时,表示有数据输入,时,表示有数据输入,当当RI=1时,表示数据串行移入完毕,可以进行下一次输时,表示数据串行移入完毕,可以进行下一次输入。入。输入允许开关则由输入允许开关则由SCON中的中的REN来控制,采用查来控制,采用查询询RI的状态的方式来决定数据传送与否。的状态的方式来决定数据传送与否。SM0SM1SM2RENTB8RB8TIRI程序清单:程序清单:REC:JBP1.1,$SETB P1.0CLRP1.0MOV SCON,#10HJNBRI,$CLRRIMOV A,SBUFSJMP REC串行接收标准模块串行接收标准模块无论是扩展输入无论是扩展输入,还是扩展输出口还是扩展输出口,都可以进行级连都可以进行级连,从而实现更多位的串行输入或串行输出扩展从而实现更多位的串行输入或串行输出扩展.SM0SM1SM2RENTB8RB8TIRI三、方式三、方式1的点对点的异步通讯的点对点的异步通讯v利用利用8031的串行口进行点对点的串行口进行点对点的全双工通讯。的全双工通讯。例例例例7-4-37-4-3假设两个假设两个假设两个假设两个80318031系统相距很近,它们以串行口直接相系统相距很近,它们以串行口直接相系统相距很近,它们以串行口直接相系统相距很近,它们以串行口直接相连,如图所示。要求它们之间进行双工的连,如图所示。要求它们之间进行双工的连,如图所示。要求它们之间进行双工的连,如图所示。要求它们之间进行双工的ASCIIASCII字符收发,字符收发,字符收发,字符收发,最高一位用于奇偶校验,波特率为最高一位用于奇偶校验,波特率为最高一位用于奇偶校验,波特率为最高一位用于奇偶校验,波特率为1200bps1200bps,fosc=6Mhzfosc=6Mhz1、由于数据位为、由于数据位为7位,及位,及1位奇偶校验位,因而可采用位奇偶校验位,因而可采用方式方式方式方式1 1 1 1。2、由于、由于波特率波特率为为1200bps,故定时器初值为:,故定时器初值为:TXDRXDGND8031甲甲TXDRXDGND8031乙乙8031双机通讯双机通讯3、奇偶校验作如下处理后,使、奇偶校验作如下处理后,使A中中1的个数始终为奇数个。的个数始终为奇数个。MOV A,#ASCIIMOV C,PCPLCMOV ACC.7,C若若A中原有奇数个中原有奇数个1,则则P=1,操作后操作后A中仍有奇数个中仍有奇数个1;若若A中原有偶数个中原有偶数个1,则则P=0,操作后操作后A中则有奇数个中则有奇数个1;4 4、双工通讯要求收发同时进行,收和发均在串行接口中、双工通讯要求收发同时进行,收和发均在串行接口中进行,进行,CPUCPU只是把数据写入缓冲器或从缓冲器中读入数据。只是把数据写入缓冲器或从缓冲器中读入数据。究竟是需要读或是写则通过检测究竟是需要读或是写则通过检测TI TI和和RIRI来进行区别。下面来进行区别。下面给出实现指定功能的通讯程序,发送和接收通过子程序调给出实现指定功能的通讯程序,发送和接收通过子程序调用来实现,发送缓冲区首址为用来实现,发送缓冲区首址为20H20H,接收缓冲区首址为,接收缓冲区首址为40H40H。主程序:主程序:主程序:主程序:ORG 0000HLJMP MAINORG 0023HLJMP SBR1ORG 0100HMAIN:MOV TMOD,#20HMOV TH1,#0F3HMOV TL1,#0F3HSETB TR1MOV SCON,#50HMOV R0,#20HMOV R1,#40HACALLSOUTAJMP$方式方式1允许接允许接收收REN=1SBR1:JNBRI,SENDACALLSINSJMP NEXTSEND:ACALLSOUTNEXT:RETISOUT:MOV A,R0MOV C,PCPLCMOV ACC.7,CINCR0MOV SBUF,AJNBTI,$CLRTIRETSIN:MOV A,SBUFCLRRIMOV C,PCPLCANLA,#7FHMOV R1,AINCR1RET以上是基本的双机通讯程序,以上是基本的双机通讯程序,以上是基本的双机通讯程序,以上是基本的双机通讯程序,大家可根据这一基本程序,大家可根据这一基本程序,大家可根据这一基本程序,大家可根据这一基本程序,加以发挥和扩充,即可完成加以发挥和扩充,即可完成加以发挥和扩充,即可完成加以发挥和扩充,即可完成较为复杂的通讯功能。较为复杂的通讯功能。较为复杂的通讯功能。较为复杂的通讯功能。四、方式四、方式四、方式四、方式2 2 2 2、方式、方式、方式、方式3 3 3 3与多机通讯与多机通讯与多机通讯与多机通讯RXDTXDGND8031主机主机8031多机通讯多机通讯TXDRXDGND从机从机1TXDRXDGND从机从机2TXDRXDGND从机从机3通讯原理:利用多机通讯位通讯原理:利用多机通讯位SM2和和TB8,主机发送接,主机发送接收数据的从机地址,该从机处于接收使能,能接收主收数据的从机地址,该从机处于接收使能,能接收主机随后发送的数据,地址不同的从机不能接收数据。机随后发送的数据,地址不同的从机不能接收数据。7-4 7-4 选学内容选学内容单片机之间的通信双机异步通信接口电路RS-422ARS-422A双机异步通信接口电路双机异步通信接口电路双机异步通信接口电路双机异步通信接口电路双机通信软件编程双机通信软件编程查询方式查询方式1)甲机发送甲机发送编程将甲机片外1000H101FH单元的数据块从串行口输出。定义方式2发送,TB8为奇偶校验位。发送波特率375kb/s,晶振为12MHz,所以SMOD=1。参考发送子程序如下:参考发送子程序如下:参考发送子程序如下:参考发送子程序如下:MOVMOVSCONSCON,#80H#80H;设置串行口为方式;设置串行口为方式;设置串行口为方式;设置串行口为方式2 2MOVMOVPCONPCON,#80H#80H;SMOD=1SMOD=1MOVMOVDPTRDPTR,#1000H#1000H;设数据块指针;设数据块指针;设数据块指针;设数据块指针MOVMOVR7R7,#20H#20H;设数据块长度;设数据块长度;设数据块长度;设数据块长度STARTSTART:MOVXAMOVXA,DPTRDPTR;取数据给;取数据给;取数据给;取数据给AAMOVMOVC,PC,PMOVMOVTB8,CTB8,C;奇偶位;奇偶位;奇偶位;奇偶位P P送给送给送给送给TB8TB8MOVMOVSBUF,ASBUF,A;数据送;数据送;数据送;数据送SBUFSBUF,启动发送,启动发送,启动发送,启动发送WAIT:JBCTI,CONTWAIT:JBCTI,CONT;判断一帧是否发送完。若送完,清;判断一帧是否发送完。若送完,清;判断一帧是否发送完。若送完,清;判断一帧是否发送完。若送完,清TITI,取下一个数据,取下一个数据,取下一个数据,取下一个数据AJMPWAITAJMPWAIT;未完等待;未完等待;未完等待;未完等待CONTCONT:INCDPTRINCDPTR;更新数据单元;更新数据单元;更新数据单元;更新数据单元DJNZR7,STARTDJNZR7,START;循环发送至结束;循环发送至结束;循环发送至结束;循环发送至结束 RETRET2)乙机接收乙机接收编程使乙机接收甲机发送过来的数据块,并存入片内50H6FH单元。接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志为0,然后返回。在进行双机通信时,两机应采用相同的工作方式和波特率。参考接收子程序如下:参考接收子程序如下:参考接收子程序如下:参考接收子程序如下:MOVSCONMOVSCON,#80H#80H;设置串行口为方式;设置串行口为方式2 2MOVPCONMOVPCON,#80H#80H;SMOD=1SMOD=1MOVR0MOVR0,#50H#50H;设置数据块指针;设置数据块指针MOVR7MOVR7,#20H#20H;设置数据块长度;设置数据块长度SETBRENSETBREN;启动接收;启动接收WAITWAIT:JBCRIJBCRI,READREAD;判断是否接收完一帧。若完,清;判断是否接收完一帧。若完,清RIRI,读入数据,读入数据AJMPWAITAJMPWAIT;未完等待;未完等待READREAD:MOVAMOVA,SBUFSBUF;读入一帧数据;读入一帧数据a aJNBPSW.0,PZJNBPSW.0,PZ;奇偶位为;奇偶位为0 0则转则转JNBRB8,ERRJNBRB8,ERR;P=1P=1,RB8=0RB8=0,则出错,则出错 SJMPRIGHTSJMPRIGHT;二者全为;二者全为1 1,则正确,则正确PZ:JBRB8,ERRPZ:JBRB8,ERR;P=0P=0,RB8=1RB8=1,则出错,则出错RIGHT:MOVR0,ARIGHT:MOVR0,A;正确,存放数据;正确,存放数据INCR0INCR0;更新地址指针;更新地址指针DJNZR7,WAITDJNZR7,WAIT;判断数据块是否接收完;判断数据块是否接收完CLRPSW.5CLRPSW.5;接收正确,且接收完清;接收正确,且接收完清F0F0标志标志RETRET;返回;返回ERR:SETBPSW.5ERR:SETBPSW.5;出错,置;出错,置F0F0标志为标志为1 1RETRET;返回;返回第七章结束第七章结束本章作业:本章作业:2、3、6、7第八章第八章 MCS-51 单片机的中断系统单片机的中断系统 本章主要介绍51系列单片机中断系统问题,本章将介绍以下具体内容:中断系统-中断源、中断方式、中断控制寄存器、中断响应、中断请求的撤除。8.28.2 MCS-51单片机的中断系统8.2.1.MCS-51单片机的中断系统结构一、中断的概念 执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回IE0TF0IE1TF1TIRI中断请求标志EX0ET0EX1ET1ES1PX0PT0PX1PT1PS高级低级二、二、MCS-51MCS-51单片机的中断系统(图8-1)内部查询内部查询入口地址入口地址INT0INT1T0T1TIRI中断允许控制中断优先级EA中断源一、中断源 共有五个中断源,分别是外部中断两个、定时中断两个和串行中断一个,它们是:外部中断0-INT0,由P3.2提供,外部中断1INT1,由P3.3提供,外部中断有两种信号方式,即电平方式和脉冲方式。T0溢出中断;由片内定时/计数器0提供T1溢出中断;由片内定时/计数器1提供串行口中断RI/TI;由片内串行口提供8.2.2.MCS-51 中断源二、中断方式 单片机的中断为固定入口式中断,即一响应中断就转入固定入口地址执行中断服务程序。具体入口如下:中断源 入口地址INT0 0003T0 000BHINT1 0013HT1 001BHRI/TI 0023H在这些单元中往往是一些跳转指令,跳到真正的中断服务程序,这是因为给每个中断源安排的空间只有8个单元。三、中断控制的寄存器 与中断控制有关的控制寄存器有四个:TCON-定时控制寄存器,IE-中断允许控制寄存器,IP-中断优先级控制寄存器,SCON-及串行口控制寄存器。1定时控制寄存器TCON D7D6D5D4D3D2D1D0TF1TF0IE1 IT1 IE0 IT0中断请求标志触发方式选择0低电平1下降沿2串行口控制寄存器SCON D7D6D5D4D3D2D1D0TIRI串行中断请求标志3中断允许控制寄存器IE D7D6D5D4D3D2D1D0EAESET1EX1ET0EX04中断优先级控制寄存器(IP)D7D6D5D4D3D2D1D0PSPT1PX1PT0PX00禁止,1允许0低级别,1高级别四、中断响应 响应条件-CPU要响应中断需满足下列条件:无同级或高级中断正在服务;当前指令周期结束,如果查询中断请求的机器 周期不是当前指令的最后一个周期,则不行;若现行指令是RETI、RET或访问IE、IP指令,则需要执行到当前指令及下一条指令方可响应。响应过程-单片机响应中断后,自动执行下列操作:置位中断优先级有效触发器,即关闭同级和低级 中断:调用入口地址,断点入栈,相当于LCALL指令;进入中断服务程序。响应时间响应时间-从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。(1)最快响应时间以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序需要三个机器周期:1个周期(查询)2个周期(长调用LCALL)(2)最长时间若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期:2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。中断返回中断返回中断处理程序的最后一条指令是RETI,它使CPU结束中断处理程序的执行,返回到断点处,继续执行主程序。当有几个处于同一优先级的中断同时发出中断请求当有几个处于同一优先级的中断同时发出中断请求时,时,CPU响应哪个中断呢?响应哪个中断呢?CPU则按照则按照自然优先级自然优先级作作出判断并快速响应中断请求。其自然优先级为:出判断并快速响应中断请求。其自然优先级为:中断源中断源同级自然优先级同级自然优先级外部中断外部中断0最高级最高级定时器定时器T0中断中断外部中断外部中断1定时器定时器T1中断中断串行口中断串行口中断最低级最低级四、中断响应过程及响应时间四、中断响应过程及响应时间1、中断响应的操作过程、中断响应的操作过程在每个机器周期的在每个机器周期的S5P2期间,各中断标志采样相应期间,各中断标志采样相应的中断源,而的中断源,而CPU在下一个机器周期的在下一个机器周期的S6期间按顺序查期间按顺序查询中断标志,并将相应中断的标志置询中断标志,并将相应中断的标志置1,且在再下一个,且在再下一个机器周期的机器周期的S1期间按优先级进行中断处理。期间按优先级进行中断处理。中断响应后,由硬件产生长调用指令中断响应后,由硬件产生长调用指令“LCALL”,并将当前的,并将当前的PC指针压入椎栈保护,然后将对应的中断指针压入椎栈保护,然后将对应的中断矢量装入程序计数器矢量装入程序计数器PC,使程序转向该中断矢量地址单,使程序转向该中断矢量地址单元,执行中断服务程序,直到执行元,执行中断服务程序,直到执行“RETI”指令返回,指令返回,断点处断点处PC指针从椎栈中弹入指针从椎栈中弹入PC,继续执行中断前的程,继续执行中断前的程序。中断矢量如下表所示:序。中断矢量如下表所示:中断源中断源矢量地址矢量地址外部中断外部中断00003H定时器定时器T0中断中断000BH外部中断外部中断10013H定时器定时器T1中断中断001BH串行口中断串行口中断0023H在编写中断服务程序时,应注意以下几点:在编写中断服务程序时,应注意以下几点:(1)在中断矢量地址放一条长转移指令,使中断服务)在中断矢量地址放一条长转移指令,使中断服务程序可以灵活地安排在程序可以灵活地安排在64KB程序存储器的任意位置。程序存储器的任意位置。(2)在执行中断服务程序时,应注意保护现场。)在执行中断服务程序时,应注意保护现场。(3)在执行中断服务程序时,为避免更高优先级的中)在执行中断服务程序时,为避免更高优先级的中断,可用软件关闭断,可用软件关闭CPU中断,或禁止某中断源中断,在中断,或禁止某中断源中断,在中断返回前再开放中断。中断返回前再开放中断。(4)中断返回指令)中断返回指令“RETI”不能用不能用“RET”来代替。来代替。2、外部中断的响应时间、外部中断的响应时间外部中断从产生到响应,至少要经历外部中断从产生到响应,至少要经历3个以上的机个以上的机器周期,再加上器周期,再加上CPU在执行指令时的时间延迟。因此,在执行指令时的时间延迟。因此,为保证可靠响应外部中断,中断请求信号至少要保持为保证可靠响应外部中断,中断请求信号至少要保持38个机器周期。个机器周期。8-3扩充外部中断源扩充外部中断源MCS-51系列单片机提供系列单片机提供2个外部中断源,在很多情个外部中断源,在很多情况下,仅有两个中断源是远远不够的。因此,我们有必况下,仅有两个中断源是远远不够的。因此,我们有必要对其进行扩充。其方法主要有两种:要对其进行扩充。其方法主要有两种:1、将定时器、将定时器T0、T1扩充为外部中断源扩充为外部中断源2、采用中断和查询相结合的方法扩充外部中断源、采用中断和查询相结合的方法扩充外部中断源一、利用定时器扩充外部中断源一、利用定时器扩充外部中断源51系列单片机具有内部定时系列单片机具有内部定时/计数器,可以用作对外计数器,可以用作对外部事件计数,其计数脉冲从相应引脚输入。利用这一特部事件计数,其计数脉冲从相应引脚输入。利用这一特点,我们将计数初值设置为满程,一旦外部有一个脉冲点,我们将计数初值设置为满程,一旦外部有一个脉冲输入,计数器加输入,计数器加1并产生溢出中断。因此可以把外部计数并产生溢出中断。因此可以把外部计数引脚引脚T0(P