《中断控制定时及计数器与串行口.pptx》由会员分享,可在线阅读,更多相关《中断控制定时及计数器与串行口.pptx(101页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023/4/144.1.1 查询方式 查询方式包括查询输出方式和查询输入方式。所谓查询输入方式,是指CPU读外设数据前,先查询外设是否处于准备就绪状态(即外设是否已将数据输出到CPU的数据总线上);查询输出方式是指CPU向外设输出数据前,先查询外设是否处于空闲状态(即外设是否可以接收CPU输出的数据)。下面以CPU向外设输出数据为例,简要介绍查询传输方式的工作过程:当CPU需要向外设输出数据时,先将控制命令(如外设的启动命令)写入外设的控制端口,然后不断读外设的状态口,当发现外设处于空闲状态后,就将数据写入外设的数据口,完成数据的输出过程。第1页/共101页2023/4/14下面以CPU向外
2、设输出数据为例,简要介绍查询传输方式的工作过程:当CPU需要向外设输出数据时,先将控制命令(如外设的启动命令)写入外设的控制端口,然后不断读外设的状态口,当发现外设处于空闲状态后,就将数据写入外设的数据口,完成数据的输出过程。查询方式优缺点:硬件开销少、传输程序简单,但缺点是CPU占用率高,因为在外设未准备就绪或处于非空闲状态前,CPU一直处于查询状态,不能执行其他操作,任何时候也只能与一个外设进行数据交换。第2页/共101页4.1.2 中断通信方式 采用中断传输方式就可以克服查询传输方式存在的缺陷:当CPU需要向外设输出数据时,将启动命令写入外设控制口后,就继续执行随后的指令序列,而不是被动
3、等待;当外设处于空闲状态,可以接收数据时,由外设向CPU发出允许数据传送的请求信号即中断请求信号,如果满足中断响应条件,CPU将暂停执行随后的指令序列,转去执行预先安排好的数据传送程序称为中断服务程序,CPU响应外设中断请求的过程简称为中断响应;待完成了数据传送后,再返回断点处继续执行被中断了的程序这一过程称为中断返回。可见,在这种方式中,CPU发出控制命令后,将继续执行控制命令后的指令序列,而不是通过检测外设的状态来确定外设是否处于空闲状态,这不仅提高了CPU的利用率,而且能同时与多个外设进行数据交换只要合理安排相应中断的优先级以及同优先级中断的查询顺序即可。因此,中断传输方式是CPU与外设
4、之间最常见的一种数据传输方式。第3页/共101页2023/4/141.中断源 在计算机控制系统中,把引起中断的事件称为中断源。在单片机控制系统中,常见的中断源有:l外部中断,如CPU某些特定引脚电平变化引起的中断。l各类定时/计数器溢出中断(即定时时间到或计数器满中断)。l串行发送结束中断。l串行接收有效中断。l电源掉电中断。第4页/共101页2023/4/142.中断优先级 当多个外设以中断方式与CPU进行数据交换时,可能遇到两个或两个以上外设中断请求同时有效的情形。在这种情况下,CPU先响应哪一外设的中断请求?这就涉及到中断优先级问题。一般说来,为了能够处理多个中断请求,中断控制系统均提供
5、中断优先级控制。有了中断优先级控制后,就可以解决多个中断请求同时有效时,先响应哪一请求中断问题,以及高优先级中断请求可中断低优先级中断处理进程,实现中断嵌套。第5页/共101页2023/4/143.中断开关有时为避免某一处理过程被中断,中断控制器给每一个中断源都设置了一个中断请求屏蔽位,用于屏蔽(即禁止)相应中断源的中断请求,当某一中断源的中断请求处于禁止状态时,即使该中断请求有效,CPU也不响应,相当于中断源的中断开关。此外,还设一个总的中断请求屏蔽位,当该位处于禁止状态时,CPU忽略所有中断源的中断请求,相当于中断源总开关。第6页/共101页2023/4/144.中断处理过程 中断处理过程
6、涉及中断查询和响应两个方面,即当某一事件发生时,对应的中断标志,即中断请求何时有效?CPU什么时候查询中断标志?什么时候?在什么情况下会响应中断请求?下面结合增强型MCS-51中断控制系统逐一介绍。第7页/共101页2023/4/144.2 增强型MCS-51中断控制系统 增强型MCS-51系列内嵌的中断控制器可以管理具有4个中断优先级的6个中断源(增强型MCS-51CPU中断源的个数与标准MCS-52子系列相同),其结构如图4-1所示。在增强型MCS-51系列中,6个中断源对应8个中断请求标志(串行发送结束中断标志TI和串行接收有效中断标志RI相“或”后作为一个中断源串行口中断,共用一个中断
7、开关;定时器T2溢出中断TF2和外部触发中断EXF2相“或”后作为一个中断源定时器T2中断,也共用一个中断开关)。第8页/共101页图4-1增强型MCS-51中断系统结构第9页/共101页2023/4/144.2.1 中断源及标志 增强型MCS-51CPU在每个机器周期的S5P2时刻顺序采样各中断源,当发现某一中断有效(出现)时,对应中断标志置1,表明相应事件发生了。图4-2与中断功能有关的TCON寄存器位第10页/共101页2023/4/144.2.2 中断控制 1.中断允许控制寄存器IE当某一中断(事件)出现时,相应的中断请求标志位置1(即中断有效),但该中断请求能否被CPU查询,由中断控
8、制寄存器IE相应位决定(MCS-51CPU在每个机器周期的S6状态查询处于允许状态的中断请求标志),中断控制寄存器IE各位含义如图4-3所示。第11页/共101页2023/4/14图4-3中断控制寄存器IE各位含义第12页/共101页2023/4/142.中断优先级控制寄存器IP标准MCS-51内核只有两个中断优先级,各中断源优先级由IP寄存器控制(0为低优先级;1为高优先级),中断优先级控制寄存器IP各位含义如图4-4(a)所示。增强型MCS-51内核具有四个中断优先级,除了标准MCS-51CPU的中断优先级控制寄存器IP外,还增加了一个中断优先级控制寄存器IPH(字节地址为0B7H,但IP
9、H没有按位寻址功能),IPH寄存器各位含义如图4-4(b)所示,即中断源的优先级由IPH、IP对应位编码决定,具体情况如下:IPH.X位IP.X位优先级000级(优先级最低)011级102级113级(优先级最高)第13页/共101页中断优先级控制寄存器IP各位含义断优先级控制寄存器高位IPH各位含义图4-4中断优先级控制寄存器第14页/共101页4.2.3 中断响应过程及中断服务程序入口地址 对于外中断来说,MCS-51CPU在每个机器周期的S5P2相锁存引脚的电平状态,设置中断请求标志(若中断有效,相应中断标志位置1;中断无效,标志位为0),如图4-5中的M1周期,并在下一机器周期(如图4-
10、5中的M2周期)的S6状态按优先级顺序查询所有没有被禁止的中断请求标志,如果满足下列中断响应条件,则在下一机器周期(如图4-5中的M3周期)的S1状态,响应优先级最高的中断请求,执行相应的中断服务程序,否则继续执行当前程序。图4-5中断响应时序第15页/共101页2023/4/14MCS-51中断响应条件为:(1)当前不处于同级或更高级中断响应中。这是为了防止同级或低级中断请求中断同级或更高级中断。(2)当前机器周期必须是当前指令的最后一个机器周期,否则等待。执行某些指令需要两个或两个以上机器周期,如果当前机器周期不是指令的最后一个机器周期,则不响应中断请求,即不允许中断一条指令的执行过程,这
11、是为了保证指令执行过程的完整性。(3)如果当前指令是中断返回指令RETI,或改写中断控制寄存器IE、优先级寄存器IP或IPH,则必须再执行一条指令后才能响应中断请求,即中断控制器各状态位尚未稳定前,不响应中断,以免出现不确定后果。1.中断响应条件第16页/共101页2023/4/14由此可见:当不处于同级或更高优先中断响应状态时,中断有效到中断响应最短时间为3个机器周期(即中断在当前指令最后一个机器周期有效,且下一指令不是RETI或改写中断控制寄存器IE、IP、TPH),最长为8个机器周期(即中断在乘法、除法指令的第一机器周期有效,且下一指令为RETI或改写中断控制寄存器IE、IP、TPH),
12、即中断有效到中断响应时间为38个机器周期(尚未考虑中断入口处长调用LJMP指令执行时间,如果把该时间考虑在内,则中断有效到中断响应时间为510个机器周期)。如果不满足以上条件,将忽略该机器周期对中断标志的查询结果,下一机器周期继续查询,因此可能存在这样一种情况:某一中断发生了,不满足响应条件,CPU不响应,又出了新的中断请求,则尚未响应的中断请求将忽略。第17页/共101页如果满足中断响应条件,将进入中断响应过程:(1)CPU先将对应中断的优先级触发器置1(每一中断源对应一个中断优先级触发器,不过图4-1中没画出该触发器),阻止CPU再响应同级或更低级中断请求。(2)将程序计数器PC当前值压入
13、堆栈,以保证执行完中断服务程序后正确返回;将中断源入口地址装入PC,以便执行相应的中断服务程序。这一过程由硬件完成,相当于执行了一条长调用指令“LCALLXXXX”,中断服务程序入口地址如下:中断源入口地址(即LCALL指令的XXXX地址)外中断0003H定时/计数器T0溢出中断000BH外中断0013H定时/计数器T1溢出中断001BH串行口中断0023H定时/计数器T2溢出中断002BH2.中断响应过程及中断服务程序入口地址第18页/共101页2023/4/14由于各中断服务程序入口地址仅相隔8个字节,难以容纳中断服务程序,为此可在中断程序入口处放置一条长跳转指令,这样实际的中断服务程序就
14、可以放在存储器区内的任意位置(一般放在主程序后),如下所示:ORG0003HLJMPINT0;在外中断入口处放一条长跳转指令ORG0100HMAIN:;主程序INT0:;外中断的中断服务程序。第19页/共101页2023/4/14(3)清除中断请求标志(4)返回。中断服务程序最后一条指令是中断返回指令“RETI”,执行了中断返回指令RETI后,先将对应中断的优先级触发器清0(以便返回后CPU能够响应同级或更低级的中断请求),并将堆栈内的两个字节弹到程序计数器PC,以便从断点处继续执行被中断程序的后续指令。第20页/共101页4.2.4 中断初始化及中断服务程序结构 中断初始化是指通过设置TCO
15、N、IE及IP、IPH寄存器内容,确定外中断触发方式(低电平触发还是下降沿触发)、开中断、设置中断优先级等,例如可通过如下指令将 定义为下降沿触发,优先级为3(最高),并允许中断:SETBIT0;外中断采用下降沿触发。ORLIPH,#01H;由于IPH寄存器没有位寻址功能,只能通过或指令,将IPH的PX0H位置1。SETBPX0;IP寄存器具有位寻址功能,可通过SETB指令将指定位置1。SETBEX0;允许中断。SETBEA;开中断。第21页/共101页中断服务程序结构与子程序类似,大致包含以下几部分:;必要时保护现场PUSHPSWPUSHAccSETBRS0;切换工作寄存器区,根据需要可使用
16、0-3区中的任一区。CLRRS1;由于中断出现的不确定性,因此只要中断服务程序中使用;了寄存器组R0R7,就需要切换工作区。;中断服务程序体(略)。CLR中断请求标志;对于不能自动清除中断请求标志的中断响应过程,需要通过;“CLR中断请求标志位”指令清除中断请求标志,防止同一请;求被多次响应。POPAccPOPPSW;恢复现场。RETI;中断返回指令。第22页/共101页2023/4/14可见,中断与子程序调用区别在于:(1)中断出现是随机的,可能出现,也可能不出现,更不知道什么会时候出现,即被中断程序的断点无法预测。而子程序的执行由调用指令LCALL或ACALL实现,只要满足特定条件,一定会
17、发生,断点由程序员控制。(2)中断服务程序入口地址(也称为中断向量)由硬件决定,与CPU类型有关,不能更改。而子程序入口地址由用户安排。(3)子程序中可以任意调用另一子程序,但中断有优先级,同级或低级中断不能打断正在执行的同级或更高优先级中断服务程序。(4)尽管子程序返回指令RET和中断返回指令RETI均会将栈顶两个字节信息装入PC,恢复断点,但RETI还清除相应中断优先级触发器,因此中断返回指令不可用子程序返回指令RET代替。第23页/共101页2023/4/14中断源及中断标志。即什么事件发生时,对应中断标志置1。如何控制该中断。即中断允许由中断控制寄存器IE哪一位控制;优先级由IPH、I
18、P寄存器哪一位控制,以及同优先级硬件查询顺序。中断入口地址。即中断服务程序放在何处。CPU响应该中断请求后,能否自动清除对应的中断标志。在单片机中,还要了解该中断源能否唤醒处于掉电状态下的CPU。可见对于一个中断来说,我们需要了解下列问题:第24页/共101页2023/4/144.3 增强型MCS-51定时/计数器 在单片机控制系统中,常需要对外部脉冲进行计数或每隔特定时间执行某一操作,因此定时/计数器是单片机控制系统中重要的外设部件之一,几乎所有单片机芯片均内置一个到数个定时/计数器。增强型MCS-51系列单片机芯片内置了三个16位的定时/计数器,分别称为T0、T1和T2。第25页/共101
19、页2023/4/144.3.1 定时/计数功能概述 定时/计数器的核心部件是一个加法(或减法)计数器,可工作在定时方式或计数方式,因此称为定时/计数器。不过这两种工作方式并没有本质的区别,只是计数脉冲来源不同而已:如果计数脉冲是频率相对稳定的系统时钟信号(一般是系统时钟的分频信号)时,则称为定时方式;反之,当计数脉冲取自CPUI/O引脚的外部信号时,称为计数方式。第26页/共101页单片机内定时/计数器属于可编程部件,除了加法计数器(部分单片机芯片采用减法计数器)外,尚有工作方式控制寄存器,一般具有如下特点:(1)定时/计数器有多种定时或计数方式,使用前必须初始化工作方式寄存器,设置定时/计数
20、器的工作方式(定时还是计数;硬件启动还是软件启动;计数长度即作16位计数器,还是8位计数器使用;溢出后重装初值,还是从0开始计数等)。(2)可以从0开始计数,也可以从特定值开始计数,因此定时/计数器是一个可读写的寄存器,使用前一般需要设置定时/计数器的初值。(3)每来一个脉冲,计数器加1(或减1)。当计数器溢出时,定时/计数器中断标志有效(定时时间到),向CPU发出中断请求,如果中断处于开放状态,则CPU将响应定时/计数器的中断请求。第27页/共101页2023/4/144.3.2定时/计数器T0、T1结构及控制 增强型MCS-51芯片中的定时/计数器T0、T1的结构及功能与标准MCS-51芯
21、片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-51CPU在每个机器周期的S5P2相检测P3.4、P3.5
22、引脚的电平状态,如果前一个机器周期采样值为高电平,而后一个机器周期采样值为低电平,则计数器加1,在下一机器周期的S3P1相后,更新定时/计数器TH、TL的值。第28页/共101页在MCS-51中,与定时/计数器T0、T1工作方式有关的寄存器为TMOD和TCON。其中TMOD控制定时/计数器T0、T1的工作方式,而TCON控制定时/计数器启动、记录定时/计数器溢出标志。(1)工作方式寄存器TMOD定时/计数器工作方式控制字寄存器TMOD各位含义如图4-6所示。图4-6TMOD寄存器各位含义1.定时/计数器的控制第29页/共101页lM1、M0用于选择定时/计数器的工作方式,具体情况如表4-1所示
23、。表4-1定时/计数器工作方式M1M0工作方式说明00方式0(不推荐)13位定时/计数器,主要是为了与Intel公司早期的MCS-48系列兼容,由TL0的低5位和TH0(8位)构成,由于装入初值容易出错,不推荐使用方式0。01方式1(常用)16位定时/计数器。10方式2(常用)自动重装初值的8位定时/计数器11方式3定时/计数器T0可以工作在这一方式,相当于两个独立的8位定时/计数器。但T0工作于方式3时,占用了定时/计数器T1的部分资源,限制了T1的使用范围(在这种情况下,T1可作为串行口发送、接收波特率发生器)。第30页/共101页2023/4/14l定时/计数方式选择。当位为0时,计数脉
24、冲来自CPU内,计数脉冲频率是系统时钟信号的12分频(对于“6时钟/机器周期”芯片来说,计数脉冲是系统时钟信号的6分频),即处于定时方式;当位为1时,计数脉冲来自P3.4引脚,即处于计数方式。lGATE定时/计数器启动方式控制位。第31页/共101页2023/4/14定时/计数器启动控制位,以及定时/计数器溢出中断标志存放在特殊功能寄存器TCON的高4位,各位含义如图4-7所示。图4-7TCON寄存器中与定时/计数器控制有关的位(2)控制字寄存器TCON第32页/共101页2023/4/142.工作方式定时/计数器T0有四种工作方式(即方式0、方式1、方式2和方式3),主要用于定时和计数;定时
25、/计数器T1有三种工作方式(即方式0、方式1和方式2),除了定时、计数外,T1还可作为串行异步通信口的波特率发生器。值得注意的是初始化时如果错将定时/计数器T1置为方式3,则T1将停止工作。第33页/共101页当M1M0初始化为01时,定时/计数器工作于方式1,即计数长度为16位。定时/计数器T0方式1结构如图4-8所示,计数器长度为16位,分别由TL0和TH0组成。图4-8定时/计数器T0(T1)方式1结构(1)方式1(16位定时/计数器)第34页/共101页(“12时钟/机器周期”模式)(4-1)(“6时钟/机器周期”模式)(4-2)在定时时间T确定情况下,定时器初值M可表示为:M=(“1
26、2时钟/机器周期”模式)(4-3)M=(“6时钟/机器周期”模式)(4-4)在上式中,如果单位取MHz,则定时时间T单位是us。如果定时器初值为M,则方式1的定时时间t为:第35页/共101页当M1M0初始化为10时,定时/计数器工作于方式2,是一种自动重装初值的8位定时/计数器。定时/计数器T0方式2结构如图4-9所示,除了计数长度(8位)、自动重装初值功能外,其他情况与方式1相同。图4-9定时/计数器T0(T1)方式2结构(2)方式2第36页/共101页2023/4/14由于方式2的计数长度为8位,因此定时时间T与初值M之间关系为:M=(“12时钟/机器周期”模式)(4-5)M=(“6时钟
27、/机器周期”模式)(4-6)第37页/共101页定时/计数器T0工作于方式3的结构如图4-10所示。可见,方式3将定时/计数器T0分成两个独立的8位定时/计数器(但只有TL0具有定时和计数功能,而TH0计数脉冲来自CPU内分频器,不可选择,只能作为8位定时器使用)。图4-10定时/计数器T0方式3结构(3)方式3第38页/共101页2023/4/144.3.3 定时/计数器T2结构及控制 增强型MCS-51定时/计数器T2的功能比标准MCS-52系列CPU内定时/计数器T2更强,除了具有下降沿触发自动重装、捕捉、串行口波特率发生器三种工作方式外,还增加了可编程时钟输出、外电平控制向上或向下计数
28、自动重装两种工作模式,即增强型MCS-51芯片内的T2具有5种工作方式。第39页/共101页2023/4/14在增强型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的重装初值;在捕捉方
29、式下,当P1.1引脚出现负跳变()时,T2计数器高8位TH2、低8位TL2分别被捕捉到CAP2H、RCAP2L寄存器中。第40页/共101页2023/4/141.定时/计数器T2的控制 在标准MCS-52系列中,定时/计数器T2的工作方式、用途由T2CON寄存器内容决定,各位含义如图4-12所示:图4-12T2CON寄存器各位含义第41页/共101页2023/4/14在增强型MCS-51中,T2工作方式还与T2MOD寄存器有关,T2MOD各位含义如图4-13所示。图4-13T2MOD寄存器各位含义第42页/共101页RCLK+TCLKTR2T2OEDCEN工作方式及状态00100下降沿触发重装
30、方式00101外部电平控制重装方式0110X16位捕捉方式1X1XX串行口方式1、方式3发送或接收波特率发生器0X11X时钟输出方式XX0XX停止计数由T2CON、T2MOD寄存器定义的定时/计数器T2工作方式如表4-2所示。表4-2定时/计数器T2工作方式第43页/共101页2023/4/142.T2的工作方式(1)下降沿触发自动重装初值16位定时或计数器当TCLK、RCLK、T20E、DCEN均为0时,定时/计数器T2是一个下降沿触发自动重装初值的16位定时或计数器,内部结构如图4-14所示。第44页/共101页图4-14下降沿触发自动重装初值16位定时/计数器T2结构第45页/共101页
31、2023/4/14(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所示。第46页/共101页图4-15外电平控制重装
32、方式下的T2结构第47页/共101页(3)捕捉方式当TCLK、RCLK位为0,位为1时,定时/计数器T2工作于捕捉方式,内部结构如图4-16所示。图4-16定时/计数器T2的捕捉方式第48页/共101页2023/4/14(4)可编程时钟输出方式当T2MOD寄存器T2OE位为1,且T2CON寄存器位为0时,T2工作于可编程时钟输出方式,T2溢出信号自动触发T2(P1.0)引脚状态翻转,从P1.0引脚输出频率可调、精度很高的方波信号;同时使RCAP2L、RCAP2H寄存器内容装入TL2和TH2寄存器中,重新计数,以便获得准确的溢出信号。T2工作于时钟输出方式的结构如图4-17所示。第49页/共10
33、1页图4-17时钟输出方式下的定时器T2结构第50页/共101页(5)串行口波特率发生器当TCLK或RCLK位为1时,定时器T2作为串行口方式1、方式3发送或接收波特率发生器(在这种情况下,位没有意义,可以是0或1),内部结构如图4-18所示。图4-18T2作为串行口波特率发生器的结构第51页/共101页2023/4/144.3.4 定时/计数器初始化及应用(1)确定定时/计数器工作方式,计算定时/计数器初值M。(2)初值M送定时/计数器高、低位(即TH和TL)。(3)初始化TMOD寄存器。(4)如果允许定时器溢出中断,则还需初始化定时/计数器中断优先级(即需要设置IPH及IP)、禁止/允许定
34、时/计数器中断(即需要设置IE),并启动。可如下顺序初始化定时/计数器:第52页/共101页2023/4/144.4 串行通信系统 4.4.1串行通信概念4.4.2增强型MCS-51串行通信口控制及初始化4.4.3串行口工作方式及应用4.4.4帧错误检测及应用4.4.5多机通信及地址自动识别技术4.4.6RS-232C串行接口标准及应用第53页/共101页2023/4/144.4.1 串行通信概念 CPU与外设之间信息交换过程称为通信,根据CPU与外设之间连线结构、数据发送方式的不同,可将通信分为并行通信和串行通信两种基本方式。在并行通信方式中,数据各位同时传送,如图4-19(a)所示。(a)
35、并行通信第54页/共101页2023/4/14而在串行通信方式中,数据按位逐一传送,如图4-19(b)所示。(b)串行通信第55页/共101页2023/4/141.串行通信的种类 根据数据传输方式的不同,可将串行通信分为同步通信和异步通信两种。同步通信是一种数据连续传输的串行通信方式。通信时,发送方把需要发送的多个字节数据和校验信息连接起来,组成数据块。发送时,发送方只需在数据块前插入12个特殊的同步字符,然后按特定速率逐位输出(发送)数据块内的各位数据。接收方在接收到特定的同步字符后,也按相同速率接收数据块内的各位数据。典型的同步通信数据帧格式如下:第56页/共101页2023/4/14异步
36、通信的特点是每次只传送一个字,每个字由起始位(规定为0电平)、数据位、奇偶校验位、停止位(规定为1电平)组成,典型的异步通信数据帧格式如下所示:第57页/共101页2023/4/14异步通信过程可概述为:对于发送方来说,发送时,先输出低电平的起始位,然后按特定速率发送数据位(包括奇偶校验位),当最后一位数据(对于采用奇偶校验的异步通信来说,最后一个数据位往往是奇偶校验位)发送完毕后,发送一个高电平的停止位,这样就发送完了一帧数据。如果不再需要发送新数据或数据尚未准备就绪时,就将数据传输线钳位在高电平状态。接收方不断检测传输线的电平状态,当发现传输线由高电平变为低电平时(起始位标志),即认为有数
37、据传入,进入接收准备状态,然后以相同速率检测传输线的电平状态,接收随后送来的数据位、奇偶校验位和停止位。第58页/共101页2023/4/14即在异步通信方式中,发送方通过控制数据线的电平状态来完成数据的发送;接收方通过不断检测数据线的电平状态确认是否有数据传入以及接收的数据位是0还是1,只要发送速率和接收检测速率相同,即能准确接收,发送、接收设备可以使用各自的时钟源完成数据的发送和接收,无须使用同一时钟信号。可见,异步串行通信所需传输线最少,一根数据线和一根地线,就能实现数据传送,在单片机控制系统中得到了广泛应用。第59页/共101页2023/4/142.波特率 在串行通信系统中常用波特率来
38、衡量通信的快慢,含义是每秒中传送的二进制数码的位数,单位是位/秒(b/s或Kb/s),简称“波特”。例如,两个异步串行通信设备之间每秒钟传送的信息量是240字节,如果一帧数据包含10位(1个起始位、8个数据位和1个停止位),则发送、接收波特率为:240B/s10位=2400b/s=2400波特一般异步通信波特率为1109600,而同步通信波特率在56Kb以上。第60页/共101页3.串行通信数据传输方向 根据串行通信数据传输方向,可将串行通信系统分为:单工方式、半双工方式和全双工方式,如图4-20所示。图4-20数据传输方式第61页/共101页2023/4/144.串行通讯接口种类 根据串行通
39、讯格式及约定(如同步方式、通讯速率、信号电平等)不同,形成了许多串行通讯接口标准,如常见 的 RS-232、RS-422、RS-485、IEEE1394、I2C、SPI(同步通信)、USB(通用串行总线接口)、CAN总线接口等。下面结合增强型MCS-51介绍UART接口及使用规则。第62页/共101页2023/4/144.4.2 增强型MCS-51串行通信口控制及初始化 8XC5X、8XC5XX2系列单片机芯片内置的增强型全双工串行接口部件UART除了具备标准MCS-51串行接口部件UART功能外,还具有帧错误侦测和自动地址识别功能。MCS-51内置了一个可编程的、全双工通用异步串行通信接口部
40、件UART,内部结构如图4-21所示。主要由两个物理上完全独立的串行数据接收缓冲器和串行数据发送缓冲器、接收控制器(包括输入移位寄存器)、发送控制器(包括发送门)、接收信号线RXD(P3.0)引脚和发送信号线TXD(P3.1)引脚组成。第63页/共101页2023/4/14图4-21MCS-51串行口结构第64页/共101页2023/4/141.串行口控制寄存器SCON 串行口控制寄存器SCON各位含义如图4-22所示。图4-22SCON各位含义第65页/共101页2023/4/14SM0SM1工作方式说明波特率00方式0(扩展I/O口方式)移位输入/输出(用于扩展I/O引脚,不能用于串行通讯
41、)输入/输出移位脉冲为(对“12时钟/机器周期”,n=12;对于“6时钟/机器周期”,n=6)01方式1(常用)波特率可变的8位异步串行通信方式或10方式2(不常用)波特率固定的9位异步串行通信方式(对“12时钟/机器周期”,n=4;对于“6时钟/机器周期”,n=2)11方式3(常用)波特率可变的9位异步串行通信方式或表4-4串行口工作方式第66页/共101页2023/4/14REN是串行接收控制位,当REN为1时,允许串行口接收数据;反之,当REN为0时,禁止串行口接收数据。因此,可通过软件使REN置1或清0,允许或禁止串行口接收数据。TB8是发送数据的第9位。在方式2、方式3中,需要发送9
42、位数据,待发送的低8位数据(b7b0)存放在发送数据缓冲器SBUF中,而第9位(即b8)存放在SCON寄存器的TB8位。在“点对点”通讯系统中,TB8可以是实际意义上的数据,也可以作为发送数据的奇偶标志位。而在多机通信中,TB8位是“地址/数据”帧标志。RB8是接收数据的第9位。在方式2、方式3中,需要接收9位数据,其中低8位数据(b7b0)存放在接收数据缓冲器SBUF中,第9位(即b8)数据存放在SCON寄存器的RB8中。同样,RB8可以是实际意义上的数据,也可以是发送数据的奇偶标志位。第67页/共101页2023/4/14TI是发送结束中断标志。初始化串行口后,在TI位为0情况下,将发送数
43、据写入“发送缓冲器”,将立即启动串行发送过程:自动在数据位前插入起始位,在数据位后插入停止位,组成发送数据帧;并按设定波特率依次将起始位、数据位(从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时,具有选择接收
44、功能,当且仅当第9位数据(RB8)为1时,接收中断RI有效,这样通过SM2位,即可实现多机通信;而在方式1中,当SM2位为1时,必须接收到有效的停止位。第68页/共101页2.波特率倍增选择 在增强型MCS-51系列芯片中,串行口波特率与工作方式有关,如表4-4所示。对于方式0来说,串行输出/输入移位脉冲频率固定为系统时钟信号频率的n分频(对于“12时钟/机器周期”来说,n=12;对于“6时钟/机器周期”来说,n=6),不可调。在方式1、3中,可以选择定时器T1溢出率的16或32分频作为串行口发送、接收波特率外,也选择定时器T2溢出率的的16分频作为串行口发送或接收波特率,如图4-18所示。即
45、当使用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。第69页/共101页2023/4/143.波特率选择 方式1、方式3波特率与定时器T1溢出率、SMOD1位关系如下:波特率=而T1溢出率倒数就等于定时时间
46、t,因此定时T1重装初值C与波特率之间关系为:C=(T1定时器工作在12分频状态)(4-8)C=(T1定时器工作在6分频状态)(4-9)为了保证不同串行通信设备之间数据可靠传输,波特率一般要选择标准值,如1200、2400、4800等,如表4-5所示。第70页/共101页2023/4/144.4.3 串行口工作方式及应用 1.方式0 当串行口工作于方式0时,串行口本身相当于“并入串出”(发送状态)或“串入并出”(接收状态)的移位寄存器。串行移位脉冲CLOCK从TXD(P3.1)引脚输出,频率是系统时钟频率fOSC的12分频(对于8XC5XX2芯片来说,在“6时钟/机器周期”模式下,移位脉冲频率
47、是时钟频率fOSC的6分频);而8位串行数据b0b7依次从RDX(P3.0)引脚输出或输入。第71页/共101页串行口方式0操作时序如图4-X所示,对于串行输出来说,采用“低电平送数据,上升沿锁存”方式,即在移位脉冲上升沿串行输出数据稳定出现在RXD引脚,外部“串入并出”芯片可利用TXD引脚移位脉冲的上升沿锁存数据;对于串行输入来说,MCS-51MPU串行口在移位脉冲的上升沿读RDX引脚的数据,即外部“并入串出”芯片必须在移位脉冲的上升沿将数据送到RXD引脚。第72页/共101页2023/4/14当使用74LS164芯片扩展输出口时,MCS-51芯片RXD引脚接74LS164芯片的串行数据输入
48、端,TXD引脚接74LS164芯片的移位脉冲输入端CLK,如图4-24(a)所示。(a)通过74LS164串入并出芯片扩展输出口第73页/共101页(b)通过74HC595串入并出芯片扩展输出口当使用74HC595芯片扩展输出口时,MCS-51的RXD引脚接74HC595芯片的串行数据输入端SDI,TXD引脚接74HC595芯片的串行移位脉冲输入端SRCLK,并行数据输出锁存脉冲RCLK可由CPU另一I/O引脚,如P1.7提供,串行移位寄存器清除端可接高电平,如图4-23(b)所示(值得注意的是74HC595串行移位脉冲SRCLK、并行数据输出锁存脉冲RCLK对边缘有严格要求,当CPUI/O驱
49、动能力不足时,可在CPUI/O引脚与74HC595芯片间加驱动器,如CD40106芯片等)。第74页/共101页2023/4/14在“并行输入串行输出”芯片,如74LS165、74HC597配合下,即可通过串行口方式0扩展MCS-51的输入引脚,其中MCS-51的RXD引脚接74LS165芯片的串行数据输出端,TXD引脚接74LS165芯片的移位脉冲CLK,如图4-25所示。第75页/共101页2023/4/142.方式1 当SM0、SM1为01时,串行口工作在方式1,是8位的异步串行通信口,其中TXD是发送端,RXD是接收端。发送或接收一帧信息包括1位起始位(固定为0)、8位串行数据(低位在
50、前,高位在后)和一位停止位(固定为1)共10位,一帧数据格式如下所示,波特率与定时器T1(或T2)溢出率、SMOD1位有关(可变)。第76页/共101页2023/4/14方式1的发送过程如下:在TI为0的情况下(表示串行口发送控制电路处于空闲状态),任何写串行数据输出缓冲器SBUF指令(如MOVSBUF,A)均会触发串行发送过程:MCS-51串行口自动在8个串行数据位的前、后分别插入一个起始位(0)和一个停止位(1),构成10位信息帧,然后按设定的波特率依次输出起始位(0)、8个数据位(顺序为b0b7)和停止位(1)。当8位数据(即b7位)发送结束后(即开始发送停止位)时,串行口自动将发送结束