中国高校课件下载中心 》 教学资源 》 大学文库

《单片机原理与应用》课程教学课件(PPT讲稿)第4章 AT89S52单片机的中断系统(2/2)

文档信息
资源类别:文库
文档格式:PPT
文档页数:27
文件大小:643.5KB
团购合买:点击进入团购
内容简介
《单片机原理与应用》课程教学课件(PPT讲稿)第4章 AT89S52单片机的中断系统(2/2)
刷新页面文档预览

第4章AT89S52单片机 的 中断系统

1 第4章 AT89S52单片机 的 中断系统 1

4.8中断服务子程序的设计 中断系统的运行必须与中断服务子程序配合才能正确使 用。设计中断服务子程序需要首先明确以下几个问题。 1.中断服务子程序设计的任务 任务有下列4条: (1)设置中断允许控制寄存器IE,允许相应的中断请求源 中断。 (2)设置中断优先级寄存器IP,确定所使用的中断源的优 先级。 (3)若是外部中断源,还要设置中断请求的触发方式决定 采用电平触发方式还是跳沿触发方式。 (4)编写中断服务子程序,处理中断请求。 2

2 4.8 中断服务子程序的设计 中断系统的运行必须与中断服务子程序配合才能正确使 用。设计中断服务子程序需要首先明确以下几个问题。 1.中断服务子程序设计的任务 任务有下列4条: (1)设置中断允许控制寄存器IE,允许相应的中断请求源 中断。 (2)设置中断优先级寄存器IP,确定所使用的中断源的优 先级。 (3)若是外部中断源,还要设置中断请求的触发方式决定 采用电平触发方式还是跳沿触发方式。 (4)编写中断服务子程序,处理中断请求

前3条一般放在主程序的初始化程序段中。 【例5-3】假设允许外部中断0中断,设定为高级中断,采 用跳沿触发方式,其他中断源为低级中断。初始化程序如下: SETB EA;EA位置1,总中断开关位开放 SETB EX0;EX0位置1,允许外部中断0产生中断 SETB PXO ;PX0位置1,外部中断0为高优先级中断 SETB ITO ;T0位置1,外部中断0为跳沿触发方式 3

3 前3条一般放在主程序的初始化程序段中。 【例5-3】 假设允许外部中断0中断,设定为高级中断,采 用跳沿触发方式,其他中断源为低级中断。初始化程序如下: SETB EA ;EA 位置1,总中断开关位开放 SETB EX0 ;EX0位置1,允许外部中断0产生中断 SETB PX0 ;PX0位置1,外部中断0为高优先级中断 SETB IT0 ;IT0位置1,外部中断0为跳沿触发方式 3

2.采用中断时的主程序结构 程序必须先从主程序起始地址0000H执行。所以,在 0000H起始地址的几个字节中,用无条件转移指令,跳向主 程序。 另外,各中断入口地址之间依次相差8字节,中断服务子 程序稍长就超过8字节,这样中断服务子程序就占用了其他 的中断入口地址,影响其他中断源的中断处理。为此,一般 在进入中断后,用一条无条件转移指令,把中断服务子程序 跳转到远离其他中断入口的入口地址处。 常用的主程序结构如下: 4

4 2.采用中断时的主程序结构 程序必须先从主程序起始地址0000H执行。所以,在 0000H起始地址的几个字节中,用无条件转移指令,跳向主 程序。 另外,各中断入口地址之间依次相差8字节,中断服务子 程序稍长就超过8字节,这样中断服务子程序就占用了其他 的中断入口地址,影响其他中断源的中断处理。为此,一般 在进入中断后,用一条无条件转移指令,把中断服务子程序 跳转到远离其他中断入口的入口地址处。 常用的主程序结构如下: 4

0RG0000H LJMP MAIN ORG X:X2XaX.H :X:XXXH为某中断源的中断入口 LJMP INT ;INT为某中断源的中断入口标号 。eeae0 ORG Y:Y2YaY.H :Y:YYY4H为主程序入口 MAIN: 主程序 INT: 中断服务子程序 注意:如果有多个中断源,就有多个“ORG XX2X3X4H” 的入口地址,多个“中断入口地址”必须依次由小到大排列。 主程序MAN的起始地址YY2Y3Y4H,根据具体情况来安排。 5

5 注意:如果有多个中断源,就有多个“ORG X1X2X3X4H” 的入口地址,多个“中断入口地址”必须依次由小到大排列。 主程序MAIN的起始地址Y1Y2Y3Y4H,根据具体情况来安排。 5

3.中断服务子程序的流程 中断服务子程序的基本流程如图4-10所示。下面对有关中断 服务子程序执行过程中的一些问题进行说明。中断服务子程序入口 关中断 现场保护 开中断 中断处理 关中断 现场恢复 开中断 中断返回 图4-10 中断子服务程序的基本流程

6 3.中断服务子程序的流程 中断服务子程序的基本流程如图4-10所示。下面对有关中断 服务子程序执行过程中的一些问题进行说明

(1)现场保护和现场恢复 现场是指单片机中某些寄存器和存储器单元中的数据或状态。 为使中断服务子程序的执行不破坏这些数据或状态,因此要送 入堆栈保存起来,这就是现场保护。 现场保护一定要位于中断处理程序的前面。中断处理结束后, 在返回主程序前,则需要把保存的现场内容从堆栈中弹出恢复 原有内容,这就是现场恢复。 现场恢复一定要位于中断处理的后面。 堆栈操作指令:“PUSH direct”和“POP direct'”,是 供现场保护和现场恢复使用的。要保护哪些内容,应根据具体 情况来定

7 (1)现场保护和现场恢复 现场是指单片机中某些寄存器和存储器单元中的数据或状态。 为使中断服务子程序的执行不破坏这些数据或状态,因此要送 入堆栈保存起来,这就是现场保护。 现场保护一定要位于中断处理程序的前面。中断处理结束后, 在返回主程序前,则需要把保存的现场内容从堆栈中弹出恢复 原有内容,这就是现场恢复。 现场恢复一定要位于中断处理的后面。 堆栈操作指令:“PUSH direct”和“POP direct”,是 供现场保护和现场恢复使用的。要保护哪些内容,应根据具体 情况来定。 7

(2)关中断和开中断 现场保护前和现场恢复前关中断,是为防止此时有高一级的 中断进入,避免现场被破坏。 在现场保护和现场恢复之后的开中断是为下一次的中断做好 准备,也为了允许有更高级的中断进入。这样,中断处理可以 被打断,但原来的现场保护和现场恢复不允许更改,除了现场 保护和现场恢复的片刻外,仍然保持着中断嵌套的功能。 但有时候,一个重要的中断,必须执行完毕,不允许被其他 的中断嵌套。可在现场保护前先关闭总中断开关位,待中断处 理完毕后再开总中断开关位。这样,需把图4-10中的“中断处 理”步骤前后的“开中断”和“关中断”去掉

8 (2)关中断和开中断 现场保护前和现场恢复前关中断,是为防止此时有高一级的 中断进入,避免现场被破坏。 在现场保护和现场恢复之后的开中断是为下一次的中断做好 准备,也为了允许有更高级的中断进入。这样,中断处理可以 被打断,但原来的现场保护和现场恢复不允许更改,除了现场 保护和现场恢复的片刻外,仍然保持着中断嵌套的功能。 但有时候,一个重要的中断,必须执行完毕,不允许被其他 的中断嵌套。可在现场保护前先关闭总中断开关位,待中断处 理完毕后再开总中断开关位。这样,需把图4-10中的“中断处 理”步骤前后的“开中断”和“关中断” 去掉。 8

(3)中断处理 应用设计者根据任务的具体要求,来编写中断处理部分 的程序。 (4)中断返回 中断服务子程序最后一条指令必须是返回指令RET1。 CPU执行完这条指令后,把响应中断时所置1的不可寻址的 优先级状态触发器清0,然后从堆栈中弹出栈顶上的两个字 节的断点地址送到程序计数器PC,弹出的第一个字节送入 PCH,弹出的第二个字节送入PCL,从断点处重新执行主程 序

9 (3)中断处理 应用设计者根据任务的具体要求,来编写中断处理部分 的程序。 (4)中断返回 中断服务子程序最后一条指令必须是返回指令RETI。 CPU执行完这条指令后,把响应中断时所置1的不可寻址的 优先级状态触发器清0,然后从堆栈中弹出栈顶上的两个字 节的断点地址送到程序计数器PC,弹出的第一个字节送入 PCH,弹出的第二个字节送入PCL,从断点处重新执行主程 序。 9

【例4-4】根据图4-10流程,编写中断服务程序。设现场保 护只将PSW寄存器和累加器A的内容压入堆栈中保护。一个典 型的中断服务子程序如下: INT: CLR EA :CPU关中断 PUSH PSW ; 现场保护 PUSH Acc SETB EA ;总中断允许 中断处理程序段 CLR EA ;关中断 POP Acc :现场恢复 POP PSW SETB EA ;总中断允许 RETI :中断返回,恢复断点 10

10 【例4-4】 根据图4-10流程,编写中断服务程序。设现场保 护只将PSW寄存器和累加器A的内容压入堆栈中保护。一个典 型的中断服务子程序如下: 10

共27页,试读已结束,阅读完整版请下载
刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档