中断控制、定时计数器与串行口剖析

上传人:今*** 文档编号:106887273 上传时间:2019-10-16 格式:PPT 页数:155 大小:1.50MB
返回 下载 相关 举报
中断控制、定时计数器与串行口剖析_第1页
第1页 / 共155页
中断控制、定时计数器与串行口剖析_第2页
第2页 / 共155页
中断控制、定时计数器与串行口剖析_第3页
第3页 / 共155页
中断控制、定时计数器与串行口剖析_第4页
第4页 / 共155页
中断控制、定时计数器与串行口剖析_第5页
第5页 / 共155页
点击查看更多>>
资源描述

《中断控制、定时计数器与串行口剖析》由会员分享,可在线阅读,更多相关《中断控制、定时计数器与串行口剖析(155页珍藏版)》请在金锄头文库上搜索。

1、第4章 中断控制、定时/计数器与串行口,4.1 CPU与外设通信方式概述 4.2 增强型MCS-51中断控制系统 4.3 增强型MCS-51定时/计数器 4.4 串行通信系统 4.5 增强型MCS-51芯片识别和仿真,4.1 CPU与外设通信方式概述,4.1.1 查询方式 查询方式包括查询输出方式和查询输入方式。所谓查询输入方式,是指CPU读外设数据前,先查询外设是否处于准备就绪状态(即外设是否已将数据输出到CPU的数据总线上);查询输出方式是指CPU向外设输出数据前,先查询外设是否处于空闲状态(即外设是否可以接收CPU输出的数据)。,4.1.2 中断通信方式 采用中断传输方式即可克服查询传输

2、方式存在的缺陷:当CPU需要向外设输出数据时,将启动命令写入外设控制口后,就继续执行随后的指令,而不是被动等待;当外设处于空闲状态,可以接收数据时,由外设向CPU发出允许数据传送的请求信号即中断请求信号,如果满足中断响应条件,CPU将暂停执行随后的程序,转去执行预先安排好的数据传送子程序也称为中断服务程序,CPU响应外设中断请求信号的过程简称为中断响应;在完成了数据传送后,再返回断点处继续执行被中断的程序。可见,在这种方式中,CPU发出控制命令后,依然执行启动命令后的指令序列,而不是通过检测外设的状态来确定外设是否处于空闲状态,不仅CPU利用率高,而且能同时与多个外设进行数据交换只要适当安排多

3、个中断优先级以及同优先级中断的查询顺序即可。因此,中断传输方式是CPU与外设之间最常见的一种数据传输方式。,1.中断源 在计算机控制系统中,把引起中断的事件称为中断源。在单片机控制系统中,常见的中断源有: 外部中断,如CPU某些特定引脚电平变化引起的中断。 各类定时/计数器溢出中断(即定时时间到或计数器满请求中断)。 串行发送结束请求中断。 串行接收有效请求中断。 电源掉电中断。,2. 中断优先级 既然中断是计算机系统中CPU与外设进行数据交换的主要方式,那么多个外设以中断方式与CPU进行数据交换时,可能遇到两个或两个以上外设中断请求同时有效的情形。在这种情况下,CPU先响应哪一外设的中断请求

4、?这就涉及到中断优先级问题。一般说来,为了能够处理多个中断请求,中断控制系统均提供中断优先级控制。有了中断优先级控制后,就可以解决多个中断请求同时有效时先响应哪一中断问题。,3. 中断开关 有时为避免某一处理过程被中断,中断控制器给每一个中断源都设置了一个中断请求屏蔽位,用于禁止或允许相应中断源的中断请求传送到CPU,相当于中断源的中断开关。此外,还设一个总的中断请求屏蔽位,当该位处于禁止状态时,所有中断源的中断请求均不能传送到CPU,相当于中断总开关。,4. 中断处理过程,4.2 增强型MCS-51中断控制系统,图4-1 增强型MCS-51中断系统结构,4.2.1 中断源及标志,图4-2 与

5、中断功能有关的TCON寄存器位,4.2.2 中断控制 1. 中断允许控制寄存器IE,图4-3 中断控制寄存器IE各位含义,由于IE寄存器具有按位寻址功能,因此可通过位操作指令,允许或禁止其中的任一中断,如:,SETB EA ; 开中断 SETB EX0 ; 允许 中断 CLR ES ; 禁止串行口中断 例如当TCON的IT0位为0时,只要在S5P2相采样到P3.2引脚为低电平,则 中断请求标志IE0就为1。但当EX0或EA之一为0时,CPU将不检查IE0的中断请求标志(即该中断请求被CPU忽略)。,2. 中断优先级控制寄存器IP 标准MCS-51内核CPU只有两个中断优先级,各中断源优先级由I

6、P寄存器控制(0为低优先级;1为高优先级),中断优先级控制寄存器IP各位含义如图4-4(a)所示。 增强型MCS-51内核CPU具有四个中断优先级,除了标准MCS-51 CPU的中断优先级控制寄存器IP外,还增加了一个中断优先级控制寄存器IPH(字节地址为0B7H,但IPH没有位地址功能),IPH寄存器各位含义如图4-4(b)所示,于是中断源的中断优先级由IPH、IP对应位编码决定,具体情况如下:,IPH.X位 IP.X位 优先级 0 0 0级(优先级最低) 0 1 1级 1 0 2级 1 1 3级(优先级最高),图4-4 中断优先级控制 (a) 中断优先级控制寄存器IP各位含义 (b) 中断

7、优先级控制高位寄存器IPH各位含义,图4-4 中断优先级控制 (a) 中断优先级控制寄存器IP各位含义 (b) 中断优先级控制高位寄存器IPH各位含义,PX0H、PX0外中断 优先级高、低位。 PX1H、PX1外中断 优先级高、低位。 PT0H、PT0定时/计数器T0优先级高、低位。 PT1H、PT1定时/计数器T1优先级高、低位。 PSH、PS串行口中断优先级高、低位。 PT2H、PT2定时/计数器T2优先级高、低位。 可见,当IPH为XX000000B时,中断优先级仅由IP寄存器决定,即与标准MCS-51内核CPU中断优先级兼容。,3. 硬件查询顺序 改变IPH、IP寄存器的值,即可使相应

8、中断源优先权升高或降低。但增强型MCS-51具有6个中断源,而只有四个中断优先级,这就必然存在两个或两个以上中断源优先级相同。例如当IPH为00010001B,而IP为00001001B时,外中断优先级为3(最高),串行口中断优先级为2,定时/计数器T1中断优先级为1,而其他3个中断源优先级均为0(最低)。复位后,IPH、IP初值为00000000,即所有中断优先级均为0。,为此,MCS-51约定当同一优先级中断请求有效时,CPU响应顺序为: 外中断 定时/计数器T0溢出中断 外中断 定时/计数器T1溢出中断 串行口中断 定时/计数器T2溢出中断,4.2.3 中断响应过程及中断服务程序入口地址

9、,图4-5 中断响应时序,1. 中断响应条件 MCS-51中断响应条件为: (1) 当前不处于同级或更高级中断响应中。这是为了防止同级或低级中断请求中断同级或更高级中断。 (2) 当前机器周期必须是当前指令的最后一个机器周期,否则等待。执行某些指令需要两个或两个以上机器周期,如果当前机器周期不是指令的最后一个机器周期,则不响应中断请求,即不允许中断一条指令的执行过程,这是为了保证指令执行过程的完整性。,(3) 如果当前指令是中断返回指令RETI,或读写中断控制寄存器IE、优先级寄存器IP或IPH,则必须再执行一条指令后才能响应中断请求。 如果不满足以上条件,将忽略该机器周期对中断标志的查询结果

10、,下一机器周期继续查询,因此可能存在这样一种情况:某一中断发生了,不满足响应条件,CPU不响应,又出了新的中断请求,则尚未响应的中断请求将被忽略,因为每一中断源只有一个中断标志位,而CPU总是在每个机器周期的S5P2相检测中断源,设置中断标志。,例如低电平触发的外中断INT0低电平维持时间为1个机器周期,假设在M1机器周期有效,则M1机器周期的S5P2状态后,标志位IE0为1;尽管在M2机器周期的S6状态,CPU查询到IE0有效,但不满足中断响应条件,即M3机器周期不响应INT0的中断请求,继续执行随后指令系列,然而在M2机器周期S5P2相前INT0引脚已恢复高电平,在S5P2相后IE0复位,

11、在M3机器周期S6状态查询发现IE0为0,无效,结果是本次INT0中断请求将被忽略。 另外,在中断响应过程中,如果在M4周期的S6状态查询到优先级更高的中断标志为1(即在M2M3机器周期内优先级更高的中断请求出现),在M5、M6机器周期将响应高优先级中断,而不执行低优先级中断服务程序。,2. 中断响应过程及中断服务程序入口地址 如果满足中断响应条件,将进入中断响应过程: (1) CPU先将对应中断的优先级触发器置1(每一中断源对应一个中断优先级触发器,不过图4-1没画出该触发器),阻止CPU再响应同级或更低级中断请求。 (2) 将程序计数器PC当前值压入堆栈,以保证执行完中断服务程序后正确返回

12、;并将相应中断源入口地址装入PC,以便执行中断服务程序。这一过程由硬件完成,相当于执行了一条长调用指令“LCALL XXXX”,中断服务程序入口地址如下:,中断源 入口地址(即LCALL指令 的XXXX地址) 外中断 0003H 定时/计数器T0溢出中断 000BH 外中断 0013H 定时/计数器T1溢出中断 001BH 串行口中断 0023H 定时/计数器T2溢出中断 002BH,由于各中断服务程序入口地址仅相隔8个字节,难以容纳中断服务程序,为此可在入口处放置一条长跳转指令,而实际的中断服务程序放在存储器区内的任意位置(一般放在主程序后),如下所示: ORG 0003H LJMP INT

13、0 ; 在外中断入口处放一条长跳转指令 ORG 0100H MAIN: ; 主程序 INT0: ; 外中断的中断服务程序,(3) 清除中断请求标志。进入中断服务程序后,CPU能自动清除下列中断请求标志位: 定时器T0中断请求标志TF0; 定时器T1中断请求标志TF1; 边沿触发方式下外中断的中断请求标志IE0; 边沿触发方式下外中断的中断请求标志IE1。 但不自动清除串行发送结束中断标志TI、串行接收有效中断标志RI、定时/计数器T2溢出中断标志TF2、定时/计数器T2外触发标志EXF2以及电平触发方式下的外中断标志IE0和IE1。对于不能自动清除的中断请求标志,需要在中断服务程序中,用“CL

14、R 位地址”指令清除。,(4) 返回。中断服务程序最后一条指令是中断返回指令“RETI”,执行了中断返回指令RETI后,先将对应中断的优先级触发器清零(以便返回后CPU能够响应同级或更低级的中断请求),并将堆栈内的两个字节弹到程序计数器PC,以便从断点处继续执行被中断程序的后续指令。,4.2.4 中断初始化及中断服务程序结构,中断初始化是指通过设置TCON、IE及IP、IPH寄存器内容,确定外中断触发方式(低电平触发还是下降沿触发)、开中断、设置中断优先级等,例如可通过如下指令将定义为下降沿触发,优先级为3(最高),并允许中断:,SETB IT0 ;外中断采用下降沿触发 MOV A, IPH

15、ORL A, #01H MOV IPH,A ;由于IPH寄存器没有位寻址功能,只能通过或 指令将IPH的PX0H ;位置1 SETB EA ;开中断,SETB PX0 ;IP寄存器具有位寻址功能,可通过SETB指令将指 定位置1 SETB EX0 ;允许中断,中断服务程序结构与子程序类似,大致包含以下几部分: ; 必要时保护现场 PUSH PSW PUSH Acc SETB RS0 ; 切换工作寄存器区,根据需要可使用03区中的任一区 CLR RS1 ; 由于中断出现的不确定性,因此只要中断服务程序中使用 ; 了寄存器组R0R7,就需要切换工作区 ; 中断服务程序体(略),CLR 中断请求标志

16、 ; 对于不能自动清除中断请求标志的中 断响应过程,需要通过“CLR中断 ; 请求标志位”指令清除中断请求标志, 防止同一请求被多次响应POP Acc POP PSW ; 恢复现场 RETI ; 中断返回指令,(1) 中断出现是随机的,可能出现,也可能不出现,更不知道什么会时候出现,即被中断程序的断点无法预测。而子程序的执行由调用指令LCALL或ACALL实现,只要满足特定条件,就一定会发生,断点由程序员控制。因此只要中断服务程序中出现写寄存器组R0R7之一,就需要切换工作寄存器区:由于同级中断不能嵌套,因此同一优先级中断服务程序可以使用同一工作寄存器区;高优先级中断服务程序和低优先级中断服务程序一般不能使用同一工作寄存器区,除非两者不可能同时出现。 (2) 中断服务程序入口地址(也称为中断向量)由硬件决定,与CPU类型有关,不能

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号