《51单片机中断原理.ppt》由会员分享,可在线阅读,更多相关《51单片机中断原理.ppt(34页珍藏版)》请在第壹文秘上搜索。
1、单元七单元七 MCS - 51单片机的中断单片机的中断 一、一、 中断的概述中断的概述 二、二、 MCS - 51中断系统中断系统三、三、 中断系统的应用中断系统的应用 5.1 中中 断断 的的 概概 述述 1. 中断中断 中断是指计算机在执行某一程序的中断是指计算机在执行某一程序的过程中过程中, 由于计算机系统内、由于计算机系统内、 外的某种外的某种原因原因, 而必须中止原程序的执行而必须中止原程序的执行, 转去执转去执行相应的处理程序行相应的处理程序, 待处理结束之后待处理结束之后, 再再回来继续执行被中止的原程序的过程。回来继续执行被中止的原程序的过程。 采用了中断技术后的计算机采用了中
2、断技术后的计算机, 可以解决可以解决CPU与外设之间速度匹配的问题与外设之间速度匹配的问题, 使计算使计算机可以及时处理系统中许多随机的参数机可以及时处理系统中许多随机的参数和信息和信息, 同时同时, 它也提高了计算机处理故它也提高了计算机处理故障与应变的能障与应变的能力。力。“中断中断”与与“查询查询”相比:相比: 执行效率执行效率 实时性实时性 2. 中断源中断源 中断源是指在计算机系统中可以向中断源是指在计算机系统中可以向CPU发出中断请求的来源。发出中断请求的来源。 通常有通常有I/O设备、实时控制系统中的随机参数和信设备、实时控制系统中的随机参数和信息息故障源等。故障源等。 3. 中
3、断优先级中断优先级 中断优先级越高中断优先级越高, 则响应优先权就越高。当则响应优先权就越高。当CPU正在执行中断服务程序时正在执行中断服务程序时, 又有中断优先级更又有中断优先级更高的中断申请产生高的中断申请产生, 这时这时CPU就会暂停当前的中断就会暂停当前的中断服务转而处理高级中断申请服务转而处理高级中断申请, 待高级中断处理程序待高级中断处理程序完毕再返回原中断程序断点处继续执行完毕再返回原中断程序断点处继续执行, 这这一过程一过程称为称为“中断嵌套中断嵌套”。 4. 中断响应的一般过程中断响应的一般过程 (1) 在每条指令结束后在每条指令结束后, 系统都自动检测中断系统都自动检测中断
4、请求信号请求信号, 如果有中断请求,且如果有中断请求,且CPU处于开中处于开中断状态下断状态下, 则响应中断。则响应中断。 (2) 保护现场保护现场, 在保护现场前在保护现场前, 一般要关中断一般要关中断, 以防止现场被破坏。保护现场一般是用堆栈指以防止现场被破坏。保护现场一般是用堆栈指令将原程序中用到的寄存器推入堆栈。令将原程序中用到的寄存器推入堆栈。 (3) 中断服务中断服务, 即为相应的中断源服务。即为相应的中断源服务。 (4) 恢复现场恢复现场, 用堆栈指令将保护在堆栈用堆栈指令将保护在堆栈中的数据弹出来中的数据弹出来, 在恢复现场前要关中断在恢复现场前要关中断, 以防止现场被破坏。在
5、恢复现场后应及时以防止现场被破坏。在恢复现场后应及时开中断。开中断。 (5) 返回返回, 此时此时 CPU将推入到堆栈的断点将推入到堆栈的断点地址弹回到地址弹回到程序计数器程序计数器, 从而使从而使CPU继续执继续执行刚才被中断的程序。行刚才被中断的程序。 5.2 MCS - 51中断系统中断系统图图5.1 MCS - 51中断系统结构框图中断系统结构框图 5.2.1 中断源中断源 表表 5.1 8051 中中 断断 源源中断标志(中断标志(Flag)IE0:外部中断:外部中断0中断标志中断标志TF0:定时器:定时器/计数器计数器0中断标志中断标志IE1:外部中断:外部中断1中断标志中断标志T
6、F1:定时器:定时器/计数器计数器1中断标志中断标志TI:串行口发送中断标志:串行口发送中断标志RI:串行口接收中断标志:串行口接收中断标志1. 定时器控制寄存器定时器控制寄存器TCON的格式(的格式(88H ) TF1TF1 TR1TR1 TF0TF0 TR0TR0 IE1IE1 IT1IT1 IE0IE0 IT0IT0(MSB)(LSB)IT0:外部中断:外部中断0触发方式选择位触发方式选择位 0:低电平触发低电平触发 1: 负跳变触发负跳变触发IE0:外部中断:外部中断0中断请求标志中断请求标志IT1、IE1 类似类似 IT0、IE0TR0:定时:定时/计数器计数器0运行控制位运行控制位
7、 0:停止停止 1:运行运行TF1:定时:定时/计数器计数器0中断请求标志位中断请求标志位TR1、TF1 类似类似 TR0、TF02. 特殊功能寄存器特殊功能寄存器SCON的格式(的格式(98H) SM0和和SM1:串行口工作方式选择位:串行口工作方式选择位SM2:多机通信使能位:多机通信使能位REN: 接收允许位接收允许位TB8:发送数据位:发送数据位8RB8:接收数据位:接收数据位8TI: 串行口发送中断请求标志串行口发送中断请求标志RI: 串行口接收中断请求标志串行口接收中断请求标志 SM0SM0 SM1SM1 SM2SM2RENREN TB0TB0 RB0RB0TITIRIRIMSBL
8、SB5.2.2 中断控制中断控制 1. 中断允许控制中断允许控制 MCS - 51单片机有单片机有 5个(个(8052有有 6个)中断源个)中断源, 为为了使每个中断源都能独立地被允许或禁止了使每个中断源都能独立地被允许或禁止, 以便用户以便用户能灵活使用能灵活使用, CPU内部在每个中断信号的通道中设置内部在每个中断信号的通道中设置了一个了一个中断允许触发器中断允许触发器, 它控制它控制CPU能否响应中断。能否响应中断。只有对应的中断允许触发器被使能(置只有对应的中断允许触发器被使能(置“1”),相应),相应的中断才能得到相应。的中断才能得到相应。 EX0:外部中断:外部中断0允许位允许位E
9、T0:定时器:定时器/计数器计数器0中断允许位中断允许位EX1:外部中断:外部中断1允许位允许位ET1:定时器:定时器/计数器计数器1中断允许位中断允许位ES : 串行口中断允许位串行口中断允许位EA :中断总允许位:中断总允许位EAESET1 EX1 ET0 EX0(MSB)(LSB)中断允许控制寄存器中断允许控制寄存器IE (0A8H)2. 中断优先级控制寄存器中断优先级控制寄存器IP(0B8H) PSPT1 PX1 PT0 PX0(MSB)(LSB)PX0:外部中断:外部中断0允许位允许位PT0:定时器:定时器/计数器计数器0中断允许位中断允许位PX1:外部中断:外部中断1允许位允许位P
10、T1:定时器:定时器/计数器计数器1中断允许位中断允许位PS : 串行口中断允许位串行口中断允许位 当两个以上的中断源同时提出申请时,当两个以上的中断源同时提出申请时,CPU到底相应哪个中断呢?到底相应哪个中断呢? 中断响应遵循两条规则:中断响应遵循两条规则: (1)低优先级中断可以被高优先级中断所)低优先级中断可以被高优先级中断所中断,反之不能;中断,反之不能; (2)一种中断(不论哪个优先级)一旦得)一种中断(不论哪个优先级)一旦得到响应,与它同级的中断不能再中断它。到响应,与它同级的中断不能再中断它。表表 5.2 同级内第二优先级次序同级内第二优先级次序 当同时收到处于同一优先级的多个中
11、断当同时收到处于同一优先级的多个中断请求时,哪一个中断能得到响应,取决于请求时,哪一个中断能得到响应,取决于“内部查询次序内部查询次序”,相当于在每个优先级中,相当于在每个优先级中,还有一个还有一个“内部优先级内部优先级”,如下表所示:,如下表所示: 例如例如, 某软件中对寄存器某软件中对寄存器IE、 IP设置如下设置如下: MOV IE, 8FH MOV IP, 06H 则此时该系统中则此时该系统中: CPU中断允许中断允许; 允许外部中断允许外部中断 0、 外部中断外部中断 1、 定时器定时器 /计数器计数器 0、 定时器定时器 /计数器计数器1提出的中断申请提出的中断申请; 允许中断源的
12、中断优先次序为允许中断源的中断优先次序为: 定时器定时器 /计数器计数器 0外部中断外部中断 1外部中断外部中断 0定时器定时器/计数计数器器 1。 5.2.3 中断响应中断响应The interrupt request flags are sampled in each machine cycle. The sampled flags are polled during the following machine cycle. If one of the flags was in a set condition in the preceding cycle, the polling cycl
13、e will find it and the interrupt controller will cause the CPU to branch to the vector address of the appropriate service routine by generating an internal LCALL. 中断标志检测与响应过程中断标志检测与响应过程5.2.3.1 中断响应的阻断条件中断响应的阻断条件 在在EA1且相应的中断允许位也为且相应的中断允许位也为1的情况下,的情况下,检测到的最高级的中断请求将会得到相应。但此时检测到的最高级的中断请求将会得到相应。但此时如果发生下列
14、三种情况中的任何一种,中断响应的如果发生下列三种情况中的任何一种,中断响应的过程将被阻断:过程将被阻断:(1) 同级或高优先级的中断已在进行中同级或高优先级的中断已在进行中; (2) 当前的机器周期还不是正在执行指令的最后当前的机器周期还不是正在执行指令的最后一个机器周期(换言之一个机器周期(换言之, 正在执行的指令完成前正在执行的指令完成前, 任任何中断请求都得不到响应)何中断请求都得不到响应); (3) 正在执行的是一条正在执行的是一条 RETI 或者访问特殊功能或者访问特殊功能寄存器寄存器 IE或或 IP的指令(换言之的指令(换言之, 在在 RETI或读写或读写 IE或或 IP之后之后,
15、 不会马上响应中断请求不会马上响应中断请求, 而至少执行而至少执行一条其它指令之后才会响应)。一条其它指令之后才会响应)。 当上述阻断条件存在时,中断不能当上述阻断条件存在时,中断不能被相应,且丢弃查询结果。若阻断条件结被相应,且丢弃查询结果。若阻断条件结束时,中断标志已经消失,则这个被拖延束时,中断标志已经消失,则这个被拖延了的中断请求可能不会再得到响应。了的中断请求可能不会再得到响应。 在单一外部中断的系统里(即不考虑在单一外部中断的系统里(即不考虑上述阻断条件中断的第一个条件),外部上述阻断条件中断的第一个条件),外部中断响应时间总是在中断响应时间总是在38个机器周期之间。个机器周期之间
16、。2. 单片机一旦响应中断请求单片机一旦响应中断请求, 由硬件完成以下功能由硬件完成以下功能: (1) 根据响应的中断源的中断优先级根据响应的中断源的中断优先级, 使相应的优先级状使相应的优先级状态触发器置态触发器置 1; (2) 执行硬件中断服务子程序调用执行硬件中断服务子程序调用, 并把当前程序计数并把当前程序计数器器PC的内容压入堆栈的内容压入堆栈; (3) 清除相应的中断请求标志位(串行口中断请求标清除相应的中断请求标志位(串行口中断请求标志志 RI和和 TI除外)除外); (4) 把被响应的中断源所对应的中断服务程序的入口把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入地址(中断矢量)送入PC, 从而转入相应的中断服务程序。从而转入相应的中断服务程序。 中断响应过程,相当于执行了一条隐中断响应过程,相当于执行了一条隐含的调用指令(或称隐指令)含的调用指令(或称隐指令)LCALL。 例如当例如当TF0被置被置1且得到中断响应时,且得到中断响应时,CPU就自动的执行一条隐指令就自动的执行一条隐指令“LCALL 000BH”。 应当注意,在中断服务子程序的调用应当注意