51系列单片机的中断系统.docx

上传人:牧羊曲112 文档编号:4881982 上传时间:2023-05-21 格式:DOCX 页数:10 大小:140.29KB
返回 下载 相关 举报
51系列单片机的中断系统.docx_第1页
第1页 / 共10页
51系列单片机的中断系统.docx_第2页
第2页 / 共10页
51系列单片机的中断系统.docx_第3页
第3页 / 共10页
51系列单片机的中断系统.docx_第4页
第4页 / 共10页
51系列单片机的中断系统.docx_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《51系列单片机的中断系统.docx》由会员分享,可在线阅读,更多相关《51系列单片机的中断系统.docx(10页珍藏版)》请在三一办公上搜索。

1、51系列单片机的中断系统在单片机开发过程中,中断系统是非常重要的,它在很大程度上决定了系统对外界的反 应速度。因此,用好中断,对一个系统开发的成败有着非常重要的意义。同时,在应用系统 的开发中,单片机中断资源也是相当宝贵的,如何合理地使用中断资源,也是一个需要认真 对待的问题。几乎所有的单片机开发实例,都涉及了中断系统的使用问题。对中断概念的理解,一般都是站在CPU的角度,认为中断系统是一种重要的外部设备。 如果换个角度,面向应用任务来认识中断,就会看到,中断不仅仅只是外设。引入中断概念 后,一块物理CPU就变成了多块“逻辑CPU”,复杂的多任务应用系统才有可能实现,操作 系统才得以变成现实。

2、可以说,中断是使微机走向实用的关键概念。8.1中断概念8.1.1从面向CPU的观点认识中断概念在应用系统中,CPU与外部设备之间需要频繁交换数据。通常CPU处理数据的速度比外 部设备快得多,这造成系统内部各部分之间数据协调转移的不匹配。为解决外部设备与CPU 之间的速度匹配问题,CPU与外部设备之间的数据交换可以采用两种办法:查询方式和中断 方式。在查询方式中,不论是输入还是输出,都是以计算机为主动的一方CPU在传送数据之 前,首先要查询外部设备是否处于“准备好”状态。对于输入操作,需要知道外设是否已把 要输入的数据准备好了;对于输出操作,则要知道外设是否已把上一次CPU输出的数据处理 完毕。

3、只有通过查询确信外设已处于“准备好”状态,CPU才能发出访问外设的指令,实现 数据交换。查询方式的优点是通用性好,可以用于各类外部设备和CPU之间的数据传送,缺 点是需要有一个等待查询过程,CPU在等待查询期间不能进行其他操作,从而导致工作效率 低下。与查询方式不同,中断方式是外设主动提出数据传送的请求,CPU在收到这个请求以前, 一直在执行着主程序,只是在收到外设希望进行数据传送的请求之后,才中断原有主程序的执行,暂时去与外设交换数据,数据交图8.1中断概念示意图换完毕后立即返回继续执行主程序。中断方式完全消除了 CPU在查询方式中的等待现象,大大 提高了 CPU的工作效率。中断方式的一个重

4、要应用领域 是实时控制。将从现场采集到的数据通过中断方式及时 传送给CPU,经过处理后就可立即作出响应,实现实时控 制。而采用查询方式就很难做到及时采集,实时控制。 由于中断方式传送数据可以有效提高CPU的工作效率、 适合于实时控制系统,因而更为常用。以上是中断在CPU与外部设备之间交换数据中的作用。实际上,只要是同时需要兼顾两 件事情,但又无法准确知道这两件事情发生时刻的时候(两事件发生时刻无关联),也就是 说需要处理“异步”事件时,就会用到中断概念。当CPU正在执行处理某件事情的程序的时候,外部发生的某一事件(如电平的改变、脉 冲边沿跳变、定时器/计数器溢出等)请求CPU立即处理。CPU暂

5、时停止当前的程序运行, 转去执行处理所发生的事件的程序。处理完该事件以后,再回到原来程序被打断的地方,继 续执行原来的程序。这种程序在执行过程中由于外界的原因而被暂时打断的情况称为“中断”。相对于汇编指令中的转移指令,中断是通过硬件来改变CPU的运行方向的。8.1.2从面向任务的观点认识中断概念设想一个脉冲采集模块,其功能是对输入脉冲计数,要求将每一个脉冲乘上系数后在外 部E2ROM中累加保存。可以用查询方式监视输入脉冲的管脚,一旦有脉冲进来,CPU就把外部E2ROM中的累加 数取出来,加上一个脉冲对应的系数值后,再存回外部E2ROM。这是把完整的功能当做一个 任务,由CPU来执行。假如输入脉

6、冲的频率不太高的话,两个脉冲之间有足够的时间用来运 行计算和存储程序,自然是可行的;但如果输入脉冲频率比较高,相邻脉冲间隔已不能满足 运行计算和存储程序的要求,就会发生丢失脉冲的现象。利用中断概念可以解决这个问题。把上述功能拆分成两个独立的任务:一个是脉冲计数 任务,只负责在脉冲到来时向脉冲计数单元中的脉冲个数加一;另一个是计算累加任务,负 责把当前脉冲计数单元的脉冲个数取出来(取出后将脉冲计数单元清零),乘以规定的系数 后加到外部E2ROM中的累加数上。由于计算累加任务程序执行时间比较长,但实时性要求不 高,可以作为CPU的主程序运行;而对于脉冲计数任务,由于脉冲频率不是预先确定好的, 无法

7、预见下一个脉冲何时到来,相对于主程序是“异步事件”,为保证不丢失脉冲,就需要 良好的实时性,因此,脉冲计数任务由外部中断服务程序来完成。仿照图8.1,将包含多个脉冲的一段时间中的程序流向表示出来,见图8.2。脉冲时间方向图8.2多个脉冲程序流向图注意到图中只有水平方向的线条才代表执行任务的过程,去掉只代表程序走向的斜向线 条,就可以清楚地看到两个独立的任务在异步执行。在上述例子中,使用查询方式,一个 CPU只能进行一个任务;而由于加入了中断概念后,一个CPU可以同时进行两个任务,或者 说,中断概念使得一个物理CPU变成了两个“逻辑CPU”。考虑更复杂的情况。上述脉冲采集模块是某个采集终端的一个

8、部件。这个采集终端还包 括按键和显示模块,其功能是响应并执行操作者的按键指令,以及定时显示必要的数据。这 样一来,CPU的工作就复杂多了。在前述脉冲采集(包括脉冲计数、计算与累计存储子任务) 任务的基础上,又增加了人机交互(包括按键响应、按键指令执行、定时、显示刷新子任务) 任务。如果采用类似“查询方式”的做法,合成一个大任务,肯定要顾此失彼,乱成一锅粥; 即使采用图8.2的做法,由于每个任务都有不同的实时性要求,合成主任务的因素太复杂, 也会导致设计困难,可靠性降低。图8.3是中断在多任务系统中的一种应用。脉冲采集任务任务调度中断人机交互任务-图8.3中断在多任务系统中的一种应用流程图图中脉

9、冲采集任务、人机交互任务各自成体系独立运行,由任务调度中断来分配CPU 占用时间,即,在每次进入任务调度中断服务时,不是简单的返回被中断的任务了事,而是 根据调度排队规则转到下一个最优先的任务。一个多任务并行工作的局面就形成了。这种任 务调度正是操作系统的核心。有了它,使得一个物理CPU真正变成了多个逻辑CPU。当然实 际做起来要复杂得多,但从概念上能清楚地看到中断概念所起到的核心作用。有了多任务概念,就可以分别编写调试每个任务,只要遵守一定的限制,就可以认为每 个任务都独占CPU,这给设计复杂系统带来了很大的便利,同时也使得大任务可以分解成相 对独立的小任务,由一个团队共同完成,而不是一个人

10、单打独斗。8.2中断系统硬件与中断响应过程8.2.1中断系统的任务单片机中实现中断功能的部件称为中断管理系统,也称为中断系统。产生中断请求的来 源称为中断源,中断源向CPU发出的请求称为中断申请,CPU暂停当前的工作转去处理中断 源事件称为中断响应,对整个事件的处理过程称为中断服务,事件处理完毕CPU返回到被中 断的地方称为中断返回。微型机的中断系统一般允许多个中断源,当几个中断源同时向CPU 请求中断的时候,存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急 排队,即规定每一个中断源有一个优先级别,以便先响应级别最高的中断请求。这称为中断 优先级。单片机对于多个中断源进行管理

11、,就是中断系统的任务。这些任务一般包括:1、开中断或关中断中断的开放或关闭可以通过指令对相关特殊功能寄存器的操作来实现,这是CPU能否接 受中断申请的关键,只有在开中断的情况下,才有可能接受中断源的申请。2、中断的排队在开中断的条件下,如果有多个中断申请同时发生,就要对各个中断源做一个优先级的 排序,CPU先响应优先级别高的中断申请。3、中断的响应CPU在响应了中断源的申请时,应使CPU从主程序转去执行中断服务子程序,同时要把 断点地址送入堆栈进行保护,以便在执行完中断服务子程序后能返回到原来的断点继续执行 主程序。断点地址入栈是由单片机内部硬件自动完成的,中断系统还要能确定各个被响应中 断源

12、的中断服务子程序的入口。4、中断的撤除在响应中断申请以后,返回主程序之前,中断申请应该撤除,这一点在使用中一定要注 意。8.2.2中断系统结构为实现以上任务,8051单片机采用的中断系统结构如图8.4所示。INT 0T0INT1T1TXRXip优先级中断优先级控制矢量地址低级中断请求PC硬件查询中断服务程序入口图8.4中断系统结构图从图8.4中可见,8051单片机中断系统可分为4个部分:中断源与中断标志、中断允 许控制、中断优先级控制、中断服务入口。随后的小节会逐一详细讲解这些部分的作用及相 关概念。从使用者的角度来看,8051单片机的中断系统就是如下几个特殊功能寄存器构成:定时控制寄存器TC

13、ON串行口控制寄存器SCON中断允许寄存器IP中断优先级寄存器IE其中TCON和SCON只有一部分位用于中断控制。这4个特殊功能寄存器中的每个位的作用,就相当于图8.4中的开关。通过对这4个特 殊功能寄存器中相应的位置“1”或清“0”,可设置各种中断控制功能。8.2.3中断源与中断申请标志8051单片机是多中断源系统,有5个中断源:2个外部中断,2个定时器/计数器中断 和1个串行口中断(对80C52单片机来说还有1个定时器/计数器T2,因此它还多1个定时 器/计数器T2中断)。CPU在检测到有效的中断申请之后,使某些相应的标志位置“1”; CPU在下一个机器周 期检测这些标志以决定是否要响应中

14、断。这些标志位分别处于特殊功能寄存器TCON和SCON 上。称为中断申请标志位。1. 外部中断、定时器/计数器溢出中断与定时器控制寄存器TCON。两个外部中断源分别从INT0(P3.2)和INT1(P3.3)引脚输入,外部中断请求信号可 以有两种方式,即电平触发方式和负边沿触发方式。若是电平触发方式,只要在Into或布 引脚上检测到低电平信号即为有效地中断申请。若是负边沿触发方式,则需在INT 0或两引 脚上检测到从1到0的负边沿跳变,才属于有效申请。两个定时器/计数器溢出中断属于内部中断。当定时器/计数器T0或T1中数值由全“1” 进入全“0”时,即所谓定时器/计数器“溢出”时,发出的中断申

15、请,两个外部中断的触发方式、中断申请标志以及两个定时器/计数器的溢出中断标志都保 存在特殊功能寄存器TCON中。TCON寄存器的地址为88H,其中各位都可以位寻址,位地址 为88H8FH。TCON寄存器中与中断有关的各控制位分布如下:D7 D6 D5 D4 D3 D2 D1 D0TF1TF0IE1IT1IE0IT0其中各控制位的含义为:TCON.0 IT0:选择外部中断1NT0的中断触发方式。IT0=0为电平触发方式,低电平 有效。IT0=1为负边沿触发方式,1NT0脚上的负跳变有效。IT0的状态可以用指令来置“1” 或清“0”。TCON.1 IE0:外部中断int0的中断申请标志。当检测到I

16、NT0上存在有效中断申请 时,由内部硬件使IE0置“1”。当CPU转向中断服务,并从中断服务程序返回(执行RETI) 指令时,由内部硬件清“0” IE0中断申请标志。TCON.2 IT1:选择外中断布的触发方式(功能与TI0相同)。TCON.3 IE1:外部中断INT1的溢出中断申请标志(功能与IE0相同)。TCON.5 TF0:定时器/计数器T0的溢出中断申请标志。当T0溢出时,由内部硬件将 TF0置“1”,当CPU转向中断服务,并从中断服务程序返回(执行RETI指令)时,由内部 硬件将TF0清“0”。TCON.7 TF1:定时器/计数器T1的中断申请标志(功能与TF0相同)。可以看出,外部

17、中断和定时器/计数器溢出中断的申请标志,在CPU响应中断之后能够 自动撤除。2. 串行口中断与串口控制寄存器SCON串行口中断也属于内部中断。在串行口接受或发送完一组串行数据后自动发出的中断申 请。8051单片机串行口的中断申请标志位于特殊功能寄存器SCON中,SCON寄存器的地址为 98H,其中各位都可以位寻址,位地址为98H9FH。串行口的中断申请标志只占用SCON中的 两位,分布如下:D7 D6 D5 D4 D3 D2 D1 D0TIRI其中各控制位的含义为:SCON.0RI:接收中断标志。当接受完一帧串行数据后,数据转入接收缓冲器SBUF,同时硬件将RI置位。但CPU响应中断时并不清除

18、RI,必须由软件清除。SCON.1TI:发送中断标志。CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件将TI置位。但CPU响应中断时并不清除TI,必须由软件清除。参见图7.4,串行口的中断申请是由TI和RI相“或”以后产生的。响应中断后,要由 软件根据RI、TI来判别究竟是发送中断还是接收中断。因此串行口中断申请在得到CPU响 应之后不会自动撤除,必须通过软件程序撤出。8.2.4中断控制寄存器1. 中断允许寄存器IE8051单片机中断的开放和关闭是由特殊功能寄存器IE来实现两级控制的。所谓两级控 制是指在寄存器IE中有一个总允许位EA,当EA=0时,就关闭了所有的中断

19、申请,CPU不响 应任何中断申请。而当EA=1时,对各中断源的申请是否开放,还要看各中断源的中断源的 中断允许位的状态。参见图7.4。中断允许寄存器IE的地址为A8H,其中各位都可以位寻址,位地址为A8HAFH。总允许 位EA和各中断源允许位在IE寄存器中的分布如下:D7 D6 D5 D4 D3 D2 D1 D0EAESET1EX1ET0EX0其中各控制位的含义:IE.7 EA:中断总允许位。EA=0时,CPU关闭所有的中断申请,只有EA=1时,才能 允许各个中断源的中断申请,但最终是否开放中断,还要取决于各中断源中断允许控制位的 状态。IE.4ES:串行口中断允许位。ES=1,串行口开中断;

20、ES=0,串行口关中断。IE.3 ET1:定时器/计数器T1的溢出中断允许位。ET1=1,允许T1溢出中断;ET1=0, 则不允许T1溢出中断。IE.2 EX1:外中断1(布)的中断允许位EX1=1,允许外部中断1申请中断;EX1=0 则不允许中断。IE.1ET0:定时器/计数器T0的溢出中断允许位。ET0=1,允许中断;ET0=0,不允许中断。ie.0exo:外部中断0(Into)的中断允许位。exo=1,允许中断;exo=0,不允许中断。8051单片机在复位时,IE各位的状态都为“0”,所以CPU是处于关中断的状态。因此 在程序初始化时需要根据对中断的使用情况做相应的设置。由于串行口中断请

21、求被响应之后,CPU不能自动清除其中断标志,就要特别注意用指令 来实现中断的开放或关闭,以免随后的中断处理工作受到虚假中断的干扰。2. 中断优先级寄存器IP与中断嵌套8051单片机的中断系统具有两个中断优先级,对于每一个中断请求源可编程为高优先 级或低优先级中断,以实现两级中断嵌套。每个中断源的优先级别由特殊功能寄存器IP来 管理。IP寄存器的地址为B8H,其中各控制位是可以寻址的,位地址为B8HBCH。IP寄存器中 各控制位分布如下:D7 D6 D5 D4 D3 D2 D1 D0PSPT1PX1PT0PX0其中各位的含义为:IP.4PS:串行口中断优先级控制位。IP.3 PT1:定时器/计数

22、器T1中断优先级控制位。IP.2PX1 :外部中断WT1中断优先级控制位。IP.1PT0:定时器/计数器T0中断优先级控制位。IP.0PX0:外部中断INT0中断优先级控制位。IP寄存器中若某一个控制位置“1”,则相应的中断源就规定为高优先级中断,反之, 若某一个控制位置“0”,则相应的中断源就规定为低优先级中断。一个正在被执行的低优先级中断服务程序能被高优先级中断源的中断申请所中断,这种 现象称为中断嵌套,图8.5是中断嵌套的示意图。相同级别的中断源不能相互中断其服务程序,也不能被另一个低优先级的中断源所中 断。若CPU正在执行高优先级的中断服务子程序,则不能被任何中断源所中断。CPU执行高

23、级应 中断服务程序高级CPU执行低级向中断服务程序应CPU执行主程序断点高级中 断请求求.断点低级中 断请求图8.5中断嵌套图当有某个中断源申请中断时,并且特殊功能寄存器IE中相应控制位和总中断控制位EA 均处于置“ 1”状态,则CPU就可以响应该中断。8051单片机有5个中断源,但只有2个中 断优先级,因此必然会有若干个中断源处于同样的中断优先级。当两个同样级别的中断申请 同时到来时,8051单片机内部有一个固定的查询顺序。这个查询顺序称为自然优先级。当 同时出现同级中断申请时,就按这个自然优先级来中断响应。8051单片机的5个中断源及 其同级内的自然优先级如下:中断源同级内的自然优先级外部

24、中断0最高定时器/计数器0外部中断1定时器/计数器1串行口最低3. 中断服务入口当CPU响应中断后,会强行将程序转向中断服务程序的入口地址(通常称矢量地址)。8051单片机的中断入口分布如下:中断源入口地址外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中断0023H这只是8051单片机的5个最基本中断源。不同型号单片机除了这5个基本中断源之外 还有它们各自专有的中断源,如8052单片机就还有一个定时器/计数器T2溢出中断,T2的 中断入口地址为002BH。8.2.5中断响应的过程1. CPU响应中断申请8051单片机在接受到中断申请以后,先把这些

25、申请锁定在各自的中断标志中,然后在 下一个机器周期按中断优先级和同级的自然优先级分别来查询这些标志,并在一个机器周期 之内完成检测和优先排队。响应中断的条件有三个:1)必须没有同级或更高级别的中断正在得到响应,如果有的话,则必须等CPU为它们 服务完毕,返回主程序并执行一条指令之后才能响应新的中断申请。2)必须要等当前正在执行的指令执行完毕以后,CPU才能响应新的中断请求。3)若正在执行的指令是RETI(中断返回)或是任何访问IE寄存器或IP寄存器的指令, 则必须要在执行完该指令以及紧随其后的另外一条指令之后,才可以响应新的中断申请。在 这种情况下,响应中断所需的时间就会加长,这个响应条件是8

26、051单片机所特有的。若上述条件满足,CPU就在下一个机器周期响应中断,先后完成两组动作:首先,中断 系统通过硬件生成长调用指令(LACLL),该指令自动把断点地址,即当前程序计数器PC的 内容送入堆栈保护;然后,由硬件根据不同的中断源所发出的中断申请,自动将对应的中断 入口地址装入程序计数器PC,强行使程序转向该中断入口地址,执行中断服务程序。各中 断源的入口地址由硬件事先设定(8051单片机的中断入口地址参见7.3.2节)。编程时,通常在这些中断入口地址处存放一条绝对跳转指令,使程序跳转到设计者安排 的中断服务程序的真正起始地址上去。从这个起始地址开始,才正式进入中断服务阶段。编程时要注意

27、尽可能缩短中断服务阶 段的执行时间。2. CPU对中断响应的撤除CPU响应中断时,中断请求被锁存在TCON和SCON的标志位。当某个中断请求得到响应 之后,相应的中断标志位应该予以撤除(即复“0”),否则CPU又会继续查询这些标志位而 认为又有新的中断申请来到,重复引起中断而导致错误。8051单片机有5个中断源,对于其中的4个:外部中断0的中断申请标志IE0;外部中断1的中断申请标志IE1;定时器/计数器0的中断申请标志TF0;定时器/计数器0或1的中断申请标志TF1;在中断返回时,系统能通过硬件自动是标志位复“0”(即撤除)。中断返回是指中断服 务完后,CPU返回到原来断开的位置(即断点),

28、继续执行原来的程序。中断返回由中断返 回指令RETI来实现。该指令的功能是把断点地址从堆栈中弹出,送回到程序计数器PC。此 外,还通知中断系统已完成中断处理,撤除中断申请标志(硬件可清除的)。特别要注意, 子程序返回指令“RET”虽然也具有把断点地址从堆栈中弹出送回到程序计数器PC,使CPU 返回到原来断开的位置(即断点),继续执行原来的程序的功能,但不能完成撤除中断申请 标志(硬件可清除的)的功能,因此不能用“RET”指令代替“RETI”指令。在这里需要注意的是外部中断。外部中断有两种触发方式:即低电平方式和负边沿方式。 对于边沿触发方式比较简单,无需采取其它措施,因为在清除了 IE0或IE

29、1以后必须再来一 个负边沿信号,才可能使标志位重新置“1”。对于低电平触发方式则不同,如果仅是由硬件 清除了 IE0或IE1标志,而加在瓦或两引脚上的低电平不撤销,则在下一个机器周期CPU 检测外中断申请时会发现又有低电平信号加在外中断输入上,又会使IE0或IE1置“1”,从 而产生错误的结果。8051单片机的中断系统没有对外的联络信号,即中断响应之后没有输 出信号去通知外设中断申请,因此必须由设计者自己用硬件电路处理这个问题。至于串行口的中断请求标志TI和RI,中断系统不自动撤除。因为在响应串行口中断之 后要先用程序测试这两个标志位,以决定是接收中断还是发送中断,所以不能由硬件自动立 即撤销

30、。但在测试完毕之后应使之清“0”,以结束这次中断申请。TI和RI的清“0”操作 可在中断服务子程序中用指令来实现。3. 中断响应的实时性中断的最大用处是实现异步事件的实时响应,但CPU并不是在任何情况下都对中断请求 立即响应,不同情况下中断响应的时间有所不同,下面以外部中断为例来进行说明。外部中断请求在每个机器周期的S5P2期间,经过反向后锁存到IE0或IE1标志中,CPU 在下一个机器周期才会查询这些标志,这时如果满足响应中断的条件,CPU响应中断时,需 要执行一条两个机器周期的调用指令,以转到相应的中断服务程序入口。这样,从外部中断 请求有效到开始执行中断服务程序的第一条指令,至少需要3个机器周期。如果在申请中断时,CPU正在执行最长的指令(如乘、除指令)则额外等待时间增加3 个机器周期;若正在执行中断返回(RETI)或访问IE、IP寄存器指令,则额外等待时间又 要增加2个机器周期。因此,若系统中只有一个中断源发出中断申请,则中断响应时间为38个机器周期。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号