MSP430中断系统_第1页
MSP430中断系统_第2页
MSP430中断系统_第3页
MSP430中断系统_第4页
MSP430中断系统_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第第6章章 MSP430 中断系统中断系统第一节第一节 中断的基本概念中断的基本概念第二节第二节 MSP430中断系统中断系统第三节第三节 中断程序设计中断程序设计本章教学目标:本章教学目标:1、了解中断基本概念、了解中断基本概念2、掌握中断控制机制和中断响应过程、掌握中断控制机制和中断响应过程3、掌握中断编程技术、掌握中断编程技术2第一节第一节 中断的基本概念中断的基本概念什么是中断什么是中断中断源(中断分类)中断源(中断分类)中断优先级及其裁决规则中断优先级及其裁决规则断点和中断现场断点和中断现场CPU对中断的响应条件(中断控制)对中断的响应条件(中断控制)CPU对中断的响应过程对中断的

2、响应过程中断的返回过程中断的返回过程3 CPU执行流程执行流程中断服中断服务程序务程序1 中断服中断服 务程序务程序 2非预料非预料事件事件1非预料非预料事件事件 2无中断时无中断时有中断时有中断时什么是中断什么是中断中断是暂停中断是暂停CPU正在运行的程序,正在运行的程序,转去执行相应的转去执行相应的中断服务程序中断服务程序,完,完毕后返回被中断的程序继续运行的毕后返回被中断的程序继续运行的现象和技术。现象和技术。4中断源(中断分类)中断源(中断分类)中断首先需要有中断首先需要有中断源中断源发出中断请求,并征得系统允许(发出中断请求,并征得系统允许(屏屏蔽、优先权蔽、优先权)后才会发生。转去

3、执行中断服务程序前需)后才会发生。转去执行中断服务程序前需保护保护中断现场中断现场,执行完中断服务程序后应,执行完中断服务程序后应恢复恢复中断现场。中断现场。软件中断(内中断)软件中断(内中断)硬件中断(外中断)硬件中断(外中断)非屏蔽中断非屏蔽中断可屏蔽中断可屏蔽中断中断分类中断分类5举例:奔腾中断系统中的中断源(分类)举例:奔腾中断系统中的中断源(分类) 1、内中断(软中断)、内中断(软中断) 被零除被零除或或OF=1时执行时执行INTO指令引起指令引起 使用使用DEBUG中的单步或断点设置操作引起中的单步或断点设置操作引起 执行执行INT n 指令引起指令引起2 2、外中断(硬中断)、外

4、中断(硬中断) 可屏蔽中断可屏蔽中断INTR 非屏蔽中断非屏蔽中断NMI6中断优先级及其裁决规则中断优先级及其裁决规则q事有事有轻重缓急轻重缓急,不同的中断请求表示不同的事件,因此,不同的中断请求表示不同的事件,因此CPU对不同中断请求的响应也应有轻重缓急之分。对不同中断请求的响应也应有轻重缓急之分。 q在计算机中,给每个中断源指定(固定的或可通过程序在计算机中,给每个中断源指定(固定的或可通过程序设置的)一个优先权,称为设置的)一个优先权,称为中断优先权(优先级)中断优先权(优先级)q当多个中断源同时发出中断请求时,当多个中断源同时发出中断请求时,CPU按照中断优先按照中断优先权的高低顺序依

5、次响应。在有些权的高低顺序依次响应。在有些CPU的中断系统中还规的中断系统中还规定高优先级的中断可以中断低优先级的中断子程;低优定高优先级的中断可以中断低优先级的中断子程;低优先级的中断不能中断高优先级的中断子程;任何中断不先级的中断不能中断高优先级的中断子程;任何中断不能中断同一优先级的中断子程。能中断同一优先级的中断子程。7举例:奔腾中断系统中的优先级举例:奔腾中断系统中的优先级 高高 低低 内中断内中断 ( 除零,除零,INT 指令,断点,指令,断点,INTO指令指令 ) 非屏蔽中断非屏蔽中断 可屏蔽中断可屏蔽中断 低低 内中断内中断( 单步单步 ) 奔腾中断优先级规则:奔腾中断优先级规

6、则: 当多个中断源同时发出中断请求时,当多个中断源同时发出中断请求时,CPU按照中断优先按照中断优先级的高低顺序依次响应;级的高低顺序依次响应; 高优先级的中断可以中断低优先级的中断子程;高优先级的中断可以中断低优先级的中断子程; 低优先级的中断不能中断高优先级的中断子程;低优先级的中断不能中断高优先级的中断子程; 任何中断不能中断同一优先级的中断子程。任何中断不能中断同一优先级的中断子程。8 MOV #0 , R5 ADD R4, R5 MOV R5, 0(R6) 断点断点: :是指是指CPU执行的现行程序被执行的现行程序被中断时的中断时的下一条指令下一条指令的的地址地址, ,又又称称断点地

7、址断点地址。中断现场中断现场: :是指是指CPU转去执行中断转去执行中断服务程序前的运行状态,包括服务程序前的运行状态,包括CPU内部某些寄存器(如内部某些寄存器(如SR)的值和断点地址等。的值和断点地址等。断点断点 0150h现行指令现行指令现行程序现行程序断点和中断现场断点和中断现场9CPU对中断的响应条件(中断控制)对中断的响应条件(中断控制)中断请求信号是否有效(高电平中断请求信号是否有效(高电平/低电平低电平/上升沿上升沿/下降沿)?下降沿)?CPU是否执行完当前指令?是否执行完当前指令?当前指令是否能被中断?当前指令是否能被中断?中断请求是否被屏蔽?中断请求是否被屏蔽?是否已经开中

8、断(是否置位中断总控位)?是否已经开中断(是否置位中断总控位)?请求的中断是否具有足够高的优先级?请求的中断是否具有足够高的优先级?10举例:奔腾可屏蔽中断的控制机制举例:奔腾可屏蔽中断的控制机制IF屏蔽控制屏蔽控制CPU优先权裁决优先权裁决可屏蔽可屏蔽中断请求中断请求CPU中断响应中断响应举例:奔腾非屏蔽中断的控制机制举例:奔腾非屏蔽中断的控制机制CPU优先权裁决优先权裁决非屏蔽非屏蔽中断请求中断请求CPU中断响应中断响应11CPU对中断的响应过程对中断的响应过程自动入栈保护断点和中断现场;自动入栈保护断点和中断现场;自动修改中断控制位和其它标志处理;自动修改中断控制位和其它标志处理;自动获

9、取中断子程入口地址(中断向量);自动获取中断子程入口地址(中断向量);自动转去运行中断子程。自动转去运行中断子程。12保存现场保存现场取中断子程取中断子程入口地址入口地址举例:奔腾举例:奔腾CPU响应中断的过程响应中断的过程当中断源发出当中断源发出中断申请中断申请后,不论是内中断、非屏蔽中断,后,不论是内中断、非屏蔽中断,还是可屏蔽中断,只要还是可屏蔽中断,只要满足响应条件满足响应条件,在执行完当前指令,在执行完当前指令后,后,CPU内部硬件会自动完成下列响应中断的过程:内部硬件会自动完成下列响应中断的过程: 取中断类型号取中断类型号N 当前当前PSW的内容入栈的内容入栈 清清IF、TF标志为

10、标志为0 当前当前CS的内容入栈的内容入栈 当前当前IP的内容入栈的内容入栈 取内存单元取内存单元( 0 : N 4 )字内容送字内容送IP取内存单元取内存单元( 0 : N 4 + 2 )字内容送字内容送CS 此时此时CS:IP指向中断程序的入口,开始执行中断程序。指向中断程序的入口,开始执行中断程序。13奔腾中断系统中的中断类型号、奔腾中断系统中的中断类型号、中断向量与中断向量表中断向量与中断向量表主主程程序序中中断断子子程程间接调用间接调用中断向量中断向量NINT N中断向量表中断向量表N0:N40:N4+2IRET据据N查表得查表得中断向量中断向量中断向量中断向量OFFSETSEG中断

11、向量中断向量255中断向量中断向量254中断向量中断向量1中断向量中断向量001255254中断类型号中断类型号中断子程的中断子程的入口地址入口地址14奔腾奔腾CPU获取获取中断类型号的方法总结中断类型号的方法总结INTOINTO指令指令 被零除被零除 固定类型号固定类型号00H OF=1 固定类型号固定类型号04H DEBUGDEBUG的单步和断点操作的单步和断点操作 单步单步 固定类型号固定类型号01H 断点断点 固定类型号固定类型号03H 内内中中断断INT NINT N指令指令 指令中指定类型号指令中指定类型号N 非屏蔽中断非屏蔽中断 固定类型号固定类型号02H 外外中中断断 可屏蔽中

12、断可屏蔽中断CPUCPU按中断响应周期时序按中断响应周期时序从数据总线上从数据总线上获取中断类型号获取中断类型号 15 CPUCPU通过引脚通过引脚INTA INTA 发中断响应信号,通发中断响应信号,通知接口芯片开始准备知接口芯片开始准备中断类型号;中断类型号; 对于对于可屏蔽中断可屏蔽中断,当,当INTR引脚变为高电平,并引脚变为高电平,并IF=1且有足够的优先权,且有足够的优先权,则在执行完当前指令后,则在执行完当前指令后,CPU将发出下列将发出下列中断响应周期时序:中断响应周期时序:中断类型号中断类型号 INTACLKAD7AD0T1T2T3T4第一个中断响应周期第一个中断响应周期T1

13、T2T3T4第二个中断响应周期第二个中断响应周期CPU再发再发INTA通知接口芯片将通知接口芯片将中断类型号送至中断类型号送至数据总线数据总线上上CPU从数据总线读从数据总线读取中断类型号,并取中断类型号,并完成前述的响应中完成前述的响应中断的过程断的过程16中断返回中断返回中断返回通常通过执行中断返回通常通过执行中断返回中断返回指令实现指令实现。中断返回指令自动完成中断返回指令自动完成恢复现场的工作(出栈恢复现场的工作(出栈操作)操作),然后继续执行被其中断的程序。,然后继续执行被其中断的程序。17第二节第二节 MSP430的中断系统的中断系统18MSP430 中断控制与 中断返回指令EIN

14、T;Enable general INTerruptsDINT;Disable general INTerruptsRETI19EINT仿真operarion 1 - GIE开中断指令开中断指令 enable general interruptBIS #8 , SR对对 SR 的影响:的影响:Status Bits: are not affectedMode Bits: GIE=1OSCOFF and CPUOFF are not affectedOSCOFFCPUOFFNGIESCG0SCG1VZCreserved15 9 8 7 6 5 4 3 2 1 0 Note:The instruc

15、tion following the EINT is always executed, even if an interrupt service request is pending when the interrupts are enable.20DINT仿真operarion 0 - GIE关中断指令关中断指令 disable general interruptBIC #8 , SR对对 SR 的影响:的影响:Status Bits: are not affectedMode Bits: GIE=0OSCOFF and CPUOFF are not affectedOSCOFFCPUOFF

16、NGIESCG0SCG1VZCreserved15 9 8 7 6 5 4 3 2 1 0 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 SRSP+2 SPSP

17、PCSP+2 SPPOP SRPOP PC对对 SR 的影响:的影响:Status Bits: N,Z,C,V: restored from system stackMode Bits: GIE,OSCOFF and CPUOFF are restored fromsystem stack22MSP430的三大中断源的三大中断源 系统复位(系统复位(system reset) 非屏蔽中断(非屏蔽中断((Non)-maskable NMI) 可屏蔽中断(可屏蔽中断(maskable)非屏蔽中断非屏蔽中断不可屏蔽中断不可屏蔽中断23举例:举例:MSP430F149 的中断源、中断向量和优先级的中断

18、源、中断向量和优先级24MSP430F149 的系统复位和非屏蔽中断源的系统复位和非屏蔽中断源25MSP430F149 的可屏蔽中断源的可屏蔽中断源26中断向量表:中断向量表: 0FFE0h0FFFEh表中可存放表中可存放16个中断向量个中断向量每个中断向量为每个中断向量为16BIT由编程者负责编程由编程者负责编程中断向量中断向量:中断服务子程的入口地址中断服务子程的入口地址注:注:MSP430的某些外设还有的某些外设还有其其“子向量表子向量表”,用以区分共,用以区分共享同一个中断向量的不同中断享同一个中断向量的不同中断请求请求27中断优先级中断优先级 interrupt priority在在

19、MSP430中,不同的中断有各自固定的中断优先中,不同的中断有各自固定的中断优先级。当有多个中断同时请求时,级。当有多个中断同时请求时,MSP430 CPU将响将响应优先级最高的中断请求。应优先级最高的中断请求。注意:注意:在在MSP430中,中断优先级仅用于裁决中,中断优先级仅用于裁决同时产生的同时产生的中断请求。如果在某一中断服务子程中置位中断请求。如果在某一中断服务子程中置位GIE(即允许嵌(即允许嵌套),则任何中断请求均将中断正在执行的中断服务子程套),则任何中断请求均将中断正在执行的中断服务子程(中断嵌套),而不管中断的优先级如何。即在允许嵌套(中断嵌套),而不管中断的优先级如何。即

20、在允许嵌套的情况下,低优先级的中断请求可以中断高优先级的中断的情况下,低优先级的中断请求可以中断高优先级的中断服务子程的运行,同级的中断也可以相互嵌套。服务子程的运行,同级的中断也可以相互嵌套。28非屏蔽中断的控制机制非屏蔽中断的控制机制individual enable bitCPU优先权裁决优先权裁决中断请求中断请求CPU中断响应中断响应(non)_maskable interruptCPU优先权裁决优先权裁决GIECPU中断响应中断响应可屏蔽中断的控制机制(分控位、总控位)可屏蔽中断的控制机制(分控位、总控位)individual enable bit中断请求中断请求maskable i

21、nterrupt1-enable0-disable1-enable0-disable1-enable0-disable29中断响应过程中断响应过程当前指令执行完毕当前指令执行完毕,且满足响应条件(,且满足响应条件(?););入栈保护断点入栈保护断点:相当于执行:相当于执行 PUSH PC;入栈保护入栈保护SR:相当于执行:相当于执行 PUSH SR;优先级裁决:优先级裁决:若有多个中断同时请求,则若有多个中断同时请求,则CPU选择优先选择优先级最高的中断请求进行响应;级最高的中断请求进行响应;中断请求标志的处理:中断请求标志的处理:对于单一中断标志的中断源请求,对于单一中断标志的中断源请求,则

22、由则由CPU自动清零该中断标志;对于有多个中断标志的自动清零该中断标志;对于有多个中断标志的中断源请求,则中断标志的清零处理交由中断服务子程中断源请求,则中断标志的清零处理交由中断服务子程完成(以便于中断服务子程区分本次中断到底是由哪一完成(以便于中断服务子程区分本次中断到底是由哪一个个/哪些中断标志请求的);哪些中断标志请求的);清零清零SR(关中断,结束低功耗方式);(关中断,结束低功耗方式);装载中断向量至装载中断向量至PC,转去执行中断服务子程。,转去执行中断服务子程。30注意:中断响应过程需要占用堆栈注意:中断响应过程需要占用堆栈31POP SRPOP PC中断返回中断返回在中断子程

23、中执行在中断子程中执行 RETI 指令指令,即可实现中断返回,即可实现中断返回,实现恢复中断现场,并从断点处继续运行被中断的程实现恢复中断现场,并从断点处继续运行被中断的程序(相当于执行序(相当于执行POP SR 和和 POP PC指令)。指令)。 32ISR33关中断关中断设置相关的中断控制位等设置相关的中断控制位等中断子程中断子程有关量的初始化有关量的初始化开中断开中断主程其它工作处理主程其它工作处理开始开始主程序主程序保护现场保护现场清零中断标志清零中断标志完成中断源完成中断源请求的任务请求的任务恢复现场恢复现场RETI中断返回中断返回开始开始中断子程中断子程中断程序结构中断程序结构34

24、中断编程举例中断编程举例本章仅举例本章仅举例 P1 , P2 和非屏蔽中断的编程;和非屏蔽中断的编程;对外设中断的编程在后续的相应章节中讲解。对外设中断的编程在后续的相应章节中讲解。35P1 和和 P2 中断中断外部输入可屏蔽中断外部输入可屏蔽中断P1和和P2端口的任一引脚均具有中断功能,即具有端口的任一引脚均具有中断功能,即具有16个外部个外部输入可屏蔽中断源;输入可屏蔽中断源;P1端口的端口的8个引脚中断源共享同一个中断向量(对于个引脚中断源共享同一个中断向量(对于MSP430F149,该中断向量存放在,该中断向量存放在0FFE8h0FFE9h中),中),P1中断的配置通过编程中断的配置通

25、过编程P1IE,P1IFG和和P1IES三个寄存器三个寄存器实现(实现(set GIE););P2端口的端口的8个引脚中断源共享同一个中断向量(对于个引脚中断源共享同一个中断向量(对于MSP430F149,该中断向量存放在,该中断向量存放在0FFE2h0FFE3h中),中),P2中断的配置通过编程中断的配置通过编程P2IE,P2IFG和和P2IES三个寄存器三个寄存器和其它相关寄存器实现(和其它相关寄存器实现(set GIE) ;36P1 和和 P2 中断的配置寄存器介绍中断的配置寄存器介绍3738P1IES.x=0: 上升沿上升沿P1IES.x=1: 下降沿下降沿P1中断中断沿选择沿选择寄存

26、器寄存器39P1中断标志寄存器中断标志寄存器P1IFG.x=0: No interrupt pendingP1IFG.x=1: An interrupt pending需由软件清零需由软件清零P1IFG.x40P1IE.x=0: 屏蔽中断屏蔽中断P1IE.x=1: 允许中断允许中断P1中断屏蔽寄存器中断屏蔽寄存器41P1SEL.x=1: 屏蔽中断屏蔽中断P1SEL.x=0: 允许中断允许中断P1功能选择寄存器对功能选择寄存器对P1中断的影响中断的影响低电平有效低电平有效42P1中断编程中断编程43P1中断编程要点中断编程要点P1SEL.x=0;digital I/OP1IE.x=1;允许中断;

27、允许中断GIE=1 ;可屏蔽中断;可屏蔽中断P1DIR.x=0;输入;输入P1IES.x=?;沿选择;沿选择44;*; Port Interrupt on P1.4; A hi to low transition on P1.4 will trigger P1_ISR which toggles P1.0 ;*#include msp430 x149.h;- ORG 0F800h ; Program Reset;-RESET mov #0280h,SP ; Initialize stackpointermov #WDTPW+WDTHOLD,&WDTCTL ; Stop WDTmov.b#00h

28、 , &P1SEL; digital I/Obis.b #001h,&P1DIR ; P1.0 output, P1.4 input bis.b #010h,&P1IE ; P1.4 Interrupt enabled bis.b #010h,&P1IES ; P1.4 hi to low edge bic.b #010h,&P1IFG ; P1.4 IFG Cleared;需由软件清零需由软件清零P1IFG.xbis #GIE,SR ; enable interruptsP1中断编程举例中断编程举例45loop nop ; Required only for debuggerjmploop

29、;-P1_ISR; Toggle P1.0 Outputxor.b #001h,&P1OUT ; P1.0 = toggle bic.b #010h,&P1IFG ; P1.4 IFG Cleared;需由软件清零需由软件清零P1IFG.x reti ; Return from ISR;-; Interrupt Vectors;- ORG 0FFFEh ; MSP430 RESET Vector DW RESET ; ORG 0FFE8h ; P1.x Vector DW P1_ISR ; END46思考:如果允许多个思考:如果允许多个 P1 引脚中断,则程序中引脚中断,则程序中应如何区分中断

30、是由哪一个引脚请求的?应如何区分中断是由哪一个引脚请求的?47如果在中断服务子程中置位如果在中断服务子程中置位GIE,则允许中断嵌套。,则允许中断嵌套。在允许中断嵌套的情况下,任何中断请求均将中断正在执在允许中断嵌套的情况下,任何中断请求均将中断正在执行的中断服务子程,而不管中断的优先级如何。行的中断服务子程,而不管中断的优先级如何。(中断优先级仅用于裁决同时产生的中断请求)(中断优先级仅用于裁决同时产生的中断请求)中断嵌套的条件中断嵌套的条件 中断嵌套中断嵌套 interrupt nesting48CPU正在执行某一中断子程,又被其它中断源中断,正在执行某一中断子程,又被其它中断源中断,使使

31、CPU转去执行另一中断子程,这个过程叫中断嵌套转去执行另一中断子程,这个过程叫中断嵌套 嵌套的概念嵌套的概念中断子程序中断子程序1中断申请中断申请CPU执行流程执行流程中断子程序中断子程序2set GIE49P1.0中断请求信号中断请求信号MSP430F149中断嵌套中的问题中断嵌套中的问题t50P1.0中断子程中断子程set GIEP1.0中断子程中断子程set GIEP1.0中断子程中断子程set GIEP1.0中断子程中断子程思考:思考:若若P1.0中断子程运行时间中断子程运行时间t,则上图所示的,则上图所示的中断嵌套结构将导致怎样的结果?中断嵌套结构将导致怎样的结果? 51P1.0 P

32、1.11/3600Hz方波方波实现实现1小时定时小时定时车辆信号车辆信号每一个正脉冲代每一个正脉冲代表检测到一辆车表检测到一辆车下图是某车流量自动检测系统的原理图局部及相应的核心下图是某车流量自动检测系统的原理图局部及相应的核心程序段,实现对观测点的程序段,实现对观测点的“车辆数车辆数/小时小时”的实时检测与打的实时检测与打印功能,其定时与车辆计数均采用中断实现。印功能,其定时与车辆计数均采用中断实现。MSP430F149中断应用中的互斥操作问题中断应用中的互斥操作问题52车辆计数中断子程车辆计数中断子程定时打印并清零中断子程定时打印并清零中断子程;开中断开中断INCCOUNTRETI;开中断

33、开中断CALL PRINT_COUNTMOV #00h,COUNTRETI思考:思考:上述程序有无问题?上述程序有无问题?若有,则将导致怎样的错误结果?若有,则将导致怎样的错误结果? 53车辆计数中断子程车辆计数中断子程定时打印并清零中断子程定时打印并清零中断子程;开中断开中断MOV COUNT,R4INCR4MOV R4,COUNTRETI;开中断开中断CALL PRINT_COUNTMOV #00h,COUNTRETI思考:思考:上述程序有无问题?上述程序有无问题?若有,则将导致怎样的错误结果?若有,则将导致怎样的错误结果? 54P2中断编程中断编程(自学)(自学)55CAPD : Comparator_A Port Disable(05Bh)x=0,1,2,6,75657P2 (P2.5除外除外)中断编程要点中断编程要点CAPD.x=0P2SEL.x=0P2IE.x=1GIE=1P2DIR.x=058

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论