单片机的中断系统.pdf

上传人:H****o 文档编号:56647778 上传时间:2022-11-02 格式:PDF 页数:5 大小:36.44KB
返回 下载 相关 举报
单片机的中断系统.pdf_第1页
第1页 / 共5页
单片机的中断系统.pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《单片机的中断系统.pdf》由会员分享,可在线阅读,更多相关《单片机的中断系统.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第十八课单片机的中断系统单片机中断系统的目的是为了让CPU 对内部或外部的突发事件及时地作出响应,并执行相应的程序,在单片机的开发中,它同样有着十分重要的作用,那么单片机的中断是怎么回事?它是如何来工作的呢?这一课就来讨论这个问题,在讲解之前让我们先来介绍一下中断的原理:一、中断的基本原理什么是中断?中断的过程是什么?要搞清楚这个问题,我们同样先从生活中的一个例子开始:你正在家中看书,突然电话铃响了,你放下书,去接电话,和来电话的人交谈,通完电话,回来继续看你的书,这就是生活中的“中断”现象就是正常的工作过程被外部的事件打断了。仔细研究一下生活中的中断,对我们学习单片机中断会很有帮助:第一,中

2、断源。什么可引起中断,生活中很多事件都可以引起中断,比如:有人按了门铃、电话铃响了、你的闹钟响了、你烧的水开了?等等诸如此类的事件,我们把可以引起中断的事件称之为中断源。单片机中也有一些可以引起中断的事件(比如:掉电、运算溢出、报警等等),89C51 单片机中共有 5 个中断源:两个外部中断,两个定时/计数器中断(溢出),一个串行口中断。第二,中断的嵌套与优先级处理。设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?如果你正在等一个很重要的电话,一般是不会去理会门铃的;而反之,如果你正在等一个很重要的客人,则可能就不会去理会电话了;如果两者都不是(既不等电话,也不等人上门

3、),你可能会按你通常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有另一个中断产生的情况。比如你正在接电话,又有人按门铃的情况,或者你正开门与人交谈,又有电话响了的情况。考虑一下,我们一般会怎么办?第三,中断的响应与处理。当有事件产生,进入中断之前我们必须先记住现在的书看到第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书),电话铃响我们要到放电话的地方去,门铃响了我们要到门那边去,也就是说不同的中断,我们要在不同的地点处理,而这个地点通常还

4、是固定的。单片机中采用的也是这种方法,五个中断源,每个中断产生后都到一个固定的地址去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,单片机中断响应可以分为以下几个步骤:1、停止主程序运行。当前指令执行完后立即终止现行程序的运行。2、保护断点。把程序计数器 PC 的当前值压入堆栈,保存终止的地址(即断点地址),以便从中断服务程序返回时能继续执行该程序,3、寻找中断入口。根据5 个不同的中断源所产生的中断,查找 5 个不同的入口地址。4、执行中断处理程序。这就不讲了;5、中断返回。执行完中断处理程序后,就从中断处返回到主

5、程序,继续往下执行。以上工作是由计算机自动完成的,与编程者无关,在这5 个入口地址处存放有中断处理的程序(这是程序编写时放在那儿的,如果没把中断处理程序放在那儿可就错了,因为中断程序无法被执行到)。有点复杂是吗?没关系,继续往下看。二、实现中断的好处单片机为什么要有中断系统,使用中断有什么好处呢?日常生活中,我们除了看书,肯定还要做很多其他的事情,比如听电话,接待客人,烧水吃饭等等,单片机实行中断也有很多的好处,具体来说:1。实行分时操作,提高CPU 的效率。只有当服务对象向CPU 发出中断申请时,才去为它服务,这样我们就可以利用中断功能同时为多个对象服务,从而大大提高了CPU 的工作效率。2

6、。实现实时处理。利用中断技术,各个服务对象可以根据需要随时向CPU 发出中断申请,及时发现和处理中断请求并为之服务,以满足实时控制的要求。3。进行故障处理。对难以预料的情况或故障,比如掉电,事故等,可以向CPU 发出请求中断,有 CPU 作出相应的处理。那么单片机是如何实现中断处理的呢?要了解这个问题,就让我们先来看看单片机中断系统的内部结构。三单片机中断系统的结构:前面已经提到,89C51 单片机有 5 个中断源,那么它们的硬件结构是怎么样的呢?请看下面的图,这就是89C51 单片机的中断系统内部结构图,下面让我们一一来进行分析:1中断源:(1)外部中断:即外中断 0 和外中断 1,经由外部

7、引脚引入,在单片机的硬件上有两个引脚(12 和 13),名称为 INT0 和 INT1(第二引脚功能P3.2、P3.3)。在单片机的内部有一个特殊功能寄存器TCON,其中有四位是与外中断有关的。还记得 TCON 是什么吗?对了,是定时器控制寄存器,请看下面的表:AIT0:中断 0(INT0)的触发方式控制位。可由软件进行置位和复位,IT0=0,中断 0 为低电平触发方式;IT0=1,中断 0 为负跳变触发方式。这两种方式的差异讲起来有点复杂,这里就不介绍了,作为初学者,只要知道就可以了。至于具体如何使用,我们到后面做实验时再讲解。BIE0:中断 0(INT0)的中断请求标志位。当有外部的中断请

8、求时,该位就会置“1”;在 CPU 响应中断后,该位就自动清“0”。(注意?:这是由硬件自动完成的)。IT1、IE1 的用途和 IT0、IE0 是类似的。看上面的表:(2)内部中断即定时器 0(T0)和定时器 1(T1)中断,与外中断一样,它也是由TCON 中的四位控制的。A TF0:定时器 T0 的溢出中断标记。当 T0 计数产生溢出时,由硬件置位 TF0;当 CPU 响应中断后,再由硬件将 TF0 自动清“0”。TF1:与 TF0 类似,这里就不讲了。(3)串行口中断单片机教程(MCS-51 系列)负责串行口的发送、接收中断,具体内容我们到下册学习串行接口时再详细讲解。下面我们再来讲另一个

9、与中断有关的寄存器。2、中断允许寄存器IE(A8H)中断的允许或禁止是由片内可进行位(什么是位,大家可别到现在还说不知道哦)寻址的 8 位中断允许寄存器IE 来控制的,单片机中断系统中有两种不同类型的中断:一种称为非屏蔽中断;另一种称为屏蔽中断。对于非屏蔽中断,用户不能用软件方法加以禁止,一旦有中断申请,CPU 将根据自然优先级予以响应。这里主要讲屏蔽中断,对于屏蔽中断,我们可以通过软件的方法来予以控制(允许中断我们把它称为中断开放,不允许中断我们把它称之为中断屏蔽),如何操作,文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C

10、3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P

11、6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R

12、6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W

13、3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T

14、10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码

15、:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C

16、2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10说穿了其实很简单,就是通过对 IE 的相应位的置“1”或请“0”来允许或禁止某个中断,请看下面的表格:(1)EA:总中断允许开关。它是个总开关,凡是要设置中端都得先通过它。EA=1,开放所有的中断;EA=0,则所有中断都被禁止。(2)ES:串行口中断控制位。ES=1,允许中断;ES=

17、0,禁止中断。(3)ET1:定时/计数器 1 中断控制位。ET1=1,允许中断;ET1=0,禁止中断。(4)EX1:外中断 1 中断控制位。EX1=1,允许中断;EX1=0,禁止中断。(5)ET0:定时器 0 中断控制位。ET0=1,允许中断;ET0=0,禁止中断。(6)EX0:外中断 0 中断控制位。EX0=1,允许中断;EX0=0,禁止中断。例如:我们现在要设置 INT1 允许,T1 允许,其它不允许,则 IE 应该是 10001100(即 8CH),也可以直接用位操作指令SETB EA;SETB ET1;SETB EX1 来实现它。看一下下面的表:这里有一点请大家注意?:当复位 CPU

18、时,IE 将被全部清“0”。了解了中断的设置,让我们再来看另一个问题:前面我们提到过,中断有优先级和嵌套的问题,那么中断的优先级和嵌套是如何来控制的呢?接着往下看:3中断源优先级寄存器IP(D8H)单片机执行中断的过程和生活中的中断有些类似,它也有一个自然优先级与人工优先级的问题,那么单片机是如何来设置它们的呢?这就要用到中断优先级寄存器 IP,它也是一个可位寻址的8 位寄存器。现在让我们先来看五个中断源的自然优先级是如何设置的:五个中断源的自然优先级由高到低的排列顺序为外中断0定时器 0外中断1定时器 1串口中断。如果我们不对其进行设置,单片机就按照此顺序不断的循环检查各个中断标志(就像我们

19、生活中按照习惯处理事物一样),但有时我们需要人工设置高、低优先级,也就是说由编程者来设定哪些中断是高优先级、哪些中断是低优先级(当然由于只有两级,所以必然只有一些中断处于优先级别,而其他的中断则处于同一级别,处于同一级别的中断顺序就由自然优先级来确定,这一点请大家务必搞清楚了)。既然可以设定人工优先级,那么它又是如何来设置的呢?其实很简单,我们只要把 IP 寄存器的对应位置“1”就可以了,看下面的表:开机时,每个中断都处于低优先级,我们可以用指令来对优先级进行设置。例如:现在有如下要求,将T0、INT1 设为高优先级,其它为低优先级,求IP 的值。IP 的首 3 位没用,可任意取值,设为000

20、,后面根据要求写:00000110,即IP=06H,看下面的表。这里有个问题:如果5 个中断请求同时发生时又会出现什么情况呢?比如在上例中,五个中断同时发生,求中断响应的次序。按照我们学到的内容,响应次序应该为:定时器 0外中断 1外中断 0 68 实时器 1串行中断。是不是符合我们刚才说的除了人工设置的高优先级外,其余的均按照自然优先级来处理。其实这很好理解,如果我在家等待一个很重要的电话,同时又有人来敲门或者烧的水开了,当我放下电话后,还是会按照一般的习惯去处理其他的事情(比如先开门让客人进来,再去处理烧开的水)。4串行口控制寄存器SCON(98H)用于串行口中断及控制,我们留到下册中再详

21、细解释。下面讨论一下另一个问题:四中断响应的条件和过程文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9

22、P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1

23、R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1

24、W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9

25、T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编

26、码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10

27、C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T101、中断响应的原理讲到这里,我们依然对于单片机响应中断的过程感到神秘,我们人响应外界的事件,是因为我们有多种“传感

28、器”眼、耳等可以接受不同的信息,那么单片机是如何做到这点的呢?其实说穿了,一点也不稀奇,单片机工作时,在每个机器周期中都去查询一下各个中断标记,看它们是否是“1”,如果是“1”,就说明有中断请求了。所以所谓中断,其实也就是查询,只不过是每个周期都查一下而已。这要换成人来说,就相当于你在看书的时候,每一秒钟都抬起头来看一看,看是不是有人按门铃了,是否有电话来了,烧的水是否开了?很蠢,是吗?本来嘛,计算机它根本就没人聪明。了解了响应中断的原理,就不难理解中断响应的条件了。2、中断响应的条件当有下列三种情况之一发生时,CPU 将封锁对中断的响应,而是到下一个机器周期时再继续查询:(1)CPU 正在处

29、理一个同级或更高级别的中断请求时。(2)当前的指令没有执行完时。我们知道,单片机有单周期指令、双周期指令、三周期指令和两个四周期指令,如果当前执行指令是单字节指令也许没关系,如果是双字节或四字节的指令,那就要等整条指令都执行完了,才能响应中断(因为中断查询是在每个机器周期都可能查到的)。(3)当前正执行的指令是返回指令(RETI)或访问 IP、IE 寄存器的指令,则CPU 将至少再执行一条指令才能响应中断。这些都是与中断有关的寄存器,如果正访问IP、IE 则可能会出现开、关中断或改变中断的优先级;而中断返回指令则说明本次中断还没有处理完,所以就要等本指令处理结束,再执行一条指令才可以响应中断。

30、3、中断响应的过程:CPU 响应中断时,首先把当前指令的下一条指令(就是中断返回后将要执行的指令)的地址(也叫断点地址)送入堆栈,然后根据中断标记,硬件执行长跳转指令,转到相应的中断源入口处,执行中断服务程序,当遇到RETI(中断返回指令),返回到断点处继续执行程序,这些工作都是由硬件自动来完成的。那么中断入口的地址是如何来确定的呢?在51 系列单片机中,五个中断源都有它们各自的中断入口地址,请看下面:(1)外中断 0(INT0):0003H (2)定时器 0(T0):000BH (3)外中断 1(INT1):0013H (4)定时器 1(T1):001BH (5)串口中断:0023H 讲到这

31、里,大家应该明白,为什么我们前面的有些程序一开始是这样写的:ORG 0000H;LJMP START;ORG 0030H;START:*;*;文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 H

32、R9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2

33、J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 Z

34、L1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1

35、Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文

36、档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE

37、10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10*;END。其实这样写的目

38、的,就是为了让出中断源所占用的向量地址,当然,在程序中如果没有用到中断时,直接从地址0000H 开始写理论上不是不可以,但在实际工作中最好不要这样做。这里还有一个问题,大家是否注意到,每个中断向量地址只间隔了 8 个字节,如 0003H 000BH,在如此少的空间中如果完成不了中断程序,又该这么办呢?其实很简单,您只要在中断处安排一条LJMP 指令,不就可以把中断服务程序跳转到任何地方去了吗?所以一个完整的主程序看起来应该是这样的:ORG 0000H;LJMP START;ORG 0003H;LJMP AINT0;转外中断 0 服务程序ORG 000BH;RETI;没有用定时器 0 中断,在此

39、放一条RETI,万一“不小心”产生了中断,也不会有太大的后果。START:*;主程序*;*;AINT0:*;中断服务程序*;RETI;从中断服务程序返回END。中断程序处理完成后,一定要执行一条RETI 指令,执行这条指令后,CPU 将会把堆栈中保存着的地址取出,送回程序计数器PC,那么程序就会根据PC 中的值从主程序的中断处继续往下执行了。从CPU 终止当前程序,且转向另一程序这点看,中断的过程很象子程序,其实它们之间还是有区别的:中断发生的时间是随机的,而子程序调用则是按程序进行的,所以它们的返回命令也是不一样的。RET 是用在返回子程序中的,而RETI 则用在返回中断处理程序中的,这一点

40、千万不能搞错了。另外还有一点需要大家注意?的是:在这里 CPU 所做的自动保护工作是很有限的,它只保护了一个地址(就是中断返回后将要执行的指令的地址,即 PC 的值),而其它的所有东西都不保护,所以如果你在主程序中用到了如 ACC、PSW 等寄存器,而在中断程序中又要用到它们,还要保证回到主程序后这里面的数据还是没执行中断之前的数据,就得自己把它们保护起来。这是一项非常重要的工作,否则程序执行的结果就不是您想象的要求了!(具体如何做,我们将在下一课的实验中详细解释)。文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P

41、6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R

42、6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W

43、3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T

44、10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码

45、:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C

46、2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10文档编码:CE10C2M2P8C3 HR9P6J2J1R6 ZL1W3K1Q9T10

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁