《单片机原理、接口技术及应用》课件第5章_第1页
《单片机原理、接口技术及应用》课件第5章_第2页
《单片机原理、接口技术及应用》课件第5章_第3页
《单片机原理、接口技术及应用》课件第5章_第4页
《单片机原理、接口技术及应用》课件第5章_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

5.1概述

5.2MCS-51单片机的中断系统

5.3MCS-51单片机的中断响应与撤销

5.4MCS-51单片机外部中断源的扩展

5.5MCS-51单片机中断系统的应用举例

习题与思考题第5章MCS-51系列单片机的中断系统

5.1概述

1.中断的概念在CPU与外设交换信息时,存在一个快速的CPU与慢速的外设之间的矛盾。为解决这个问题,采用了中断技术。良好的中断系统能提高计算机实时处理的能力,实现CPU与外设分时操作和自动处理故障,从而扩大了计算机的应用范围。当CPU正在处理某项事件时,如果外界或内部发生了紧急情况,要求CPU暂停正在处理的工作转而去处理这个紧急情况,待处理完以后再回到原来被中断的地方,继续执行原来被中断了的程序,这样的过程称为中断。向CPU提出中断请求的源称为中断源,微型计算机一般允许有多个中断源。当几个中断源同时向CPU发出中断请求时,CPU应优先响应最需紧急处理的中断请求。为此,需要规定各个中断源的优先级,使CPU在多个中断源同时发出中断请求时能找到优先级最高的中断源,响应它的中断请求。在优先级高的中断请求处理完以后,再响应优先级低的中断请求。中断处理过程如图5-1所示。

图5-1中断处理过程图

2.中断源

发出中断请求的外部设备或引起中断的内部原因称为中断源。中断源可分为外设中断和指令中断。外设中断是系统外部设备要求与CPU交换信息而产生的中断,也称为硬中断。指令中断是为了方便用户使用系统资源或调试软件而设置的中断指令,也称为软中断。

中断源按照是否可以被软件(指令)屏蔽,又分为可屏蔽中断和不可屏蔽中断。

MCS-51系列单片机不具备软中断功能,它具有的五个中断源分别为外部中断0、定时器/计数器0溢出、外部中断1、定时器/计数器1溢出、串行口中断等,它们均属于不可屏蔽的硬中断。

3.中断识别与中断服务程序入口地址

CPU响应中断后,只知道有中断源请求中断服务,但并不知道是哪一个中断源。因此,CPU要设法寻找是哪一个中断源发出的中断请求,这就是所谓的中断识别。中断识别的目的是要形成该中断源的中断服务程序的入口地址,以便CPU将此地址置入程序地址指针寄存器,从而实现程序的转移。CPU识别中断或获取中断服务程序入口地址的方法有两种:向量方式和固定方式。

向量方式是由中断向量来指明中断服务程序的入口地址。如8086/8088CPU,通过中断类型号,在中断向量表中得到中断服务程序的入口地址,这种方式的中断源一般比较多。固定方式识别中断或获取中断服务入口地址时,中断源对应的地址是固定的,这种方式的中断源一般比较少。如MCS-51单片机的五个中断源(外部中断0、定时器/计数器0溢出、外部中断1、定时器/计数器1溢出、串行口中断)对应的中断服务程序入口地址(ROM中)分别为0003H、000BH、0013H、001BH、0023H。

4.中断嵌套

在实际应用系统中,当CPU正在处理某个中断源,即正在执行中断服务程序时,会出现优先级更高的中断源申请中断。为了使级别高的中断源及时得到服务,需要暂时中断(挂起)当前正在执行的级别较低的中断服务程序,待处理完以后再返回到被中断了的中断服务程序继续执行,但级别相同或级别低的中断源不能中断级别高的中断服务,这就是所谓的中断嵌套。MCS-51系列单片机能实现二级中断嵌套。中断嵌套过程如图5-2所示。图5-2中断嵌套过程示意图

5.中断优先级及排队

当系统有多个中断源时,就可能出现同时有几个中断源申请中断,而CPU在一个时刻只能响应并处理一个中断请求,为此,要进行排队。排队的方式有:

(1)按优先级排队。根据任务的轻重缓急,给每个中断源指定CPU响应的优先级,任务紧急的先响应,可以暂缓的后响应。排了优先级后,当有多个中断源申请中断时,CPU先响应并处理优先级别最高的中断申请。

(2)循环轮流排队。不分级别高低,所有中断源优先级都一律平等,CPU轮流响应各个中断源的中断请求。

MCS-51单片机优先级比较简单,只有两级,可以通过优先级控制寄存器设置不同的优先级。

2.MCS-51单片机中断系统的内部结构

中断系统内部含外部触发方式、中断标志位、中断控制位和优先级控制位等控制电路,如图5-3所示。每一个中断源都对应有一个中断请求标志位,它们设置在特殊功能寄存器TCON和SCON中。当这些中断源请求中断时,分别由TCON和SCON中的相应位来锁存。中断是否允许,由中断允许控制寄存器IE来设定,各中断源的优先级由IP寄存器来控制。图5-3MCS-51单片机中断系统内部结构5.2.2MCS-51单片机与中断有关的特殊功能寄存器

1.中断标志寄存器

1)定时器控制寄存器TCON

TCON是定时器/计数器0和1(T0、T1)的控制寄存器,它同时也用来锁存T0、T1的溢出中断请求源和外部中断请求源。字节地址为88H,位地址是88H~8FH(TCON.0~TCON.7)。TCON寄存器中与中断有关的位如下所示。

2)串行口控制寄存器SCON

串行口控制寄存器SCON中的低2位用作串行口中断标志,字节地址为98H,位地址为98H~9FH(SCON.0~SCON.7),其格式如下:各位含义如下:

①RI:串行口接收中断标志位。在串行口方式0中,每当接收到第8位数据时,由硬件置位RI;在其他方式中,当接收到停止位的中间位置时置位RI。注意,当CPU转入串行口中断服务程序入口时不复位RI,必须由用户用软件来使RI清零。

②TI:串行口发送中断标志位。在方式0中,每当发送完8位数据时由硬件置位TI;在其他方式中于停止位开始时置位。TI也必须由软件来复位。

RI、TI的中断入口都是0023H,所以CPU响应后转入0023H开始执行服务程序,首先必须判断是RI中断还是TI中断,然后进行相应服务。在返回主程序之前必须用软件将RI或TI清除,否则会出现一次请求多次响应的错误。

与串行中断有关的是RI和TI(SCON.0、SCON.1),其他位的功能与使用请参阅第7章。

2.中断允许控制寄存器IE

在MCS-51中断系统中,中断允许或禁止是由片内的中断允许寄存器IE(IE为特殊功能寄存器)控制的,字节地址为0A8H,位地址是0A8H~0AFH(IE.0~IE.7),其格式如下:

IE中的各位功能如下:

①EA:CPU中断允许位。EA=0,CPU禁止所有中断,即CPU屏蔽所有的中断请求;EA=1,CPU开放中断。但每个中断源的中断请求是允许还是被禁止,还需由各自的允许位确定(见D4~D0位说明)。

②ES:串行口中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。

③ET1:定时器/计数器1(T1)的溢出中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。

④EX1:外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。⑤ET0:定时器/计数器0(T0)的溢出中断允许位。ET0=1,允许T0中断;ET0=0,禁止T0中断。

⑥EX0:外部中断0中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。

中断允许寄存器中各相应位的状态,可根据要求用指令置位或清零,从而实现该中断源允许中断或禁止中断,复位时IE寄存器被清零。

3.中断优先级控制

1)中断优先级控制寄存器IP

MCS-51中断系统提供两个中断优先级,每一个中断请求源都可以设置为高优先级中断源或低优先级中断源,以便实现二级中断嵌套。中断优先级是由片内的中断优先级寄存器IP(特殊功能寄存器)控制的,字节地址为B8H,位地址为B8H~BCH(IP.0~IP.4),其格式如下:

IP中的各位功能如下:

①PS:串行口中断优先级控制位。PS=1,串行口定义为高优先级中断源;PS=0,串行口定义为低优先级中断源。

②PT1:T1中断优先级控制位。PT1=1,定时器/计数器1定义为高优先级中断源;PT1=0,定时器/计数器1定义为低优先级中断源。

③PX1:外部中断1中断优先级控制位。PX1=1,外中断1定义为高优先级中断源;PX1=0,外中断1定义为低优先级中断源。④PT0:定时器/计数器0(T0)中断优先级控制位,功能同PT1。

⑤PX0:外部中断0中断优先级控制位,功能同PX1。

中断优先级控制寄存器IP中的各个控制位都可由编程来置位或复位(用位操作指令或字节操作指令),单片机复位后IP中各位均为0,各个中断源均为低优先级中断源。

2)中断优先级结构

MCS-51中断系统具有两级优先级(由IP寄存器把各个中断源的优先级分为高优先级和低优先级),它们遵循下列两条基本规则:

(1)低优先级中断源可被高优先级中断源所中断,而高优先级中断源不能被任何中断源所中断;

(2)一种中断源(不管是高优先级或低优先级)一旦得到响应,与它同级的中断源不能再中断它。为了实现上述两条规则,中断系统内部包含两个不可寻址的优先级状态触发器。其中一个用来指示某个高优先级的中断源正在得到服务,并阻止所有其他中断的响应;另一个触发器则指出某低优先级的中断源正得到服务,所有同级的中断都被阻止,但不阻止高优先级中断源。

当同时收到几个同一优先级的中断时,响应哪一个中断源取决于内部查询顺序。对于8051单片机约定5个中断源优先级顺序由高到低分别为:外部中断0、定时器/计数器0溢出、外部中断1、定时器/计数器1溢出、串行口中断。5.3MCS-51单片机的中断响应与撤销5.3.1MCS-51单片机的中断响应

1.中断响应过程

CPU在每个机器周期的S5P2时刻采样中断标志,而在下一个机器周期对采样到的中断进行查询。如果在前一个机器周期的S5P2有中断标志,则在查询周期内便会查询到并按优先级高低进行中断处理,中断系统将控制程序转入相应的中断服务程序。下列三个条件中任何一个都能封锁CPU对中断的响应:

(1) CPU正在处理同级的或高一级的中断;

(2)现行的机器周期不是当前所执行指令的最后一个机器周期;

(3)当前正在执行的指令是返回(RETI)指令或是对IE或IP寄存器进行读/写的指令。上述三个条件中,第二条是保证把当前指令执行完,第三条是保证如果在当前执行的是RETI指令或是对IE、IP进行访问的指令时,必须至少再执行完一条指令之后才会响应中断。

中断查询在每个机器周期中重复执行,所查询到的状态为前一个机器周期的S5P2时采样到的中断标志。这里要注意的是,如果中断标志被置位,但因上述条件之一的原因而未被响应,或上述封锁条件已撤销,但中断标志位已不存在(已不是置位状态)时,被拖延的中断就不再被响应,CPU将丢弃中断查询的结果。也就是说,CPU对中断标志置位后,如未及时响应而转入中断服务程序的中断标志不做记忆。

CPU响应中断时,先置相应的优先级激活触发器,封锁同级和低级的中断。然后根据中断源的类别,在硬件的控制下,程序转向相应的向量入口单元,执行中断服务程序。

硬件调用中断服务程序时,把程序计数器PC的内容压入堆栈(但不能自动保存程序状态字PSW的内容),同时把被响应的中断服务程序的入口地址装入PC中。五个中断源服务程序的入口地址是:通常,在中断入口地址处安排一条跳转指令,以跳转到用户的服务程序入口。

中断服务程序的最后一条指令必须是中断返回指令RETI,CPU执行完这条指令后把响应中断时所置位的优先级激活触发器清零,然后从堆栈中弹出两个字节内容(断点地址)装入程序计数器PC中,CPU就从原来被中断处重新执行被中断的程序。如果中断请求被前面所述的三个条件之一所封锁,将需要更长的响应时间。若一个同级的或高优先级的中断已经在进行,则延长的等待时间显然取决于正在处理的中断服务程序的长度,如果正在执行的一条指令还没有进行到最后一个周期,则所延长的等待时间不会超过3个机器周期。这是因为MCS-51指令系统中最长的指令(MUL和DIV)也只有4个机器周期,假若正在执行的是RETI指令或者是访问IE或IP指令,则延长的等待时间不会超过5个机器周期(为完成正在执行的指令还需要1个周期,加上为完成下一条指令所需要的最长时间——4个周期,如MUL和DIV指令)。

因此,在系统中只有一个中断源的情况下,响应时间总是在3~8个机器周期之间。5.3.2MCS-51单片机对中断请求的撤销

在中断请求被响应前,中断源发出的中断请求是由CPU锁存在特殊功能寄存器TCON和SCON的相应中断标志位中的。一旦某个中断请求得到响应,CPU必须把它的相应中断标志位复位成“0”状态。否则,MCS-51就会因为中断标志位未能得到及时撤销而重复响应同一中断请求,这是绝对不允许的。

8051单片机有5个中断源,可归纳为三种中断类型,分别是定时器溢出中断、串行口中断和外部中断。对于这三种中断类型的中断请求,其撤销方法是不相同的,现对它们分述如下。

1)定时器溢出中断请求的撤销

TF0和TF1是定时器溢出中断标志位(见TCON),它们因定时器溢出中断源的中断请求的输入而置位,因定时器溢出中断得到响应而自动复位成“0”状态。因此,定时器溢出中断源的中断请求是自动撤销的,用户根本不必专门进行撤销。

2)串行口中断请求的撤销

TI和RI是串行口中断的标志位(见SCON),中断系统不能自动将它们撤销,这是因为MCS-51进入串行口中断服务程序后还需要对它们进行检测,以测定串行口发生了接收中断还是发送中断。为防止CPU再次响应这类中断,用户应在中断服务程序的适当位置处通过如下指令将它们撤销:

CLRTI ;撤销发送中断

CLRRI ;撤销接收中断

若采用字节型指令,则也可采用如下指令:

ANLSCON,#0FCH ;撤销发送和接收中断图5-4电平外部中断的撤销电路当接在P3.4引脚上的外部中断请求输入线发生负跳变时,TL0加1溢出,TF0被置1,向CPU发出中断请求。同时TH0的内容自动送入TL0,使TL0恢复初始值0FFH。这样,每当P3.4引脚上有一次负跳变时都置1于TF0,向CPU发中断请求,P3.4引脚就相当于边沿触发的外部中断请求源输入线。同理,也可以把P3.5引脚作类似的处理。

有关单片机定时器/计数器的内容,参见本书第6章。

2.采用中断和查询相结合的方法扩充外部中断源

这种方法是把系统中多个外部中断源经过与门连接到一个外部中断

温馨提示

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

评论

0/150

提交评论