
第6章MSP430中断系统.ppt
65页1,第6章 MSP430 中断系统,第一节 中断的基本概念第二节 MSP430中断系统第三节 中断程序设计,,本章教学目标:1、了解中断基本概念2、掌握中断控制机制和中断响应过程3、掌握中断编程技术,2,第一节 中断的基本概念,什么是中断中断源(中断分类)中断优先级及其裁决规则断点和中断现场CPU对中断的响应条件(中断控制)CPU对中断的响应过程中断的返回过程,3,,什么是中断中断是暂停CPU正在运行的程序,转去执行相应的中断服务程序,完毕后返回被中断的程序继续运行的现象和技术4,中断源(中断分类)中断首先需要有中断源发出中断请求,并征得系统允许(屏蔽、优先权)后才会发生转去执行中断服务程序前需保护中断现场,执行完中断服务程序后应恢复中断现场5,举例:奔腾中断系统中的中断源(分类),1、内中断(软中断)① 被零除或OF=1时执行INTO指令引起② 使用DEBUG中的单步或断点设置操作引起③ 执行INT n 指令引起,2、外中断(硬中断) ① 可屏蔽中断INTR ② 非屏蔽中断NMI,6,中断优先级及其裁决规则事有轻重缓急,不同的中断请求表示不同的事件,因此CPU对不同中断请求的响应也应有轻重缓急之分。
在计算机中,给每个中断源指定(固定的或可通过程序设置的)一个优先权,称为中断优先权(优先级)当多个中断源同时发出中断请求时,CPU按照中断优先权的高低顺序依次响应在有些CPU的中断系统中还规定高优先级的中断可以中断低优先级的中断子程;低优先级的中断不能中断高优先级的中断子程;任何中断不能中断同一优先级的中断子程7,举例:奔腾中断系统中的优先级,奔腾中断优先级规则: 当多个中断源同时发出中断请求时,CPU按照中断优先级的高低顺序依次响应; 高优先级的中断可以中断低优先级的中断子程; 低优先级的中断不能中断高优先级的中断子程; 任何中断不能中断同一优先级的中断子程8,…… MOV #0 , R5 ADD @R4, R5 MOV R5, 0(R6) ……,断点:是指CPU执行的现行程序被中断时的下一条指令的地址,又称断点地址中断现场:是指CPU转去执行中断服务程序前的运行状态,包括CPU内部某些寄存器(如SR)的值和断点地址等。
断点 0150h,,现行指令,,,现行程序,断点和中断现场,9,CPU对中断的响应条件(中断控制),中断请求信号是否有效(高电平/低电平/上升沿/下降沿)?CPU是否执行完当前指令?当前指令是否能被中断?中断请求是否被屏蔽?是否已经开中断(是否置位中断总控位)?请求的中断是否具有足够高的优先级?,10,举例:奔腾可屏蔽中断的控制机制,IF屏蔽控制,CPU优先权裁决,可屏蔽中断请求,CPU中断响应,,,,举例:奔腾非屏蔽中断的控制机制,CPU优先权裁决,非屏蔽中断请求,CPU中断响应,,,11,CPU对中断的响应过程,自动入栈保护断点和中断现场;自动修改中断控制位和其它标志处理;自动获取中断子程入口地址(中断向量);自动转去运行中断子程12,举例:奔腾CPU响应中断的过程,当中断源发出中断申请后,不论是内中断、非屏蔽中断,还是可屏蔽中断,只要满足响应条件,在执行完当前指令后,CPU内部硬件会自动完成下列响应中断的过程:,① 取中断类型号N② 当前PSW的内容入栈③ 清IF、TF标志为0④ 当前CS的内容入栈⑤ 当前IP的内容入栈⑥ 取内存单元( 0 : N ×4 )字内容送IP取内存单元( 0 : N ×4 + 2 )字内容送CS 此时CS:IP指向中断程序的入口,开始执行中断程序。
13,奔腾中断系统中的中断类型号、中断向量与中断向量表,14,奔腾CPU获取中断类型号的方法总结,INTO指令,,被零除 固定类型号00H,,,,,OF=1 固定类型号04H,,,DEBUG的单步和断点操作,,单步 固定类型号01H,,断点 固定类型号03H,,,内中断,INT N指令 指令中指定类型号N,,,,非屏蔽中断 固定类型号02H,,,,,外中断,,,可屏蔽中断CPU按中断响应周期时序从数据总线上获取中断类型号,,,,,,,,,,,15,,,,,CPU通过引脚INTA 发中断响应信号,通知接口芯片开始准备中断类型号;,对于可屏蔽中断,当INTR引脚变为高电平,并IF=1且有足够的优先权,则在执行完当前指令后,CPU将发出下列中断响应周期时序:,CPU再发INTA通知接口芯片将中断类型号送至数据总线上,CPU从数据总线读取中断类型号,并完成前述的响应中断的过程,,,,16,中断返回中断返回通常通过执行中断返回指令实现中断返回指令自动完成恢复现场的工作(出栈操作),然后继续执行被其中断的程序。
17,第二节 MSP430的中断系统,18,MSP430 中断控制与 中断返回指令 EINT ;Enable general INTerrupts DINT ;Disable general INTerrupts RETI,19,EINT 仿真operarion 1 -> GIE,开中断指令 enable general interrupt,BIS #8 , SR,对 SR 的影响:Status Bits: are not affectedMode Bits: GIE=1 OSCOFF and CPUOFF are not affected,Note:The instruction following the EINT is always executed, even if an interrupt service request is pending when the interrupts are enable.,20,DINT 仿真operarion 0 -> GIE,关中断指令 disable general interrupt,BIC #8 , SR,对 SR 的影响:Status Bits: are not affectedMode Bits: GIE=0 OSCOFF and CPUOFF are not affected,Note: If any code sequence needs to be protected from interrupt, the DINT should be executed at least one instruction before the beginning of the uninterruptible sequence, or should be followed by a NOP instruction.,21,中断子程返回指令 RETIoperation @SP → SR SP+2 → SP @SP → PC SP+2 → SP,POP SR,,POP PC,,对 SR 的影响:Status Bits: N,Z,C,V: restored from system stackMode Bits: GIE,OSCOFF and CPUOFF are restored from system stack,22,MSP430的三大中断源,系统复位(system reset)非屏蔽中断((Non)-maskable NMI)可屏蔽中断(maskable),非屏蔽中断,不可屏蔽中断,23,举例:MSP430F149 的中断源、中断向量和优先级,24,MSP430F149 的系统复位和非屏蔽中断源,25,MSP430F149 的可屏蔽中断源,26,中断向量表: 0FFE0h~0FFFEh 表中可存放16个中断向量 每个中断向量为16BIT 由编程者负责编程中断向量: 中断服务子程的入口地址,注:MSP430的某些外设还有其“子向量表”,用以区分共享同一个中断向量的不同中断请求,27,中断优先级 interrupt priority,在MSP430中,不同的中断有各自固定的中断优先级。
当有多个中断同时请求时,MSP430 CPU将响应优先级最高的中断请求注意:在MSP430中,中断优先级仅用于裁决同时产生的中断请求如果在某一中断服务子程中置位GIE(即允许嵌套),则任何中断请求均将中断正在执行的中断服务子程(中断嵌套),而不管中断的优先级如何即在允许嵌套的情况下,低优先级的中断请求可以中断高优先级的中断服务子程的运行,同级的中断也可以相互嵌套28,非屏蔽中断的控制机制,,,,,,individual enable bit,CPU优先权裁决,中断请求,CPU中断响应,,,,(non)_maskable interrupt,,,,,,CPU优先权裁决,GIE,CPU中断响应,可屏蔽中断的控制机制(分控位、总控位),,,,,individual enable bit,中断请求,maskable interrupt,1--enable0--disable,1--enable0--disable,1--enable0--disable,,,,,,,29,中断响应过程,当前指令执行完毕,且满足响应条件(???);入栈保护断点:相当于执行 PUSH PC;入栈保护SR:相当于执行 PUSH SR;优先级裁决:若有多个中断同时请求,则CPU选择优先级最高的中断请求进行响应;中断请求标志的处理:对于单一中断标志的中断源请求,则由CPU自动清零该中断标志;对于有多个中断标志的中断源请求,则中断标志的清零处理交由中断服务子程完成(以便于中断服务子程区分本次中断到底是由哪一个/哪些中断标志请求的);清零SR(关中断,结束低功耗方式);装载中断向量至PC,转去执行中断服务子程。
30,注意:中断响应过程需要占用堆栈,31,POP SRPOP PC,中断返回在中断子程中执行 RETI 指令,即可实现中断返回,实现恢复中断现场,并从断点处继续运行被中断的程序(相当于执行POP SR 和 POP PC指令)32,ISR,33,关中断,,设置相关的中断控制位等,中断子程有关量的初始化,开中断,主程其它工作处理,开始,主程序,保护现场,清零中断标志,完成中断源请求的任务,恢复现场,RETI中断返回,开始,中断子程,中断程序结构,,,,,,,,,,34,中断编程举例本章仅举例 P1 , P2 和非屏蔽中断的编程;对外设中断的编程在后续的相应章节中讲解35,P1 和 P2 中断——外部输入可屏蔽中断P1和P2端口的任一引脚均具有中断功能,即具有16个外部输入可屏蔽中断源;P1端口的8个引脚中断源共享同一个中断向量(对于MSP430F149,该中断向量存放在0FFE8h~0FFE9h中),P1中断的配置通过编程P1IE,P1IFG和P1IES三个寄存器实现(set GIE);P2端口的8个引脚中断源共享同一个中断向量(对于MSP430F149,该中断向量存放在0FFE2h~0FFE3h中),P2中断的配置通过编程P2IE,P2IFG和P2IES三个寄存器和其它相关寄存器实现(set GIE) ;,36,P1 和 P2 中断的配置寄存器介绍,37,,,,,,,,,38,39,40,41,,P1SEL.x=1: 屏蔽中断P1SEL.x=0: 允许中断,P1功能选择寄存器对P1中断的影响,。
