51单⽚机中断基本概念
问题引⼊
在了解基本概念之前,先看三个问题:
1.你想使⽤的中断是哪个?
2.你所希望的触发条件是什么?
3.你希望在中断之后做什么?
可以边看边思考,⽂章最后给出答案
中断概念
为什么引⼊中断?
中断是为使单⽚机具有对外部或内部随机发⽣的事件实时处理⽽设置的,中断功能的存在,很⼤程度上提⾼了单⽚机处理外部或内部事件的能⼒。
中断系统特点:
①分时操作。CPU 可以分时为多个 I/O 设备服务,提⾼了计算机的利⽤率;
②实时响应。CPU 能够及时处理应⽤系统的随机事件,系统的实时性⼤⼤增强;
③可靠性⾼。CPU 具有处理设备故障及掉电等突发性事件能⼒,从⽽使系统可靠性提⾼
中断过程
对于单⽚机来讲,中断是指CPU在处理某⼀时间A时,发⽣了另⼀事件B请求CPU⽴刻去处理(中断发⽣或中断请求);CPU暂时停⽌当前的⼯作(中断响应),转⽽去处理事件B(中断服务),待CPU处理事件B完成后,再回到原来事件A被中断的地⽅继续处理事件A(中断返回)。这⼀过程称为中断,注意是整个过程,⽽不是单⼀的停⽌⼀件事的意思。
举例:你打开⽕,烧上⼀壶⽔。然后去洗⾐服,在洗⾐服的过程中,突然听到⽔壶发出⽔开的报警声,这时,你停⽌洗⾐服动作,⽴即去关掉⽕,然后将开⽔灌⼊暖⽔瓶中,灌完开⽔后,你⼜回去继续洗⾐服。这个过程中实际上就发⽣了⼀次中断。
对照图:
程序流程图
单⽚机在执⾏程序时,中断也随时有可能发⽣,但⽆论何时发⽣,只要⼀旦发⽣,单⽚机将⽴即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执⾏原来的程序。
中断系统:实现中断过程
中断源:请⽰CPU中断的请求源。微型机的中断系统⼀般允许多个中断源,当⼏个中断源同时向 CPU 请求中断,要求为它服务的时候,这就存在CPU 优先响应哪⼀个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每⼀个中断源有⼀个优先级别。CPU 总是先响应优先级别最⾼的中断请求。
中断嵌套:当单⽚机正在执⾏中断请求时,⼜出现了⼀个⽐正在执⾏的优先级更⾼的中断请求,则先停⽌正在执⾏的中断请求,执⾏优先级⾼的中断请求,等执⾏完后再执⾏原来优先级较低的中断请求。
拥有中断嵌套的中断系统称为多级中断系统,没有嵌套功能的为单级中断系统。
中断结构
⼤多数单⽚机共提供8个中断请求源,但是⼀定有最基本的5个中断。
中断:
外部中断0(INTO)、外部中断 1(INT1)、外部中断 2(INT2)、外部中断 3(INT3)、定时器 0中断、定时器 1 中断、定时器 2 中断、串⼝(UART)中断。
基本中断:
INT0、INT1、定时器 0,定时器1,串⼝中断。
中断请求标志位TCON
IT0(TCON.0),外部中断 0 触发⽅式控制位。
当 IT0=0 时,为电平触发⽅式。
当 IT0=1 时,为边沿触发⽅式(下降沿有效)。
IE0(TCON.1),外部中断 0 中断请求标志位。
IT1(TCON.2),外部中断 1 触发⽅式控制位。
IE1(TCON.3),外部中断 1 中断请求标志位。
TF0(TCON.5),定时/计数器 T0 溢出中断请求标志位。
TF1(TCON.7),定时/计数器 T1 溢出中断请求标志位。
注:外部中断0和1(IT0和IT1)为0或1时是两种触发⽅式,低电平触发和边沿触发,是控制位不是标志位。
中断允许控制
CPU 对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE 控制的。
各中断的中断允许位:
EX0(IE.0),外部中断 0 允许位;
ET0(IE.1),定时/计数器 T0 中断允许位;
EX1(IE.2),外部中断 1允许位;
ET1(IE.3),定时/计数器 T1 中断允许位;
ES(IE.4),串⾏⼝中断允许位;
EA (IE.7), CPU 中断允许(总允许)位。
注意:总中断允许位就是是总开关⼀样,只有总允许位有效的前提下,其它中断置允许位才能使中断有效。
中断优先级
同⼀优先级中的中断申请不⽌⼀个时,则有中断优先权排队问题。同⼀优先级的中断优先权排队,由中断系统硬件确定的⾃然优先级形成,其排列如所⽰:
嵌入式系统是什么意思中断优先级三条原则:
1. ⾸先响应⾼优先级的中断请求。
2.⾼优先级的中断请求可以打断低优先级的中断。
3.低优先级的中断请求不可以打断⾼优
先级及同优先级的中断。
中断号
中断号在编程时⾮常重要,当中断来临时,只有中断号正确才能进⼊中断。
中断响应条件
①中断源有中断请求;
②此中断源的中断允许位为 1;
③CPU 开中断(总允许位)(即 EA=1)。
以上三条同时满⾜时,CPU 才有可能响应中断
如图,为中断内部结构框图:
TCON为中断请求标志,其中外部中断0和外部中断1可选择控制⽅式低电平有效还是下降沿有效。
,IE为中断允许位,可以看到,只有EA等于1时,其他中断允许才可能有效。
从图中可以看出,⼀个中断过程:中断位(确定哪⼀个中断)->中断标志位->中断允许位->中断总允许位->中断执⾏功能。
问题引⼊及解答(中断应⽤举例)
回到上⾯的三个问题
1.你想使⽤的中断是哪个?
每⼀个中断都对应⼀个中断号,要想使⽤某⼀中断就选择对应的中断号。
2.你所希望的触发条件是什么?
外部中断的触发调件触发条件可分为低电平触发和下降沿触发,要明确触发条件。
3.你希望在中断之后做什么?
即中断服务函数,函数⾥要做什么,执⾏什么样的功能。
以外部中断0为例:
EA=1;//打开总中断开关
EX0=1;//开外部中断 0
IT0=0/1;//设置外部中断的触发⽅式
/
*中断服务函数*/
void int0() interrupt 0 using 1//intterrupt表⽰中断,0表⽰中断号,using1可省略{
//编写⽤户所需的功能代码
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论