2.7中断

上传人:今*** 文档编号:107076188 上传时间:2019-10-17 格式:PPT 页数:29 大小:1,019.51KB
返回 下载 相关 举报
2.7中断_第1页
第1页 / 共29页
2.7中断_第2页
第2页 / 共29页
2.7中断_第3页
第3页 / 共29页
2.7中断_第4页
第4页 / 共29页
2.7中断_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《2.7中断》由会员分享,可在线阅读,更多相关《2.7中断(29页珍藏版)》请在金锄头文库上搜索。

1、2.7 S12中断系统,中断的定义: 中断是指CPU在执行当前程序的过程中,由于某种随机出现的外设请求或CPU内部的异常事件,使CPU暂停正在执行的程序而转去执行相应的服务处理程序;当服务处理程序运行完毕后,CPU再返回到暂停处继续执行原来的程序。,中断引入背景:解决CPU与外设之间的信息交换问题,即I/O同步方法之一。 应用扩展:应用到CPU内部的指令中断和内部异常处理。,2.7.1 中断系统概述,中断概念: 指某外部事件或异常发生时,CPU暂时停止执行当前的程序(保护断点),转向中断服务程序;中断处理完后返回原来的程序继续运行(恢复断点)。 中断是MCU的重要功能。 S12MCU丰富的中断

2、源: 多个普通中断、多个特殊中断。,1. S12的特殊中断-复位 5种情况可以触发复位中断(不可屏蔽中断): 上电复位(低电压) 外部(RESET)复位 非法寻址复位 看门狗定时器溢出复位 设置COPCTL寄存器(CR2:0非零) 时钟监视失效复位 设置PLLCTL寄存器(CME=1,SCME=1),上电复位和外部RESET复位中断的向量地址: $FFFE$FFFF,2 . S12XS的中断 不可屏蔽中断: 非法指令中断 TRAP 软件中断 SWI 外部中断 XIRQ 系统中断 SYS 伪中断 可屏蔽中断 ( I位可屏蔽中断 ) IRQ、RTI、TIME、SCI、SPI、CAN等功能部件。 C

3、CR的X、I位 - 0=允许中断;1=屏蔽中断,复位默认1。 CCR的X位可设置一次,不能发生0到1的变化即不能关闭。,2.7.2中断向量表,其核心部件是一个优先级编码器和各中断源公用的中断向量发生器。当IACK有效时,中断向量发生器将把与最高优先级中断请求源对应的中断向量号(类型号)送上数据总线DB。,CPU响应外部可屏蔽中断请求,通常要满足以下条件:,中断源:置位了中断请求触发器。 中断使能:中断屏蔽触发器处于非屏蔽状态。 中断允许:CPU内部是中断开放的(CPU内部中断允许触发器IF=1)。 优先级:没有更高优先级别的中断请求正在被响应或正发出、正挂起。 指令结束:CPU正在执行的现行指

4、令已经结束。,中断优先级与中断嵌套,当多个中断源同时申请中断时,CPU同一时刻只能响应一个中断源的申请,应按各中断源的轻重缓急程度来确定它们的优先级别。优先级高的中断先响应。,中断嵌套是指在优先级已定的情况下,低优先级的中断服务程序可以被高优先级的中断源所中断,等高优先级的中断服务程序结束后,再返回去执行被中断的低优先级中断服务程序。,主程序,1#中断服务程序,2#中断服务程序,3#中断服务程序,(中断优先级:3#2#1#),嵌套的级数原则上不限,只取决于堆栈深度,实际上与要求的中断响应速度也有关。,中断嵌套示意图:,1#中断服务程序,2#中断服务程序,3#中断服务程序,中断优先级:非I位可屏

5、蔽 I位可屏蔽; 非I位可屏蔽中断可以中断I位可屏蔽中断,且IPL不变; 例如: 在中断中加入 SWI指令,可以中断一个I位可屏蔽中断。,地址$FF10$FFF8为S12X的中断向量表。 每个向量(2个字节)指向中断服务程序的入口地址。 外部中断IRQ的向量地址: $FFF2$FFF3,中断优先级 不可屏蔽中断高于可屏蔽中断。 不可屏蔽中断的优先级 -由硬件规定,按以下次序递减: 上电复位或外部RESET引脚复位; 时钟监视复位 看门狗复位 指令陷阱TRAP 软件中断SWI 外部中断XIRQ,可屏蔽中断的优先级,系统复位后, 小于等于$FFF2的中断向量激活状态。 默认优先级为1级,可以重新设

6、置; 非屏蔽中断、SYS中断、伪中断不能被屏蔽; 当优先级相等时, 中断向量地址高的中断优先级高;,中断优先级的控制,中断向量地址: $FF00 TO $FFFF , 共16*8=128个. 中断请求配置地址寄存器INT_CFADDR:,高4为可以写入$0 TO $F , 共16个地址。,例如: $E0 对应选择了8个中断源 $FFE0 ,$FFE2 ,.$FFEE (TC7 TC0 计时器),中断请求配置数据寄存器INT_CFDATA0 - 7,INT_CFADDR = $E0 INT_CFDATA7 设置TC0优先级 . . . . INT_CFDATA0 设置TC7优先级,中断嵌套的条件

7、 : PRIOLV2:0 IPL2:0,2.7.3 中断处理过程、优先级与嵌套 1.中断处理的基本流程 (1)中断请求及条件 中断源未被屏蔽,且中断允许触发器被置位。 (2)中断响应 一般在现行指令结束时检测中断请求,如中断响应条件满足就进入中断响应周期,自动进行3件事: 关中断,即将CCR的I位置1,以屏蔽其它中断干扰。 保护断点地址和标志寄存器CCR的内容压入到堆栈,即现场保护。 跳转到中断服务程序的入口地址,即将中断向量地址的内容载入PC。,(3)中断处理程序 完成中断后要处理的功能。中断服务程序通常放在不分页FLASH区。 (4)中断返回 中断服务的最后一条指令必须是RTI,返回时自动

8、将堆栈中的标志寄存器内容和断点地址弹出,使程序回到中断前的地址继续运行原来的程序。 2.中断现场保护 MCU硬件自动将PC ,IY,IX,D,CCR寄存器内容依次压栈, 同时清I位。,【例】用中断源IRQ产生中断显示LED跑马灯。 (在IRQ引脚和地之间加接一个按键,内部默认上。) 初始化设置外部中断控制寄存器INTCR。 IRQE:0=低电平触发,1=下降沿触发 IRQEN:0=禁止IRQ中断,1=使能,7.3 中断程序设计 主程序中进行中断初始化,并执行占用时间较多的程序; 中断服务程序要求简短、高效,条件苛刻时尽量使用汇编语言; 在整个源程序的末尾声明中断子程序的所对应的矢量地址,格式如

9、例; 以上所有源程序会通过IDE集成开发环境自动进行编译、链接、定位,形成可执行机器代码。,程序说明:IRQ中断触发的LED跑马灯,LED接B口,,MY_EXTENDED_RAM: SECTION FLAG EQU $2000 MyCode: SECTION ; code section main: Entry: LDS #_SEG_END_SSTACK LDAA #$FF STAA DDRB ;设置B口为输出 LDAA #$C0 STAA IRQCR ;设置外部中断IRQ使能, ;下降沿触发 CLI ;开中断 LDAA #$FF STAA PORTB ;先全熄灭 LDAA #$00 STAA

10、 FLAG ;送停止标志$00给FLAG,WAIT: CMPA FLAG BEQ WAIT ;FLAG为$00等待 SEC ;C置1 LDAA #$FE SHIFT: STAA PORTB ;亮1个灯 BSR DELAY ;延时 ROLA ;循环左移 BRCLR PTP,#$01,CANCEL ;检测P口最低位的按键 BRA SHIFT ;持续循环 CANCEL: LDAA #$00 STAA FLAG ;送停止标志$00给FLAG BRA WAIT ;跳回等待,IRQ_ISR: ; 中断服务子程序 LDAA #$FF STAA FLAG ; 送跑马标志$FF给FLAG RTI ; 中断返回 DELAY: ; 子程序DELAY PSHX PSHY LDX #200 DELAY1: LDY #200 DELAY2: NOP ;1T NOP ;1T DBNE Y,DELAY2 ;3T DBNE X,DELAY1 PULY PULX RTS ORG $FFF2 ;中断向量地址声明 FDB IRQ_ISR,IVBR = $FF : $FF10 TO $FFFE IVBR = $EF : $EF10 TO $EFFE,

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

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

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