微机原理及应用 第5章 MCS-51 中断系统.ppt_第1页
微机原理及应用 第5章 MCS-51 中断系统.ppt_第2页
微机原理及应用 第5章 MCS-51 中断系统.ppt_第3页
微机原理及应用 第5章 MCS-51 中断系统.ppt_第4页
微机原理及应用 第5章 MCS-51 中断系统.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、第5章 MCS-51 中断系统,第5章 MCS-51 中断系统:,5.1 中断的概念 5.2 MCS-51 单片机的中断源 5.3 中断控制 5.4 中断处理过程 5.5 中断请求的撤销 5.6 外部中断的应用,引起CPU中断的根源,称为中断源。 中断源向CPU提出的中断申请,称为中断请求。 CPU暂时中断原来的事务A,转去处理事件B的过程称为中断响应。 CPU处理事件B的过程称为中断服务或中断处理。 对事件B处理完毕后,再回到原来被中断的地方(断点), 称为中断返回。 整个过程称为中断 。,5.1 中断的概念,实现中断功能而配置的软件与硬件称统为中断系统。,随着计算机技术的应用,人们发现中断

2、技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:,分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;,实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;,可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。,5.2 MCS-51 单 片机 的中断源5.3 中断控制,80C51的中断系统有5个中断源,2个优先级,可实现二级中断嵌套 。,8051有两个外部中断源,即外部中断0和外部中断1。它们的中断请求信号分别由引脚 (P3.2)和 (P3.3)输入。,5.2 80C51的中断源 1、外部中断源,每个外部中断

3、均有两种触发方式:电平触发和边沿触发。具体可通过SFR中的TCON的控制位IT0(TCON.0)、 IT1(TCON.2)的设置来选择。,电平触发方式是低电平有效。 边沿触发方式为脉冲的负跳变有效,即下降沿有效。,当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。 当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。,定时器中断源为两个T0、T1:实现定时和计数功能。 当片内定时/片外计数器T0、T1发生溢出时,置位TF0、TF1,并向CPU申请中断。 溢出:超出其无符号数表示范围, 特征

4、:计数值从全1变为全0时发生,当串行口接收完一帧串行数据时置位RI 当串行口发送完一帧串行数据时置位TI 均向CPU申请串行口中断,属同一中断源。,5.2 80C51的中断源 2、定时器中断源,3、串行口中断源,5.3.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溢

5、出中断请求标志位。 TF1(TCON.7),定时/计数器T1溢出中断请求标志位。,5. 3 80C51中断的控制,T0启动、停止控制位,T0溢出中断申请标志位,,INT0中断触发方式控制位,INT0中断申请标志位,5.3.2、串行口控制寄存器 SCON,TI(SCON.1),串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置位TI ,请求中断。CPU响应中断后,不能自动清除TI,必须由软件清除TI 。 RI(SCON.0),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个帧串行数据时,由硬件置位RI。 CPU响应中断后,

6、必须由软件清除RI 。,5.3.3 中断允许控制寄存器 IE,EA: 中断允许总控制位。EA=0,禁止所有中断申请;EA=1,开放所有中断。但是否允许各中断源的中断请求,还要取决于各中断源的中断允许控制位的状态。 ES: 串行口的中断允许位。 ET1: 定时器/计数器T1的中断允许位。 EX1: 外部中断1INT1的中断允许位。 ET0: 定时器/计数器T0的中断允许位。 EX0: 外部中断0INT0的中断允许位。 以上5个中断允许控制位为“0”时,禁止中断,为“1”时允许中断。,80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相

7、应位的状态来规定的 。,PX0(IP.0),外部中断0优先级设定位; PT0(IP.1),定时/计数器T0优先级设定位; PX1(IP.2),外部中断0优先级设定位; PT1(IP.3),定时/计数器T1优先级设定位; PS (IP.4),串行口优先级设定位。 以上5个中断优先级控制位分别为“0”时,为低级中断,为“1”时为高级中断。,5.3.4 中断优先级控制寄存器 IP,80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的 。,5.3.4 中断优先级控制寄存器 IP,正在进行的中断过程不能被新的同级或低优先级的

8、中断请求所中断,但能被更高优先级中断请求所中断-嵌套。,CPU同时接收到几个不同优先级的中断时, CPU首先响应优先级别最高的中断请求。 CPU同时接收到几个同一优先级的中断申请时,则CPU通过内部硬件查询逻辑按自然优先级顺序决定响应哪个中断请求。自然优先级顺序排列如下所示:,正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,但能被更高优先级中断请求所中断-嵌套。,5.4 中断处理过程,5.4.1 中断采样-对外部中断源信号 5.4.2 中断查询-对中断源标志位 5.4.3 中断响应、处理 5.4.4 中断返回,5.4.1 中断采样,在每个机器周期的S5P2期间,中断系统对各个外部中

9、断源信号进行检测,根据检测结果,设置相应中断标志位IE0 IE1的状态。,电平触发方式的外部中断请求:由一次检测结果来决定 若为高电平,表明没有中断请求,将对应的标志位IE0 IE1清零。 若为低电平,表明有中断请求,将对应的标志位IE0 IE1置。,边沿触发方式的外部中断请求:由相邻两次检测结果来决定 若为先高后低电平,表明有中断请求,将对应的标志位IE0 、IE1置。 否则,表明没有中断请求,不改变IE0 、IE1的状态,5.4.2 中断查询,CPU执行程序过程中,在每个机器周期的最后一个状态S6期间,按先后顺序对上一机器周期各个中断标志位的状态进行查询。,中断标志位为:表明有中断请求 在

10、接下来的机器周期S1期间按优先级进行中断处理。,中断标志位为:表明没有中断请求,中断查询由硬件自动完成,先后顺序为: IE0TF0 IE1 TF1RI和TI,5.4.3 中断响应,CPU执行程序过程中,对中断源提出的中断请求进行的接受响应处理,、中断响应的条件 (1) 有中断源请求信号,中断源标志位为1。 (2) 中断允许开放即EA1,且中断源对应的中断允许位置位1。 (3) 无同级或更高级中断正在服务。 (4) 当前的指令周期已经结束。 (5) 如果当前指令为RETI、RET或访问IE和IP的指令,至少需要再执行完一条指令。 当同时满足以上5个条件时CPU将对中断请求进行响应。,5.4.3

11、中断响应,、中断响应,将相应的优先级状态触发器置1 (以阻断后来的同级或低级的中断请求)。 执行一条硬件LCALL指令: 硬件清零相应中断请求标志(TI、RI除外) 将当前PC内容压入堆栈保护断点 将中断服务子程序入口地址送PC转移,中断响应是由中断系统内部自动完成的。,5.4.3 中断响应,3、中断的响应时间,是指从中断请求标志位置1,到进入相应的中断服务程序开始执行第一条指令所持续的时间。,若M1周期的S5P2前某中断生效,在S5P2期间其中断请求被锁存到相应的标志位中去; M2恰逢指令的最后一个机器周期,且该指令不是RETI或访问IE、IP的指令。于是,M3和M4便可以执行硬件LCALL

12、指令,M5周期将进入了中断服务程序。 80C51的中断响应时间,至少要3个完整的机器周期。,5.4.3 中断响应,4、中断处理,中断处理就是执行中断服务子程序。 从中断入口地址开始执行程序,直到返回指令RETI为止。,5.4.4 中断返回,中断返回是指中断服务程子序执行完后,CPU返回原来断开的位置(断点),继续执行原来的程序的过程; 由RETI指令来完成,具体过程为: 将相应中断优先级状态触发器清0,通知中断系统,中断服务程序已执行完毕,可以响应其他同级或更低级的中断。 将断点地址从栈顶弹出送回PC恢复断点 , CPU从原来中断的地方继续执行程序;,注意,不能用RET指令代替RETI指令。在

13、中断服务程序中PUSH指令与POP指令必须成对使用,否则不能正确返回断点 。,5.5 中断请求的撤销,CPU响应某中断请求后,在中断返回之前,应撤除该中断请求标志,否则会再次中断。,对定时计数器T0、T1的溢出中断,CPU响应中断后,硬件自动清除中断请求标志TF0和TF1。用户对此不必考虑。,对于串行口中断,CPU响应中断后,没有用硬件清除中断请求标志TI、RI,即这些中断标志不会自动清除,必须用软件清除 CLR RI;CLR TI,这是在编串行通信中断服务中应该注意的。,5.5 中断请求的撤销,对电平触发的外部中断,CPU在响应中断时硬件不会自动清除中断标志,也不能用软件清除中断标志,因此,

14、在CPU响应中断后应立即撤除INT1或INT0的低电平信号, 需要外加硬件电路和软件配合才能实现。P95,对边沿触发的外部中断INT1和INT0,CPU响应中断后硬件自动清除中断请求标志IE0和IE1。用户对此不必考虑。,5.6 外部中断的应用,5.6.1 中断程序设计 5.6.2 单外部中断源举例 5.6.3 多外部中断源举例,5.6.1 中断程序设计,主、子程序结构 中断服务子程序的主程序设计 中断初始化 用户对中断的控制和管理,实际是对4个与中断有关的寄存器TCON、SCON 、 IE、 IP进行控制或管理。 在中断初始化编制中应注意: 开中断总控开关EA,置位中断源的中断允许位。 对外

15、部中断INT0、INT1应选择中断触发方式。 多个中断源中断,应设定中断优先级,预置IP。 中断服务子程序设计 入口地址固定,中断服务程序的主程序设计框架,ORG0000H; 0000H为PC复位地址 LJMPMAIN;MAIN为主程序入口地址 ORG0003H; 为外部中断0服务子程序硬件入口地址 LJMPINT_0;INT_0为外部中断0服务程序真正入口地址 ORG000BH; 为定时器0中断服务子程序硬件入口地址 LJMPT_0;T_0为定时器0服务程序真正入口地址 ORG0013H;为外部中断1服务子程序硬件入口地址 LJMPINT_1;INT_1为外部中断1服务程序真正入口地址 .

16、ORG0100H;真正的主程序开始 MAIN:MOV SP, #60H;堆栈初始化 ;中断初始化:对TCON、SCON 、 IE、IP的初始化 SETBIT0;将外部中断0设置为下降沿触发方式 SETBEA;CPU开中断 SETBEX0;外部中断0开中断 SJMP$;等待中断,此处也可以放置其他处理程序。,中断服务子程序设计框架,INT_0: ; INT_0为外部中断0服务程序真正入口地址 CLREA;关中断 PUSH PSW ;保护现场 PUSH A SETBEA;开中断,允许CPU响应高级中断 ;中断服务子程序 ;中断服务子程序 CLREA;关中断 POP A ;恢复现场 POP PSW

17、SETBEA;开中断 RETI;中断返回,5.6.2 单外部中断源举例,例 程序单步执行方式的外部中断实现,每按一次按钮产生一个正脉冲,只执行一条指令。 P34 把一个外部中断(设为INT0)设置为高优先级和低电平触发方式。 ORG0000H; 0000H为PC复位地址 LJMPMAIN;MAIN为主程序入口地址 ORG 0003H;外部中断0入口地址 INT_0: JNB P3.2, $ ;在INT0变高前=0原地等待(死循环),不往下执行 JB P3.2, $ ; 在 INT0变低前=1原地等待(死循环) RETI ; INT0 =0返回主程序,并执行下一条指令 ORG0100H;真正的主

18、程序开始 MAIN:MOV SP, #60H;堆栈初始化 SETBPX0;设置外部中断0为高优先级 CLRIT0;将外部中断0设置为低电平触发方式 SETBEA;CPU开中断 SETBEX0;外部中断0开中断 INC A INC A ;需要单步执行的程序。 SJMP$;等待中断,此处也可以放置其他处理程序。,5.6.2 单外部中断源举例,【例5-1】用一个按钮控制8个发光二极管,每按动一次按钮,使发光二级管按L1L2 . L8 L1 的顺序循环移动点亮一位。,ORG0000H SETBP3.3;将P3.3口设置为输入状态 MOVA, #0FEH;设置L1L8的初始状态 LOOP:MOVP1,

19、A JBP3.3, $;若按钮未动作,则原地等待 JNBP3.3, $;等待按钮释放,保证按动一次 ;发光二极管只移动一位 RLA SJMPLOOP END,1、采用查询方式实现,5.6.2 单外部中断源举例,【例5-1】用一个按钮控制8个发光二极管,每按动一次按钮,使发光二级管按L1L2 . L8 L1 的顺序循环移动点亮一位。,ORG0000H;PC复位地址 AJMPMAIN;MAIN为主程序入口地址 ORG0013H AJMPINT_1;INT_1为外部中断1服务程序入口地址 ORG0100H;真正的主程序开始 MAIN:MOVSP, #60H;堆栈初始化 MOVA, #0FEH;设置L

20、1L8的初始状态 MOVP1, A;点亮二极管L1 SETBIT1;将外部中断1设置为下降沿触发方式 SETBEA;CPU开中断 SETBEX1;外部中断1开中断 SJMP$;等待中断,此处也可以放置其他处理程序。 ORG0200H;真正的外部中断1服务程序 INT_1:RLA;修改灯的状态 MOVP1, A RETI;中断返回 END,2、采用中断方式实现,利用外中断0实时显示多个外部系统故障状态。 要求:a、当系统工作正常时,四个故障源输入全为低电平,显示灯全熄灭; b、当某部分出现故障时,对应的输入线由低电平变为高电平,从而引起8031中断; c、在中断服务程序中查询故障源,并对相应的发光二极管LED输出低电平,进行相应的故障显示。,5.6.3 多外部中断源举例,ORG0000H AJMPMAIN;跳转主程序 ORG0003H AJMPPITO;跳转外部中断0服务程序 ORG0030H MAIN:ORLP1, #0FFH;(主程序开始)灯全灭,准备好 SETBEA;开放总

温馨提示

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

评论

0/150

提交评论