您好、欢迎来到现金彩票网!
当前位置:2019跑狗图高清彩图 > 向量屏蔽 >

9s12单片机-第六章 中断系统

发布时间:2019-08-16 23:09 来源:未知 编辑:admin

  第 第6章 章S12 中断系统• 6.1 生活中的中断• 6.2 异常6 与 • 6.3 中断优先级 与中断嵌套• 6.4 可屏蔽中断(I) )• 6.5 中断向量表• 6.6 中断程序设计实例 6.1 生活中的中断A读书-书签A-main()B-Interrupt 1()B接电话C开门C -Interrupt 2() 定义• 中断定义:是指CPU在正常执行程序过程中,由于内部/外部事件,CPU暂时中断当前程序的运行,。 转而执行由内部/外部事件引起的中断服务子程序在中断服务子程序执行完毕后,CPU再重新回来执行当前的程序; 定义• 单片机为什么引入中断系统机制• 首先想想生活中中断的处理机制及方法• 与查询的概念相对应;中断是用以提...

  第 第6章 章S12 中断系统 6.1 生活中的中断 6.2 异常6 与 6.3 中断优先级 与中断嵌套 6.4 可屏蔽中断(I) ) 6.5 中断向量表 6.6 中断程序设计实例 6.1 生活中的中断A读书-书签A-main()B-Interrupt 1()B接电话C开门C -Interrupt 2() 定义 中断定义:是指CPU在正常执行程序过程中,由于内部/外部事件,CPU暂时中断当前程序的运行,。 转而执行由内部/外部事件引起的中断服务子程序在中断服务子程序执行完毕后,CPU再重新回来执行当前的程序; 定义 单片机为什么引入中断系统机制 首先想想生活中中断的处理机制及方法 与查询的概念相对应;中断是用以提高计算机工作效率的一种重要机制和技术; 中断系统的功能 能实现:中断响应:CPU能够知道中断处理:能够找到相应子程序中断返回:保证机制中断屏蔽:可以响应,也可以不响应 能实现中断优先级排队:谁先谁后 能实现中断嵌套:中断中的中断 6.2 异常异常复位 中断 其他S12系列单片机的中断属于异常情况处理的一部分。1.上电复位2.外部复位3.看门狗复位4.时钟监视复位X位可屏蔽 I位可屏蔽1.软件中断2.指令陷阱XIRQ中断 1.IRQ2.实时中断3.输入捕捉4.AD5.SCI 四种事件可以触发系统复位:(1)上电复位S12的VDD引脚上的一个正向变化将触发上电复四种事件可以触发系统复位:(1)上电复位S12的VDD引脚上的一个正向变化将触发上电复位 这意味着当给 S12 上电时 它以一个已知的6.2.1 、复位位 , 这意味着当给 S12 上电时 , 它以一个已知的、确定的设置启动。(2)外部复位S12配备一个标记为RESET的低电平有效复位引脚,当该引脚电压为低电平时,触发复位。、确定的设置启动。(2)外部复位S12配备一个标记为RESET的低电平有效复位引脚,当该引脚电压为低电平时,触发复位。 ( (3 )看门狗复位(COP,Computer Operating Properly) )1、当应用程序没有按照预期执行时,COP 看门狗会强制系统复位。是一项重要的安全保障功能之一。一一 2、COP系统包含 个用户设置的倒计数定时器, 旦定时器过期,则触发一个系统复位。3、为了防止复位发生,通过软件指令不间断的每隔一段时间就将该定时器计数值赋值为初始值。如果正常运行的线、可以开启看门狗功能,也可不用,一般不用。 (4)时钟监控复位当系统时钟频率低于某个预设置值或停止工作时,将触发时钟监控复位。当上述事件触发复位时,S12单片机在程序计数(4)时钟监控复位当系统时钟频率低于某个预设置值或停止工作时,将触发时钟监控复位。当上述事件触发复位时,S12单片机在程序计数器中放置一个 复位向量 ,处理器执行 启动例程 。 6.2.2 、其他异常(1) 软件中断软件中断实质上是一条指令,但其执行过程与中断相同。我们可以称之为没有中断源的中断,或是人为指令触发的中断。(2) 非法指令陷阱CPU正常工作时,每次获得的都是由汇编或编译程序生成的有效操作码,CPU能够正确解释并执行它们,但当受到干扰或系统出现混乱时,可能得到无法识别的操作码,即非法指令,这时将产生中断。 6.2.3 、中断 上述异常发生时,CPU 必需响应。但中断却例外,有效利用的一种异常,有很多中断事件。。但中断却例外,有效利用的一种异常,有很多中断事件。 中断可以屏蔽,CCR 的X 、I位是相应中断的屏蔽位。位是相应中断的屏蔽位。 只有在X 、I 为0 时相应的中断才可以被响应。 6.2.3 、中断1 、X 位可屏蔽中断 当X 标志位为0 且XIRQ 引脚被拉成低电平,MCU将响应该中断。只 X X 1 软件指令 只能将X 标志位清零 , 不能将X 标志位置1。 。 不能人为屏蔽,只能开启中断。 所以将 XIRQ 中断称为 不可屏蔽中断 。 6.2.3 、中断2 、I 位可屏蔽中断 当I 标志位为0 ,中断发生时,MCU执行完当前指令后,将响应该中断。执行完当前指令后,将响应该中断。将 I 1 将I 标志位置1, , 关闭所有中断 。 通常情况下:中断程序内,开始将I 置1,服务代码执行完毕后通过,服务代码执行完毕后通过RTI 指令将该标志位清零。 6.2.4 、异常处理(1)每一个异常都有一个异常向量(中断向量),该向量其实就是连续的两个内存单元,这两个内存单元的存储值就是异常服务程序代码的起始地址以中断程序的执行过程辅助说明元的存储值就是异常服务程序代码的起始地址。(2)所有的中断向量存放在内存空间的$FFFF$FF00处,称为中断向量表。S12的CPU理论上一共可以处理128条异常。 6.2.4 、异常处理(3)、当异常发生时,CPU选择相应异常的中断向量,获取该向量中的地址信息,转而执行该地址所指向的代码。(4)、还有一件很重要的事,就是中断服务代码执行前和执行后都该如何处理。 (5)、异常处理流程CPU需要返回到正常的代码流程,可是刚才执行到哪了呢?书签的寓意就是保存上下文,即执行中断代码前需6.2.4 、异常处理要将当前的CPU寄存器:A、B、X、Y、CCR以及当前程序代码的位置PC(地址)进行入栈(Push)保存。中断代码执行完毕后,通过RTI指令(Return from interrupt),将PC等信息弹出(Pull)。这样CPU重新获得了正常执行代码的地址,进而继续之前的正常流程。 中断处理过程:① 中断响应②获取中断向量③找到子程序入口④相关寄存器入栈⑤执行中断程序⑥相关寄存器出栈。⑦返回正常程序:① 中断响应②获取中断向量③找到子程序入口④相关寄存器入栈⑤执行中断程序⑥相关寄存器出栈。⑦返回正常程序 6.3 中断优先级与中断嵌套中断优先级:当多个中断等待执行时,中断优先级决定哪一个中断首先被执行。中断打断中断中断优先级顺序:① RESET引脚和上电复位② 时钟监视复位③ COP复位④ 指令陷阱和软件中断⑤ X位中断⑥ I 位可屏蔽中断 6.3 中断优先级与中断嵌套表6.1 默认嵌套机制异常类型 可以被谁打断 屏蔽标志1上电与外部复位 None None 2时钟监视复位 1 None3 COP复位 1、2 None4指令陷阱 1、2、3 X标志位5软件中断 1、2、3 None6XIRQ中断 1、2、3 None7 I位可屏蔽中断 1、2、3、4、7 I标志位 6.4 可屏蔽中断(I 位)当多个I位可屏蔽中断同时请求处理时,中断优先级较高者将被首先执行。中断源1中断源2中断源3I=1I=0中断池如图所示为一个开源节流的中断池。响应中断的条件是中断池中有中断源以及I=0。此时中断优先级较高的中断将会被处理,同时将I=1,关闭出口。 6.4 嵌套的处理中断嵌套:中断嵌套是指中断本身被另一个中断所打断,就像中断打断正常程序流程一样。中断优先级和中断嵌套这两者之间没有必然联系,切不可以为优先级高的中断可以打断优先级低的中断。 6.4 可屏蔽中断(I 位)1、即中断n正在处理,而中断池中出现了中断源n。2、任何一个中断源在其所属的硬件模块都有一个 当地的中断使能位和中断标志位。3、该中断标志位的作用 同全局中断标志位I,但是只对这一个中断有效(局部中断 的使能问题)---- 了解即可断有效。4、中断使能后,中断事件引发中断响应。此时中断标志位置1,我们必须在中断响应程序中将该标志位清零,否则该中断时间的再次发生将不会导致中断申请。5、如果我们在该中断服务程序的入口处立即将该中断标志清零,那么该中断有可能再次发生并申请中断处理6、如果在中断结尾处将该标志清零,那么即使该中断时间再次发生也无法申请处理,也就无法在上一个中断处理结束时出现在中断池中。 6.4 可屏蔽中断(I 位)图6.5 默认的处理逻辑没有对I位进行操作,I = 1中断优先级C最高,其次是B和A,时间节点:a:B中断发生,打断主程序响应B中断。b:中断C请求,不响应。c:中断A请求,不响应。d:中断B结束,响应中断C。e:中断C结束,响应中断A。f:中断A结束,主程序继续执行。 6.4 可屏蔽中断(I 位)图6.6 清除中断标志位处理逻辑对I位进行了操作,I = 0时间节点:a:B中断发生,打断主程序响应B中断。b:中断C请求,响应中断C,B中断挂起。c:中断C结束,回到中断B。d:中断A请求,响应中断A,B中断再次挂起。e:中断A结束,再次回到中断B。f:中断B结束,主程序继续执行。 6.4 可屏蔽中断(I 位)PSEL7 PSEL6 PSEL5 PSEL4 PSEL3 PSEL2 PSEL10 RW中断系统在正常模式下只有一个相关的寄存器可以设置。最高优先级设定寄存器(Highest Priority I Interrupt)Reset1 1 1 1 0 0 1 0通过设置该寄存器,可以将某个可屏蔽中断的优先级推进为可屏蔽中断中的最高优先级中断。复位后该寄存器默认值为0xF2,意为I位可屏蔽中断IRQ的优先级最高。欲将某一个中断的优先级提到最高,将该中断在中断向量表的的最后一列所对应的数值写入该寄存器即可。写之前必须将CCR寄存器的I标志位置1,即关闭总中断才可以写入。 需要注意的是,通过HPRIO设定的优先级并不表示当出现中断嵌套时,高优先级中断可以中止低优先级中断的服务程序执行,而转向高优先级中断的服务程序运行。这里高优先级作用只有当多个中断源同时请求中断时才能体现,这时设定的优先级并不表示当出现中断嵌套时,高优先级中断可以中止低优先级中断的服务程序执行,而转向高优先级中断的服务程序运行。这里高优先级作用只有当多个中断源同时请求中断时才能体现,这时S12 单片机将首先响应高优先级的中断 低优先级的中断不6.4 可屏蔽中断(I 位)S12 单片机将首先响应高优先级的中断 , 低优先级的中断不会得到响应。 S12采用一套特殊的机制实现对异常(中断)的处理,在采用一套特殊的机制实现对异常(中断)的处理,在0xFF80 ~0xFFFF地址空间设置了一个向量表,每个向量表对应一种异常的地址空间设置了一个向量表,每个向量表对应一种异常的处理程序的地址 向量表中每个向量为16位 位6.5 中断向量表处理程序的地址 。 向量表中每个向量为16位 位,占用,占用2 个字节空间,所有S12 最大可有64个中断向量。个中断向量。 S12处理器在进行中断响应时,依据中断信号的来源在中断向量表中对应位置取得中断向处理器在进行中断响应时,依据中断信号的来源在中断向量表中对应位置取得中断向量的16 位中断服务程序入口地址 进而以此6.5 中断向量表量的16 位中断服务程序入口地址 , 进而以此地址转到相应的中断服务程序。 S12 中断向量表的首地址固定在0xFF80不变,其内容由用户在程序设计阶段给定,一般不不变,其内容由用户在程序设计阶段给定,一般不能在运行时更改 表 表6 1 列出了S12 中断向量6.5 中断向量表能在运行时更改 。表 表6.1 列出了S12 中断向量表的分配情况。 6.5 中断向量表向量地址 中断源 CCR 局部使能位 HPRIO$FFFE ,$FFFF 复位 None None $FFFC ,$FFFD 时钟监控复位 None COPCTL (CME, FCME) $FFFA ,$FFFB COP 复位 None COP rate select $FFF8 ,$FFF9 非法指令陷阱 None None $FFF6 ,$FFF7 软件中断指令 None None $FFF4 ,$FFF5 XIRQX None / BFRIER (XSYNIE) XIRQ$FFF2 ,$FFF3 IRQI INTCR (IRQEN) $F2$FFF0 ,$FFF1 实时中断 I CRGINT (RTIE) $F0$FFEE ,$FFEF 捕捉定时通道0 I TIE (C0I) $EE$FFEC ,$FFED 捕捉定时通道1 I TIE (C1I) $EC$FFEA ,$FFEB 捕捉定时通道2 I TIE (C2I) $EA$FFE8 ,$FFE9 捕捉定时通道3 I TIE (C3I) $E8$FFE6 ,$FFE7 捕捉定时通道4 I TIE (C4I) $E6$FFE4 ,$FFE5 捕捉定时通道5 I TIE (C5I) $E4$FFE2 ,$FFE3 捕捉定时通道6 I TIE (C6I) $E2 6.5 中断向量表向量地址 中断源 CCR 局部使能位 HPRIO$FFE0 ,$FFE1 捕捉定时通道7 I TIE (C7I) $E0$FFDE ,$FFDF 捕捉定时溢出 I TSCR2 (TOF) $DE$FFDC ,$FFDD 脉冲累加器A 溢出 I PACTL (PAOVI) $DC$FFDA ,$FFDB 脉冲累加器边沿输入 I PACTL (PAI) $DA$FFD8 ,$FFD9 SPI0 I SPICR1 (SPIE, SPTIE) $D8$FFD6 ,$FFD7 SCI0 I SCICR2(TIE TCIE RIE ILIE)$D6(TIE, TCIE, RIE, ILIE)$FFD4 ,$FFD5 SCI1 I SCICR2(TIE, TCIE, RIE, ILIE)$D4$FFD2 ,$FFD3 ATD0 I ATDCTL2 (ASCIE) $D2$FFD0 ,$FFD1 ATD1 I ATDCTL2 (ASCIE) $D0$FFCE ,$FFCF PORT J I PIEJ(PIEJ7,PIEJ6,PIEJ1,PIEJ0)$CE$FFCC ,$FFCD PORT H I PIEH (PIEH7-0) $CC$FFCA ,$FFCB 模数递减计数器向下溢出 I MCCTL (MCZI) $CA$FFC8 ,$FFC9 脉冲累加器B 溢出 I PBCTL (PBOVI) $C8$FFC6 ,$FFC7 CRG PLL 锁相环 I PLLCR (LOCKIE) $C6$FFC4 ,$FFC5 CRG 自时钟模式 I PLLCR (SCMIE) $C4 6.5 中断向量表向量地址 中断源 CCR 局部使能位 HPRIO$FFC2 ,$FFC3 BDLC I DLCBCR1 (IE) $C2$FFC0 ,$FFC1 IIC 总线 I IBCR (IBIE) $C0$FFBE ,$FFBF SPI1 I SPICR1 (SPIE SPTIE) $BE$FFBC ,$FFBD Reserved$FFBA ,$FFBB EEPROM I ECNFG (CCIE CBEIE) $BA$FFB8 ,$FFB9 FALSH I FCNFG (CCIE, CBEIE) $B8$FFB6 ,$FFB7 CAN0 唤醒 I CANRIER (WUPIE) $B6$FFB4 ,$FFB5 CAN0 错误 I CANRIER (CSCIE, OVRIE) $B4$FFB2 ,$FFB3 CAN0 接收 I CANRIER (RXFIE) $B2$FFB0 ,$FFB1 CAN0 发送 I CANTIER (TXEIE[2:0]) $B0$FFAE ,$FFAF CAN1 唤醒 I CANRIER (WUPIE) $AE$FFAC ,$FFAD CAN1 错误 I CANRIER (CSCIE, OVRIE) $AC$FFAA ,$FFAB CAN1 接收 I CANRIER (RXFIE) $AA$FFA8 ,$FFA9 CAN1 发送 I CANTIER (TXEIE[2:0]) $A8$FFA6 ,$FFA7 BF 接收FIFO 非空 I BFRIER (RCVFIE) $A6 6.5 中断向量表向量地址 中断源 CCR 局部使能位 HPRIO$FFA4 ,$FFA5 BF 接收 I BFBUFCTL[15:0] (IENA) $A4$FFA2 ,$FFA3 BF 同步 I BFRIER (SYNAIE, SYNNIE) $A2$FFA0 ,$FFA1 BF 常规 I BFBUFCTL[15:0] (IENA),BFGIER (OVRNIE,ERRIE,SYNEIE, SYNLIE, ILLPIE,LOCKIE, WAKEIE)$A0, )BFRIER (SLMMIE)$FF98$FF9F Reserved$FF96 ,$FF97 CAN4 唤醒 I CANRIER (WUPIE) $96$FF94 ,$FF95 CAN4 错误 I CANRIER (CSCIE, OVRIE) $94$FF92 ,$FF93 CAN4 接收 I CANRIER (RXFIE) $92$FF90 ,$FF91 CAN4 发送 I CANTIER (TXEIE[2:0]) $90$FF8E ,$FF8F PORTP 中断 I PIEP (PIEP70) $8E$FF8C ,$FF8D PWM 紧急事件关闭 I PWMSDN (PWMIE) $8C$FF80$FF8B Reserved 6.6 中断的实际应用应用步骤:1 、确定要使用的中断源2 、要打开相应的中断控制器3 、其它初始化3 、打开总中断4、 、 编制中断程序 :void IRQInit(void) {INTCR = 0xC0; // 1100 0000B EnableInterrupts;}void main(void) {1、中断初始化2、中断初始化 编制中断程序( (1)注意格式要求()注意格式要求(2)是哪个中断源的程序,要用其代码标注)是哪个中断源的程序,要用其代码标注#pragma CODE_SEG NON_BANKEDinterrupt 6 void IRQ_ISR(void) {IRQFunction(); //调用实际IRQ处理程序}IRQInit();。。。。。。。。。。。。。}化4、中断子程序3、编写中断程序void IRQFunction(void){counter++;}#pragma CODE_SEG DEFAULT

http://bluecaleel.com/xiangliangpingbi/352.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有