单片机中断控制、定时及计数器与串行口.ppt
2023/10/22,第4章 中断控制、定时/计数器与串行口,4.1 CPU与外设通信方式概述4.2 增强型MCS-51中断控制系统4.3 增强型MCS-51定时/计数器4.4 串行通信系统4.5 增强型MCS-51芯片识别与仿真,2023/10/22,4.1 CPU与外设通信方式概述,外围设备与CPU之间常用的通信方式有:查询方式中断传输方式直接存储器存取(简称DMA)由于在单片机控制系统中,外设与CPU之间需要传送的数据量较少,对传输率要求不高,一般不用DMA方式,这里也就不介绍。,2023/10/22,4.1.1 查询方式,查询方式包括查询输出方式和查询输入方式。所谓查询输入方式,是指CPU读外设数据前,先查询外设是否处于准备就绪状态(即外设是否已将数据输出到CPU的数据总线上);查询输出方式是指CPU向外设输出数据前,先查询外设是否处于空闲状态(即外设是否可以接收CPU输出的数据)。,下面以CPU向外设输出数据为例,简要介绍查询传输方式的工作过程:当CPU需要向外设输出数据时,先将控制命令(如外设的启动命令)写入外设的控制端口,然后不断读外设的状态口,当发现外设处于空闲状态后,就将数据写入外设的数据口,完成数据的输出过程。,2023/10/22,下面以CPU向外设输出数据为例,简要介绍查询传输方式的工作过程:当CPU需要向外设输出数据时,先将控制命令(如外设的启动命令)写入外设的控制端口,然后不断读外设的状态口,当发现外设处于空闲状态后,就将数据写入外设的数据口,完成数据的输出过程。,查询方式优缺点:硬件开销少、传输程序简单,但缺点是CPU占用率高,因为在外设未准备就绪或处于非空闲状态前,CPU一直处于查询状态,不能执行其他操作,任何时候也只能与一个外设进行数据交换。,4.1.2 中断通信方式,采用中断传输方式就可以克服查询传输方式存在的缺陷:当CPU需要向外设输出数据时,将启动命令写入外设控制口后,就继续执行随后的指令序列,而不是被动等待;当外设处于空闲状态,可以接收数据时,由外设向CPU发出允许数据传送的请求信号即中断请求信号,如果满足中断响应条件,CPU将暂停执行随后的指令序列,转去执行预先安排好的数据传送程序称为中断服务程序,CPU响应外设中断请求的过程简称为中断响应;待完成了数据传送后,再返回断点处继续执行被中断了的程序这一过程称为中断返回。可见,在这种方式中,CPU发出控制命令后,将继续执行控制命令后的指令序列,而不是通过检测外设的状态来确定外设是否处于空闲状态,这不仅提高了CPU的利用率,而且能同时与多个外设进行数据交换只要合理安排相应中断的优先级以及同优先级中断的查询顺序即可。因此,中断传输方式是CPU与外设之间最常见的一种数据传输方式。,2023/10/22,1.中断源,在计算机控制系统中,把引起中断的事件称为中断源。在单片机控制系统中,常见的中断源有:l外部中断,如CPU某些特定引脚电平变化引起的中断。l各类定时/计数器溢出中断(即定时时间到或计数器满中断)。l 串行发送结束中断。l 串行接收有效中断。l电源掉电中断。,2023/10/22,2.中断优先级,当多个外设以中断方式与CPU进行数据交换时,可能遇到两个或两个以上外设中断请求同时有效的情形。在这种情况下,CPU先响应哪一外设的中断请求?这就涉及到中断优先级问题。一般说来,为了能够处理多个中断请求,中断控制系统均提供中断优先级控制。有了中断优先级控制后,就可以解决多个中断请求同时有效时,先响应哪一请求中断问题,以及高优先级中断请求可中断低优先级中断处理进程,实现中断嵌套。,2023/10/22,3.中断开关,有时为避免某一处理过程被中断,中断控制器给每一个中断源都设置了一个中断请求屏蔽位,用于屏蔽(即禁止)相应中断源的中断请求,当某一中断源的中断请求处于禁止状态时,即使该中断请求有效,CPU也不响应,相当于中断源的中断开关。此外,还设一个总的中断请求屏蔽位,当该位处于禁止状态时,CPU忽略所有中断源的中断请求,相当于中断源总开关。,2023/10/22,4.中断处理过程,中断处理过程涉及中断查询和响应两个方面,即当某一事件发生时,对应的中断标志,即中断请求何时有效?CPU什么时候查询中断标志?什么时候?在什么情况下会响应中断请求?下面结合增强型MCS-51中断控制系统逐一介绍。,2023/10/22,4.2 增强型MCS-51中断控制系统,增强型MCS-51系列内嵌的中断控制器可以管理具有4个中断优先级的6个中断源(增强型MCS-51 CPU中断源的个数与标准MCS-52子系列相同),其结构如图4-1所示。在增强型MCS-51系列中,6个中断源对应8个中断请求标志(串行发送结束中断标志TI和串行接收有效中断标志RI相“或”后作为一个中断源串行口中断,共用一个中断开关;定时器T2溢出中断TF2和外部触发中断EXF2相“或”后作为一个中断源定时器T2中断,也共用一个中断开关)。,图4-1 增强型MCS-51中断系统结构,2023/10/22,4.2.1 中断源及标志,增强型MCS-51 CPU在每个机器周期的S5P2时刻顺序采样各中断源,当发现某一中断有效(出现)时,对应中断标志置1,表明相应事件发生了。,图4-2 与中断功能有关的TCON寄存器位,2023/10/22,4.2.2 中断控制,1.中断允许控制寄存器IE,当某一中断(事件)出现时,相应的中断请求标志位置1(即中断有效),但该中断请求能否被CPU查询,由中断控制寄存器IE相应位决定(MCS-51 CPU在每个机器周期的S6状态查询处于允许状态的中断请求标志),中断控制寄存器IE各位含义如图4-3所示。,2023/10/22,图4-3 中断控制寄存器IE各位含义,2023/10/22,2.中断优先级控制寄存器IP,标准MCS-51内核只有两个中断优先级,各中断源优先级由IP寄存器控制(0为低优先级;1为高优先级),中断优先级控制寄存器IP各位含义如图4-4(a)所示。增强型MCS-51内核具有四个中断优先级,除了标准MCS-51 CPU的中断优先级控制寄存器IP外,还增加了一个中断优先级控制寄存器IPH(字节地址为0B7H,但IPH没有按位寻址功能),IPH寄存器各位含义如图4-4(b)所示,即中断源的优先级由IPH、IP对应位编码决定,具体情况如下:IPH.X位IP.X位优先级00 0级(优先级最低)01 1级10 2级11 3级(优先级最高),图4-4 中断优先级控制寄存器,4.2.3 中断响应过程及中断服务程序入口地址,对于外中断来说,MCS-51 CPU在每个机器周期的S5P2相锁存引脚的电平状态,设置中断请求标志(若中断有效,相应中断标志位置1;中断无效,标志位为0),如图4-5中的M1周期,并在下一机器周期(如图4-5中的M2周期)的S6状态按优先级顺序查询所有没有被禁止的中断请求标志,如果满足下列中断响应条件,则在下一机器周期(如图4-5中的M3周期)的S1状态,响应优先级最高的中断请求,执行相应的中断服务程序,否则继续执行当前程序。,图4-5 中断响应时序,2023/10/22,MCS-51中断响应条件为:(1)当前不处于同级或更高级中断响应中。这是为了防止同级或低级中断请求中断同级或更高级中断。(2)当前机器周期必须是当前指令的最后一个机器周期,否则等待。执行某些指令需要两个或两个以上机器周期,如果当前机器周期不是指令的最后一个机器周期,则不响应中断请求,即不允许中断一条指令的执行过程,这是为了保证指令执行过程的完整性。(3)如果当前指令是中断返回指令RETI,或读写中断控制寄存器IE、优先级寄存器IP或IPH,则必须再执行一条指令后才能响应中断请求,即中断控制器各状态位尚未稳定前,不响应中断,以免出现不确定后果。,1.中断响应条件,如果满足中断响应条件,将进入中断响应过程:(1)CPU先将对应中断的优先级触发器置1(每一中断源对应一个中断优先级触发器,不过图4-1中没画出该触发器),阻止CPU再响应同级或更低级中断请求。(2)将程序计数器PC当前值压入堆栈,以保证执行完中断服务程序后正确返回;将中断源入口地址装入PC,以便执行相应的中断服务程序。这一过程由硬件完成,相当于执行了一条长调用指令“LCALL XXXX”,中断服务程序入口地址如下:中断源 入口地址(即LCALL指令的XXXX地址)外中断0003H定时/计数器T0溢出中断000BH外中断0013H定时/计数器T1溢出中断001BH串行口中断0023H定时/计数器T2溢出中断002BH,2.中断响应过程及中断服务程序入口地址,2023/10/22,由于各中断服务程序入口地址仅相隔8个字节,难以容纳中断服务程序,为此可在中断程序入口处放置一条长跳转指令,这样实际的中断服务程序就可以放在存储器区内的任意位置(一般放在主程序后),如下所示:ORG 0003HLJMP INT0;在外中断 入口处放一条长跳转指令ORG 0100HMAIN:;主程序INT0:;外中断 的中断服务程序。,2023/10/22,(3)清除中断请求标志,(4)返回。中断服务程序最后一条指令是中断返回指令“RETI”,执行了中断返回指令RETI后,先将对应中断的优先级触发器清0(以便返回后CPU能够响应同级或更低级的中断请求),并将堆栈内的两个字节弹到程序计数器PC,以便从断点处继续执行被中断程序的后续指令。,4.2.4 中断初始化及中断服务程序结构,中断初始化是指通过设置TCON、IE及IP、IPH寄存器内容,确定外中断触发方式(低电平触发还是下降沿触发)、开中断、设置中断优先级等,例如可通过如下指令将 定义为下降沿触发,优先级为3(最高),并允许 中断:SETB IT0;外中断 采用下降沿触发。ORL IPH,#01H;由于IPH寄存器没有位寻址功能,只能通过或指令,将IPH的PX0H位置1。SETB PX0;IP寄存器具有位寻址功能,可通过SETB指令将指定位置1。SETB EX0;允许 中断。SETB EA;开中断。,中断服务程序结构与子程序类似,大致包含以下几部分:;必要时保护现场PUSH PSWPUSH AccSETB RS0;切换工作寄存器区,根据需要可使用0-3区中的任一区。CLR RS1;由于中断出现的不确定性,因此只要中断服务程序中使用;了寄存器组R0R7,就需要切换工作区。;中断服务程序体(略)。CLR 中断请求标志;对于不能自动清除中断请求标志的中断响应过程,需要通过;“CLR 中断请求标志位”指令清除中断请求标志,防止同一请;求被多次响应。POP AccPOP PSW;恢复现场。RETI;中断返回指令。,2023/10/22,中断源及中断标志。即什么事件发生时,对应中断标志置1。如何控制该中断。即中断允许由中断控制寄存器IE哪一位控制;优先级由IPH、IP寄存器哪一位控制,以及同优先级硬件查询顺序。中断入口地址。即中断服务程序放在何处。CPU响应该中断请求后,能否自动清除对应的中断标志。在单片机中,还要了解该中断源能否唤醒处于掉电状态下的CPU。,可见对于一个中断来说,我们需要了解下列问题:,2023/10/22,4.3 增强型MCS-51定时/计数器,在单片机控制系统中,常需要对外部脉冲进行计数或每隔特定时间执行某一操作,因此定时/计数器是单片机控制系统中重要的外设部件之一,几乎所有单片机芯片均内置一个到数个定时/计数器。增强型MCS-51系列单片机芯片内置了三个16位的定时/计数器,分别称为T0、T1和T2。,2023/10/22,4.3.1 定时/计数功能概述,定时/计数器的核心部件是一个加法(或减法)计数器,可工作在定时方式或计数方式,因此称为定时/计数器。不过这两种工作方式并没有本质的区别,只是计数脉冲来源不同而已:如果计数脉冲是频率相对稳定的系统时钟信号(一般是系统时钟的分频信号)时,则称为定时方式;反之,当计数脉冲取自CPU I/O引脚的外部信号时,称为计数方式。,单片机内定时/计数器属于可编程部件,除了加法计数器(部分单片机芯片采用减法计数器)外,尚有工作方式控制寄存器,一般具有如下特点:(1)工作方式寄存器。定时/计数器有多种定时或计数方式,使用前必须初始化工作方式寄存器,设置定时/计数器的工作方式(定时还是计数;硬件启动还是软件启动;计数长度即作16位计数器,还是8位计数器使用;溢出后重装初值,还是从0开始计数等)。(2)可以从0开始计数,也可以从特定值开始计数,因此定时/计数器是一个可读写的寄存器,使用前一般需要设置定时/计数器的初值。(3)每来一个脉冲,计数器加1(或减1)。当计数器溢出时,定时/计数器中断标志有效(定时时间到),向CPU发出中断请求,如果中断处于开放状态,则CPU将响应定时/计数器的中断请求。,2023/10/22,定时/计数器T0、T1结构及控制,增强型MCS-51芯片中的定时/计数器T0、T1的结构及功能与标准MCS-51芯片16位定时/计数器T0(高8位是TH0,低8位是TL0)、T1(高8位是TH1,低8位是TL1)完全相同。T0、T1采用加法计数方式,即每输入一个计数脉冲,计数器加1;在定时方式下,计数脉冲是系统时钟信号的12分频。由于MCS-51单片机一个机器周期包含12个时钟周期,因此在定时方式下,定时/计数器实际上就是机器周期的计数器(对于“6时钟/机器周期”芯片来说,在定时方式下,计数脉冲是系统时钟信号的6分频,还是机器周期计数器)。在计数方式下,定时/计数器T0的计数脉冲来自P3.4引脚,定时/计数器T1的计数脉冲来自P3.5引脚。MCS-51 CPU在每个机器周期的S5P2相检测P3.4、P3.5引脚的电平状态,如果前一个机器周期采样值为高电平,而后一个机器周期采样值为低电平,则计数器加1,在下一机器周期的S3P1相后,更新定时/计数器TH、TL的值。,在MCS-51中,与定时/计数器T0、T1工作方式有关的寄存器为TMOD和TCON。其中TMOD控制定时/计数器T0、T1的工作方式,而TCON控制定时/计数器的启动方式、禁止/允许定时中断。,(1)(1)工作方式寄存器TMOD 定时/计数器工作方式控制字寄存器TMOD各位含义如图4-6所示。,图4-6 TMOD寄存器各位含义,1.定时/计数器的控制,2023/10/22,l 定时/计数方式选择。当 位为0时,计数脉冲来自CPU内,计数脉冲频率是系统时钟信号的12分频(对于“6时钟/机器周期”芯片来说,计数脉冲是系统时钟信号的6分频),即处于定时方式;当 位为1时,计数脉冲来自P3.4引脚,即处于计数方式。l GATE定时/计数器启动方式控制位。,2023/10/22,定时/计数器启动控制位,以及定时/计数器溢出中断标志存放在特殊功能寄存器TCON的高4位,各位含义如图4-7所示。,图4-7 TCON寄存器中与定时/计数器控制有关的位,(1)(2)控制字寄存器TCON,2023/10/22,2.工作方式,定时/计数器T0有四种工作方式(即方式0、方式1、方式2和方式3),主要用于定时和计数;定时/计数器T1有三种工作方式(即方式0、方式1和方式2),除了定时、计数外,T1还可作为串行异步通信口的波特率发生器。值得注意的是初始化时如果错将定时/计数器T1置为方式3,则T1将停止工作。,当M1M0初始化为01时,定时/计数器工作于方式1,即计数长度为16位。定时/计数器T0方式1结构如图4-8所示,计数器长度为16位,分别由TL0和TH0组成。,图4-8 定时/计数器T0(T1)方式1结构,(1)方式1(16位定时/计数器),如果定时器初值为M,则方式1的定时时间t为:,当M1M0初始化为10时,定时/计数器工作于方式2,是一种自动重装初值的8位定时/计数器。定时/计数器T0方式2结构如图4-9所示,除了计数长度(8位)、自动重装初值功能外,其他情况与方式1相同。,图4-9 定时/计数器T0(T1)方式2结构,(2)方式2,2023/10/22,由于方式2的计数长度为8位,因此定时时间T与初值M之间关系为:M=(“12时钟/机器周期”模式)(4-5)M=(“6时钟/机器周期”模式)(4-6),定时/计数器T0工作于方式3的结构如图4-10所示。可见,方式3将定时/计数器T0分成两个独立的8位定时/计数器(但只有TL0具有定时和计数功能,而TH0计数脉冲来自CPU内分频器,不可选择,只能作为8位定时器使用)。,图4-10 定时/计数器T0方式3结构,(3)方式3,2023/10/22,4.3.3 定时/计数器T2结构及控制,增强型MCS-51定时/计数器T2的功能比标准MCS-52系列CPU内定时/计数器T2更强,除了具有下降沿触发自动重装、捕捉、串行口波特率发生器三种工作方式外,还增加了可编程时钟输出、外电平控制向上或向下计数自动重装两种工作模式,即增强型MCS-51芯片内的T2具有5种工作方式。,2023/10/22,在增强型MCS-51中,与T2定时/计数器有关的寄存器有:T2CON(定时器T2控制寄存器)、T2MOD(增强型MCS-51新增的定时器T2工作模式寄存器)、TH2、TL2、RCAP2H、RCAP2L(各寄存器字节地址可参阅第2章“特殊功能寄存器列表”)。其中TH2、TL2分别是定时/计数器T2的高8位和低8位,TH2和TL2构成了16位计数器;而RCAP2H和RCAP2L构成了一个16位寄存器,在自动重装初值方式下,RCAP2H、RCAP2L分别存放TH2和TL2的重装初值;在捕捉方式下,当P1.1引脚出现负跳变()时,T2计数器高8位TH2、低8位TL2分别被捕捉到CAP2H、RCAP2L寄存器中。,2023/10/22,1.定时/计数器T2的控制,在标准MCS-52系列中,定时/计数器T2的工作方式、用途由T2CON寄存器内容决定,各位含义如图4-12所示:,图4-12 T2CON寄存器各位含义,2023/10/22,在增强型MCS-51中,T2工作方式还与T2MOD寄存器有关,T2MOD各位含义如图4-13所示。,图4-13 T2MOD寄存器各位含义,由T2CON、T2MOD寄存器定义的定时/计数器T2工作方式如表4-2所示。,表4-2 定时/计数器T2工作方式,2023/10/22,2.T2的工作方式,(1)下降沿触发自动重装初值16位定时或计数器,当TCLK、RCLK、T20E、DCEN均为0时,定时/计数器T2是一个下降沿触发自动重装初值的16位定时或计数器,内部结构如图4-14所示。,图4-14 下降沿触发自动重装初值16位定时/计数器T2结构,2023/10/22,(2)外部电平控制重装方式,当TCLK、RCLK、T20E、EXEN2为0,而DCEN为1时,定时/计数器T2是一个外电平控制自动重装初值的16位定时或计数器,计数方向由T2EX(P1.1)引脚电平控制,当T2EX(P1.1)引脚为高电平时,T2向上计数(即加1计数),溢出时分别将RCAP2L、RCAP2H重装TL2和TH2,循环计数;而当T2EX(P1.1)引脚为低电平时,T2向下计数(即减1计数),溢出时将0FFFFH装入TH2,TL2(即重装初值固定为0FFFFH)。T2工作于外电平控制自动重装方式下的内部结构如图4-15所示。,图4-15 外电平控制重装方式下的T2结构,(3)捕捉方式,当TCLK、RCLK位为0,位为1时,定时/计数器T2工作于捕捉方式,内部结构如图4-16所示。,图4-16 定时/计数器T2的捕捉方式,2023/10/22,(4)可编程时钟输出方式,当T2MOD寄存器T2OE位为1,且T2CON寄存器 位为0时,T2工作于可编程时钟输出方式,T2溢出信号自动触发T2(P1.0)引脚状态翻转,从P1.0引脚输出频率可调、精度很高的方波信号;同时使RCAP2L、RCAP2H寄存器内容装入TL2和TH2寄存器中,重新计数,以便获得准确的溢出信号。T2工作于时钟输出方式的结构如图4-17所示。,图4-17 时钟输出方式下的定时器T2结构,(5)串行口波特率发生器,当TCLK或RCLK位为1时,定时器T2作为串行口方式1、方式3发送或接收波特率发生器(在这种情况下,位没有意义,可以是0或1),内部结构如图4-18所示。,图4-18 T2作为串行口波特率发生器的结构,2023/10/22,4.3.4 定时/计数器初始化及应用,(1)确定定时/计数器工作方式,计算定时/计数器初值M。(2)初值M送定时/计数器高、低位(即TH和TL)。(3)初始化TMOD寄存器。(4)如果允许定时器溢出中断,则还需初始化定时/计数器中断优先级(即需要设置IPH及IP)、禁止/允许定时/计数器中断(即需要设置IE),并启动。,可如下顺序初始化定时/计数器:,2023/10/22,4.4 串行通信系统,4.4.1 串行通信概念 4.4.2 增强型MCS-51串行通信口控制及初始化 4.4.3 串行口工作方式及应用 4.4.4帧错误检测及应用 4.4.5多机通信及地址自动识别技术 4.4.6 RS-232C串行接口标准及应用,2023/10/22,4.4.1 串行通信概念,CPU与外设之间信息交换过程称为通信,根据CPU与外设之间连线结构、数据发送方式的不同,可将通讯分为并行通信和串行通信两种基本方式。,在并行通信方式中,数据各位同时传送,如图4-19(a)所示。,(a)并行通信,2023/10/22,而在串行通信方式中,数据按位逐一传送,如图4-19(b)所示。,(b)串行通信,2023/10/22,1.串行通信的种类,根据数据传输方式的不同,可将串行通信分为同步通信和异步通信两种。同步通信是一种数据连续传输的串行通信方式。通信时,发送方把需要发送的多个字节数据和校验信息连接起来,组成数据块。发送时,发送方只需在数据块前插入12个特殊的同步字符,然后按特定速率逐位输出(发送)数据块内的各位数据。接收方在接收到特定的同步字符后,也按相同速率接收数据块内的各位数据。典型的同步通信数据帧格式如下:,2023/10/22,异步通信的特点是每次只传送一个字,每个字由起始位(规定为0电平)、数据位、奇偶校验位、停止位(规定为1电平)组成,典型的异步通信数据帧格式如下所示:,2023/10/22,2.波特率,在串行通信系统中常用波特率来衡量通信的快慢,含义是每秒中传送的二进制数码的位数,单位是位/秒(b/s或Kb/s),简称“波特”。例如,两个异步串行通信设备之间每秒钟传送的信息量是240字节,如果一帧数据包含10位(1个起始位、8个数据位和1个停止位),则发送、接收波特率为:240B/s10位=2400 b/s=2400波特一般异步通信波特率为1109600,而同步通信波特率在56Kb以上。,3.串行通信数据传输方向,根据串行通信数据传输方向,可将串行通信系统分为:单工方式、半双工方式和全双工方式,如图4-20所示。,图4-20 数据传输方式,2023/10/22,4.串行通讯接口种类,根据串行通讯格式及约定(如同步方式、通讯速率、信号电平等)不同,形成了许多串行通讯接口标准,如常见的RS-232、RS-422、RS-485、IEEE1394、I2C、SPI(同步通信)、USB(通用串行总线接口)、CAN总线接口等。下面结合增强型MCS-51介绍UART接口及使用规则。,2023/10/22,4.4.2 增强型MCS-51串行通信口控制及初始化,8XC5X、8XC5XX2系列单片机芯片内置的增强型全双工串行接口部件UART除了具备标准MCS-51串行接口部件UART功能外,还具有帧错误侦测和自动地址识别功能。,MCS-51内置了一个可编程的、全双工通用异步串行通信接口部件UART,内部结构如图4-21所示。主要由两个物理上完全独立的串行数据接收缓冲器和串行数据发送缓冲器、接收控制器(包括输入移位寄存器)、发送控制器(包括发送门)、接收信号线RXD(P3.0)引脚和发送信号线TXD(P3.1)引脚组成。,2023/10/22,图4-21 MCS-51串行口结构,2023/10/22,1.串行口控制寄存器SCON,串行口控制寄存器SCON各位含义如图4-22所示。,图4-22 SCON各位含义,2023/10/22,表4-4 串行口工作方式,2023/10/22,REN是串行接收控制位,当REN为1时,允许串行口接收数据;反之,当REN为0时,禁止串行口接收数据。因此,可通过软件使REN置1或清0,允许或禁止串行口接收数据。,TB8是发送数据的第9位。在方式2、方式3中,需要发送9位数据,待发送的低8位数据(b7b0)存放在发送数据缓冲器SBUF中,而第9位(即b8)存放在SCON寄存器的TB8位。在“点对点”通讯系统中,TB8可以是实际意义上的数据,也可以作为发送数据的奇偶标志位。而在多机通信中,TB8位是“地址/数据”帧标志。,RB8是接收数据的第9位。在方式2、方式3中,需要接收9位数据,其中低8位数据(b7b0)存放在接收数据缓冲器SBUF中,第9位(即b8)数据存放在SCON寄存器的RB8中。同样,RB8可以是实际意义上的数据,也可以是发送数据的奇偶标志位。,2023/10/22,TI是发送结束中断标志。初始化串行口后,在TI位为0情况下,将发送数据写入“发送缓冲器”,将立即启动串行发送过程:自动在数据位前插入起始位,在数据位后插入停止位,组成发送数据帧;并按设定波特率依次将起始位、数据位(从b0开始)、停止位输出到发送引脚TXD(P3.1)上,当发送完最后一个数据位(在8位方式中,最后一位数据是SBUF中的b7位;在9位方式中,最后一位数据是SCON寄存器的TB8位)时(即开始发送停止位)TI自动置1,表明当前数据帧已发送完毕。,RI是接收有效中断标志。当接收了一帧数据后,RI自动置1,指示CPU可以读取存放在接收缓冲器SBUF中的数据。,SM2是多机通信控制位。在方式0中,SM2位必须为0;在方式2、3中,当SM2位为1时,具有选择接收功能,当且仅当第9位数据(RB8)为1时,接收中断RI有效,这样通过SM2位,即可实现多机通信;而在方式1中,当SM2位为1时,必须接收到有效的停止位。,2.波特率倍增选择,在增强型MCS-51系列芯片中,串行口波特率与工作方式有关,如表4-4所示。对于方式0来说,串行输出/输入移位脉冲频率固定为系统时钟信号频率的n分频(对于“12时钟/机器周期”来说,n=12;对于“6时钟/机器周期”来说,n=6),不可调。在方式1、3中,可以选择定时器T1溢出率的16或32分频作为串行口发送、接收波特率外,也选择定时器T2溢出率的的16分频作为串行口发送或接收波特率,如图4-18所示。即当使用T1溢出率作串行口方式1、3发送或接收波特率发生器输入信号时,如果SMOD位为1,则波特率是SMOD为0时的两倍(正因如此,PCON寄存器中的SMOD位被称为波特率倍增位)。而在方式2中,波特率与时钟信号频率fOSC和电源控制寄存器PCON的SMOD位有关,同样不可调。对于“12时钟/机器周期”来说,波特率为系统时钟信号频率fOSC的1/64或1/32;对于“6时钟/机器周期”来说,波特率为系统时钟信号频率fOSC的1/32或1/16。,2023/10/22,3.波特率选择,方式1、方式3波特率与定时器T1溢出率、SMOD1位关系如下:波特率=,而T1溢出率倒数就等于定时时间t,因此定时T1重装初值C与波特率之间关系为:C=(T1定时器工作在12分频状态)(4-8)C=(T1定时器工作在6分频状态)(4-9)为了保证不同串行通信设备之间数据可靠传输,波特率一般要选择标准值,如1200、2400、4800等,如表4-5所示。,2023/10/22,4.4.3 串行口工作方式及应用 1.方式0,当串行口工作于方式0时,串行口本身相当于“并入串出”(发送状态)或“串入并出”(接收状态)的移位寄存器。串行移位脉冲CLOCK从TXD(P3.1)引脚输出,频率是系统时钟频率fOSC的12 分频(对于8XC5XX2芯片来说,在“6时钟/机器周期”模式下,移位脉冲频率是时钟频率fOSC的6分频);而8位串行数据b0b7依次从RDX(P3.0)引脚输出或输入。,串行口方式0操作时序如图4-X所示,对于串行输出来说,采用“低电平送数据,上升沿锁存”方式,即在移位脉冲上升沿串行输出数据稳定出现在RXD引脚,外部“串入并出”芯片可利用TXD引脚移位脉冲的上升沿锁存数据;对于串行输入来说,MCS-51MPU串行口在移位脉冲的上升沿读RDX引脚的数据,即外部“并入串出”芯片必须在移位脉冲的上升沿将数据送到RXD引脚。,2023/10/22,当使用74LS164芯片扩展输出口时,MCS-51 芯片RXD引脚接74LS164芯片的串行数据输入端,TXD引脚接74LS164芯片的移位脉冲输入端CLK,如图4-24(a)所示。,(a)通过74LS164串入并出芯片扩展输出口,(b)通过74HC595串入并出芯片扩展输出口,当使用74HC595芯片扩展输出口时,MCS-51的RXD引脚接74HC595芯片的串行数据输入端SDI,TXD引脚接74HC595芯片的串行移位脉冲输入端SRCLK,并行数据输出锁存脉冲RCLK可由CPU另一I/O引脚,如P1.7提供,串行移位寄存器清除端 可接高电平,如图4-23(b)所示(值得注意的是74HC595串行移位脉冲SRCLK、并行数据输出锁存脉冲RCLK对边缘有严格要求,当CPU I/O驱动能力不足时,可在CPU I/O引脚与74HC595芯片间加驱动器,如CD40106芯片等)。,2023/10/22,在“并行输入串行输出”芯片,如74LS165、74HC597配合下,即可通过串行口方式0扩展MCS-51的输入引脚,其中MCS-51的RXD引脚接74LS165芯片的串行数据输出端,TXD引脚接74LS165芯片的移位脉冲CLK,如图4-25所示。,2023/10/22,2.方式1,当SM0、SM1为01时,串行口工作在方式1,是8位的异步串行通信口,其中TXD是发送端,RXD是接收端。发送或接收一帧信息包括1位起始位(固定为0)、8位串行数据(低位在前,高位在后)和一位停止位(固定为1)共10位,一帧数据格式如下所示,波特率与定时器T1(或T2)溢出率、SMOD1位有关(可变)。,2023/10/22,方式1的发送过程如下:在TI为0的情况下(表示串行口发送控制电路处于空闲状态),任何写串行数据输出缓冲器SBUF指令(如MOV SBUF,A)均会触发串行发送过程:MCS-51 串行口自动在8个串行数据位的前、后分别插入一个起始位(0)和一个停止位(1),构成10位信息帧,然后按设定的波特率依次输出起始位(0)、8个数据位(顺序为b0b7)和停止位(1)。当8位数据(即b7位)发送结束后(即开始发送停止位)时,串行口自动将发送结束标志TI置1,表示发送缓冲区内容已发送完毕。这样执行了写SBUF寄存器操作后,可通过查询TI标志来确定发送过程是否已完成。当然,在中断处于开放状态下,TI有效时,将产生串行中断请求。,方式1的接收过程如下:在接收中断标志RI为0(即串行数据输入缓冲器SBUF处于空闲状态)情况下,当REN位为1时,串行口即处于接收状态。在接收状态下,存在两个定时信号:一个是移位脉冲信号(即发送波特率);另一个是RXD引脚电平状态检测信号(也称为数据检测脉冲),它的频率是移位脉冲的16倍。,进入接收状态后,串行口便按数据检测脉冲速率不断检测RXD引脚的电平状态,当发现RXD引脚由高电平变为低电平后表明发送端开始发送起始位(0),启动接收过程,并复位接收波特率发生器,使数据检测脉冲与接收移位脉冲保持同步,然后按设定波特率顺序接收数据位和停止位。,当接收完一帧信息(即接收到停止位)后,如果RI位为0,便将“接收移位寄存器”中的内容装入串行数据输入缓冲寄存器SBUF中,停止位装入SCON寄存器的RB8位中,并将串行接收中断标志RI置1。,2023/10/22,3.方式2和方式3,当SM0、SM1为10时,串行口工作于方式2;而当SM0、SM1为11时,串行口工作于方式3。方式2和方式3都是9位异步串行通信口,惟一区别是方式2的波特率固定为时钟频率的32或64分频,不可调,因此不常用(原因是与其他串行通信设备连接困难)。而方式3的波特率与T1(或T2)定时器的溢出率、电源控制寄存器PCON的SMOD1位有关,可调。选择不同的初值或晶振频率,即可获得常用的波特率,因此方式3较常用。下面以方式3为例,介绍串行口9位异步通信过程。其实方式3与方式1之间的区别不大,惟一的不同是:方式3是9位的异步串行通信方式,一帧信息为11位,由一位起始位(0)、9位串行数据、一位停止位(1)组成,信息帧结构如下所示:,2023/10/22,帧错误检测及应用,在方式2、3中,收到第9位(即RB8)数据后,只要满足“SM2=0”或“SM2=1,RB8=1”接收条件,RI即有效,没有检测停止位,因此可能出现停止位丢失现象。为此,增强型UART口通过检测“停止位”的有无来判别方式2、3下串行接收是否正常,这就是所谓的“帧错误检测”功能。在增强型UART口中,SCON寄存器的b7位具有SM0/FE(Fram Error)双重功能(由PCON寄存器的b6,即SMOD0位控制:当SMOD0位为0时,SCON寄存器的b7位的含义是SM0;而当SMOD0位为1时,SCON寄存器的b7位的含义是FE)。当接收不到有效停止位时,SCON寄存器的b7位(即FE)置1。当FE为1时,表示接收到的数据不可靠。,多机通信及地址自动识别技术 1.标准MCS-51多机通信过程,在某些应用系统中,常需要多个单片机芯片协同工作,这就涉及到多机通信问题。MCS-51串行口方式2和方式3具有主从通信功能。在由MCS-51组成的主从式多机通信系统中,只有一台主机,从机最多为256台;主机可以与任一从机通信,但从机之间不能直接通信,只能通过主机进行。由MCS-51构成的多机通信系统如图4-26所示。,2.增强型MCS-51新增的地址自动识别,利用自动地址识别功能可使主机通过发送特定地址与一个或多个从机进行通讯,如通过广播地址和所有从机通讯。启动地址自动识别功能时,从机的SM2位必须为1,且还需要用到两个特殊功能寄存器SADDR(从机地址寄存器)和SADEN(从机地址屏蔽寄存器),每个从机有惟一的地址屏蔽寄存器SADEN,用来确认SADDR 中的那些位是有用的那些位是无用的。自动地址识别结构如图4-27所示。,2023/10/22,从图4-27中看出,采用地址自动识别功能后,有效接收条件是:当SM2位为1时,主机发出的地址(其特征是第9位数据为1)与从地址屏蔽码SADEN按位“与”后等于从机地址寄存器SADDR。这样主机就可以通过发出特定地址与单一从机或一组从机通信、通过发出广播地址与所有从机通信。,2023/10/22,3.总线冲突,在图4-26所示的多机通信系统中,可能会遇到两个或两个以上从机同时申请与主机通信(或某一从机正在与主机通信时,另一从需要与主机通信),这就涉及到总线冲突问题。为此,可选择如下方式之一解决:(1)主机定时查询方式。在这一方式中,从机不主动发送数据,由主机定时查询各从机状态。优点是不占用硬件资源,但从机数据有效后,需要等待主机查询,不能立即上传。(2)使用I/O引脚作为总线使用标志。空闲时该引脚处于输入状态,当从机需要与主机通信时,先读该引脚状态,当引脚为高电平时,表明其他从机没有使用串行总线,将该引脚置为低电平后,向主机发送数据,通讯结束后恢复总线使用标志I/O引脚的输入状态。,2023/10/22,4.4.6 RS-232C串行接口标准及应用,RS-232C标准规定了在串行通信中数据终端设备(简称DTE,如个人计算机)和数据通信设备(简称DCE,如调制解调器)间物理连接线路的机械、电气特性,以及通信格式和约定,是异步串行通信中应用最广的总线标准。,