当前位置:
文档之家› 9s12单片机-第六章 中断系统
9s12单片机-第六章 中断系统
对I位进行 了操作,I = 0
6.4可屏蔽中断(I位)
图6.6 清除中断标志位处理逻辑
a 中断C 中断B 中断A b 运行 运行 等待 等待 运行 运行 cd e f
高优先级
低优先级 主程序 运行 等待 等待 等待 等待 时间节点: a:B中断发生,打断主程序响应B中断。 b:中断C请求,响应中断C,B中断挂起。 c:中断C结束,回到中断B。 d:中断A请求,响应中断A,B中断再次挂起。 e:中断A结束,再次回到中断B。 f:中断B结束,主程序继续执行。
6.4 嵌套的处理
中断嵌套: 中断嵌套是指中断本身被另一个中断所打断,就像中 断打断正常程序流程一样。 中断优先级和中断嵌套这两者之间没有必然联系,切 不可以为优先级高的中断可以打断优先级低的中断。
6.4可屏蔽中断(I位)
(局部中断的使能问题)----了解即可
1、即中断n正在处理,而中断池中出现了中断源n。 2、任何一个中断源在其所属的硬件模块都有一个当地的中断使能 位和中断标志位。 3、该中断标志位的作用同全局中断标志位I,但是只对这一个中 断有效。 4、中断使能后,中断事件引发中断响应。此时中断标志位置1, 我们必须在中断响应程序中将该标志位清零,否则该中断时间 的再次发生将不会导致中断申请。 5、如果我们在该中断服务程序的入口处立即将该中断标志清零, 那么该中断有可能再次发生并申请中断处理 6、如果在中断结尾处将该标志清零,那么即使该中断时间再次发 生也无法申请处理,也就无法在上一个中断处理结束时出现在 中断池中。
没有对I位 进行操作, I=1
高优先级
6.4可屏蔽中断(I位)
图6.5 默认的处理逻辑
a 中断C 中断B 中断A b c 等待 运行 等待 等待 运行 d 运行 e f
低优先级 主程序 运行
等待
等待 等待
运行
中断优先级C最高,其次是B和A,时间节点: a:B中断发生,打断主程序响应B中断。 b:中断C请求,不响应。 c:中断A请求,不响应。 d:中断B结束,响应中断C。 e:中断C结束,响应中断A。 f:中断A结束,主程序继续执行。
(4)时钟监控复位 当系统时钟频率低于某个预设置值或停止工作 时,将触发时钟监控复位。 当上述事件触发复位时,S12单片机在程序计数 器中放置一个复位向量,处理器执行启动例程。
6.2.2、其他异常
(1) 软件中断 软件中断实质上是一条指令,但其执行过程与中断相同。 我们可以称之为没有中断源的中断,或是人为指令触发的中 断。
None None
X标志位 None
5软件中断 6XIRQ中断 7 I位可屏蔽中断
1、2、3 None 1、2、3 1、2、3、4、7 I标志位
6.4可屏蔽中断(I位)
当多个 I 位可屏蔽中断同时请求处理时,中断优先级较 高者将被首先执行。
中断源1 中断源2 中断源3
……
I=0 I=1
中断池
如图所示为一个开源节流的中断池。响应中断的条件 是中断池中有中断源以及I=0。此时中断优先级较高的 中断将会被处理,同时将I=1,关闭出口。
6.2.4、异常处理
以中断程序的执行过程辅助说明
(1)每一个异常都有一个异常向量(中断向量),该 向量其实就是连续的两个内存单元,这两个内存单 元的存储值就是异常服务程序代码的起始地址。
(2)所有的中断向量存放在内存空间的$FFFF— $FF00处,称为中断向量表。S12的CPU理论上一 共可以处理128条异常。
(2) 非法指令陷阱 CPU正常工作时,每次获得的都是由汇编或编译程序生 成的有效操作码,CPU能够正确解释并执行它们,但当受到 干扰或系统出现混乱时,可能得到无法识别的操作码,即非 法指令,这时将产生中断。
6.2.3、中断
• 上述异常发生时,CPU必需响应。但中断却例外, 有效利用的一种异常,有很多中断事件。 • 中断可以屏蔽,CCR的X、I位是相应中断的屏蔽 位。 • 只有在X、I为0时相应的中断才可以被响应。
YH: YL RTNH: RTNL
引发中断
CPU
执行
… … 中断服务代码
中断处理过程: ① 中断响应 ②获取中断向量 ③找到子程序入口 ④相关寄存器入栈 ⑤执行中断程序 ⑥相关寄存器出栈。 ⑦返回正常程序
$FF00
… … … … … … … 指向
$FFXX
AdddrH AdddrL … …
中断向量
获取
———
X
I I
None / BFRIER (XSYNIE)
INTCR (IRQEN) CRGINT (RTIE)
—
$F2 $F0
XIRQ
———
IRQ
实时中断
$FFEE,$FFEF
$FFEC,$FFED $FFEA,$FFEB $FFE8,$FFE9
捕捉定时通道0
捕捉定时通道1 捕捉定时通道2 捕捉定时通道3
6.5中断向量表
向量地址 $FFE0,$FFE1 中断源 捕捉定时通道7 CCR I 局部使能位 TIE (C7I) HPRIO $E0
$FFDE,$FFDF
$FFDC,$FFDD $FFDA,$FFDB $FFD8,$FFD9
捕捉定时溢出
脉冲累加器A溢出 脉冲累加器边沿输入 SPI0
I
I I I
$FFFF
6.3中断优先级与中断嵌套源自中断打断中断中断优先级:当多个中断等待执行时,中断优先级决定哪一个中断首先
被执行。 中断优先级顺序: ① RESET引脚和上电复位 ② 时钟监视复位 ③ COP复位 ④指令陷阱和软件中断 ⑤ X位中断 ⑥ I 位可屏蔽中断
6.3中断优先级与中断嵌套
表6.1 默认嵌套机制 异常类型 可以被谁打断 1上电与外部复位 None 1 2时钟监视复位 3 COP复位 4指令陷阱 1、2 1、2、3 屏蔽标志 None
中断
其他
X位可屏蔽
I位可屏蔽
1.软件中断 2.指令陷阱
XIRQ中断
1.IRQ 2.实时中断 3.输入捕捉 4.AD 5.SCI ……
6.2.1、复位
四种事件可以触发系统复位: (1)上电复位 S12的VDD引脚上的一个正向变化将触发上电复 位,这意味着当给S12上电时,它以一个已知的、 确定的设置启动。 (2)外部复位 S12配备一个标记为RESET的低电平有效复位引 脚,当该引脚电压为低电平时,触发复位。
6.4可屏蔽中断(I位)
需要注意的是,通过HPRIO设定的优先级并不表示当出 现中断嵌套时,高优先级中断可以中止低优先级中断的服务 程序执行,而转向高优先级中断的服务程序运行。这里高优 先级作用只有当多个中断源同时请求中断时才能体现,这时 S12单片机将首先响应高优先级的中断,低优先级的中断不 会得到响应。
$FFFA,$FFFB $FFF8,$FFF9 $FFF6,$FFF7
时钟监控复位
COP复位 非法指令陷阱 软件中断指令
None
None None None
COPCTL (CME, FCME)
COP rate select None None
—
— — —
$FFF4,$FFF5
$FFF2,$FFF3 $FFF0,$FFF1
6.5中断向量表
• S12采用一套特殊的机制实现对异常(中断) 的处理,在0xFF80~0xFFFF地址空间设置 了一个向量表,每个向量表对应一种异常的 处理程序的地址。向量表中每个向量为16位, 占用2个字节空间,所有S12最大可有64个中 断向量。
6.5中断向量表
• S12处理器在进行中断响应时,依据中断信号 的来源在中断向量表中对应位置取得中断向 量的16位中断服务程序入口地址,进而以此 地址转到相应的中断服务程序。
• 中断定义:是指CPU在正常执行程序过程中,由于
内部/外部事件,CPU暂时中断当前程序的运行, 转而执行由内部/外部事件引起的中断服务子程序。 在中断服务子程序执行完毕后,CPU再重新回来执 行当前的程序;
定义
• 单片机为什么引入中断系统机制
• 首先想想生活中中断的处理机制及方法
• 与查询的概念相对应;中断是用以提高计算机工 作效率的一种重要机制和技术;
6.2.4、异常处理
(3)、当异常发生时,CPU选择相应异常的中断向量, 获取该向量中的地址信息,转而执行该地址所指向 的代码。
(4)、还有一件很重要的事,就是中断服务代码执行 前和执行后都该如何处理。
6.2.4、异常处理
(5)、异常处理流程
CPU需要返回到正常的代码流程,可是刚才执行到哪 了呢?书签的寓意就是保存上下文,即执行中断代码前需 要将当前的CPU寄存器:A、B、X、Y、CCR以及当前程 序代码的位置PC(地址)进行入栈(Push)保存。
6.5中断向量表
• S12中断向量表的首地址固定在0xFF80不变, 其内容由用户在程序设计阶段给定,一般不 能在运行时更改。表6.1列出了S12中断向量 表的分配情况。
6.5中断向量表
向量地址 $FFFE,$FFFF 中断源 复位 CCR None 局部使能位 None HPRIO —
$FFFC,$FFFD
6.2.3 、中断
1、X位可屏蔽中断 • 当X标志位为0且XIRQ引脚被拉成低电平,MCU 将响应该中断。 • 软件指令只能将X标志位清零,不能将X标志位置1。 • 不能人为屏蔽,只能开启中断。 • 所以将 XIRQ中断称为不可屏蔽中断。
6.2.3 、中断
2、I位可屏蔽中断 • 当I标志位为0,中断发生时,MCU执行完当前指 令后,将响应该中断。 • 将I标志位置1,关闭所有中断。 • 通常情况下:中断程序内,开始将I置1,服务代码 执行完毕后通过RTI指令将该标志位清零。
中断代码执行完毕后,通过RTI指令(Return from interrupt),将PC等信息弹出(Pull)。这样CPU重新获得 了正常执行代码的地址,进而继续之前的正常流程。