第五章-AT89S51中断系统_第1页
第五章-AT89S51中断系统_第2页
第五章-AT89S51中断系统_第3页
第五章-AT89S51中断系统_第4页
第五章-AT89S51中断系统_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

第五章

AT89S51的中断系统5.1

中断概述5.2中断系统结构5.3中断的应用及编程§5.1中断概述什么叫中断?在日常生活中:中断即中途打断某一正在进行的工作,而去处理另外的紧急事件,待处理完后,再继续原来的工作。在计算机中:计算机在运行某个进程的过程中,由于其他原因,有必要中止正在执行的进程,而去执行引起中断的事件进程,待处理完毕后,再回到被中止进程的被打断的地方继续执行,这种情况称为“中断”。中断的定义简单说:

中断是指计算机暂时停止原程序的执行转而执行中断服务程序,并在服务完成后自动返回原程序的过程。执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回日常生活中的中断与计算机中断的比较:某人看书 执行主程序 日常事务电话铃响 中断信号如INT0=0

中断请求暂停看书

暂停执行主程序中断响应书中作记号当前PC入栈 保护断点电话谈话 执行中断程序 中断服务继续看书 返回主程序 中断返回中断的作用

可以说,没有中断技术,就没有现在的计算机的高速发展和应用,现在的计算机正是利用中断技术改善机器性能和提高计算机的处理能力的。由于采用了中断技术,解决了快速CPU和慢速外设之间的矛盾;使得计算机能够及时处理控制系统中许多随机发生的突发事件;具备了处理故障的能力,提高了自身的可靠性;具有了并行运行多个任务的能力。§5.2AT89S51的中断系统

5.2.1中断请求源

5.2.2中断控制

5.2.3中断处理过程

5.2.4中断嵌套

5.2.5中断请求的撤除是指能够实现中断功能的那部分硬件电路和软件程序。对AT89S51的中断系统用一句话讲叫:

“五源中断,两级管理”5.2.1中断请求源(“五源中断”)

8051的五个中断源:

外部中断

:INT0(由P3.2输入)(2个)INT1(由P3.3输入)内部中断:片内定时/计数器T0

(3个)

片内定时/计数器T1

片内串行口中断请求AT89S51P0口地址和数据总线P1口通用口P2口地址总线P3口RXDTXDINT0INT1T0T1WRRDVCCVSSRSTEA/VPPPSENALE/PROGXTAL1XTAL2

XTAL1输入端

XTAL2输出端2.时钟引脚引脚转义引脚功能说明P3.0RXD串行数据接收端P3.1TXD串行数据发送端P3.2INT0外部中断0请求P3.3INT1外部中断1请求P3.4T0定时/计数器0外部输入P3.5T1定时/计数器1外部输入P3.6WR外部数据存储器写选通P3.7RD外部数据存储器读选通

P3口第二功能:图2-1

AT89S51单片机片内结构AT89S51的硬件组成单片机INT0或INT1或T0T1串行口外部中断内部中断电平触发跳变触发/有了中断请求,如何通知CPU?通过中断请求标志位来通知CPU外部中断源、定时/计数器的中断请求标志位分布在定时器控制寄存器TCON中串行口中断标志位分布在串行口控制寄存器SCON中D7D6D5D4D3D2D1D0TF1TF0IE1IT1IE0IT0中断请求标志触发方式选择0低电平1下降沿1.定时器控制寄存器TCONTCONIT0:外部中断0触发类型控制位

IT0=0时:INT0低电平触发(电平触发)IT0=1时:INT0负边沿触发(跳变触发)IT1:外部中断1触发类型控制位用法同IT0

注:IT0,IT1可由软件置“1”或清“0”。D7D6D5D4D3D2D1D0TF1TF0IE1IT1IE0IT0TCONIE0:外部中断0请求标志当IT0=0即电平触发方式时,每个机器周期的S5P2采样INT0,若INT0为低电平,将直接触发外部中断;当IT0=1即边沿触发方式时,当第一个机器周期采样到INT0为高电平,第二个机器周期采样到INT0为低电平时,由硬件置位IE0,并以此来向CPU请求中断,当CPU响应中断,转向中断服务程序时由硬件清零IE0。IE1:外部中断1请求标志,用法同IE0TR0:

定时器T0的启停控制位,由软件置位/清除来控制其开启/关闭。若使TR0=1,则定时器T0开始计数;若使TR0=0,则定时器T0停止计数。TR1:

定时器T1的启停控制位,用法同TR0。D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TCONTF0:定时/计数器0溢出中断请求标志位在启动T0计数后,定时/计数器0从初值开始加1计数,当最高位产生溢出时,由硬件置位TF0,向CPU申请中断,CPU响应TF0中断后清零该标志位,TF0也可用软件清零(查询方式)。TF1:定时/计数器1溢出中断请求标志位D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TCON2.串行口控制寄存器SCON串行口中断分为两种:串行口发送中断串行口接收中断D7D6D5D4D3D2D1D0TIRI串行中断请求标志SCONTI=1:有发送中断RI=1:有接收中断5.2.2中断控制(“两级管理”)对中断允许的控制:中断允许控制寄存器IE

对中断优先级的控制:中断优先级控制寄存器IP

D7D6D5D4D3D2D1D0EAESET1EX1ET0EX00禁止,1允许D7D6D5D4D3D2D1D0PSPT1PX1PT0PX00低级别,1高级别总的开关中断控制位EA:EA=0:所有中断请求被屏蔽。

EA=1:CPU开放中断,但五个中断源的中断请求是否允许,还要由IE中的5个中断请求允许控制位决定。1.中断允许控制寄存器IED7D6D5D4D3D2D1D0EAESET1EX1ET0EX0IE(1)EA:中断允许总控制位

0:CPU屏蔽所有的中断请求;

1:CPU开放所有中断。(2)ES:串行口中断允许位

0:禁止串行口中断;

1:允许串行口中断。(3)ET1:定时/计数器T1的溢出中断允许位

0:禁止T1溢出中断;

1:允许T1溢出中断。

D7D6D5D4D3D2D1D0EAESET1EX1ET0EX0IE(4)EX1:外部中断1中断允许位

0:禁止外部中断1中断;

1:允许外部中断1中断。(5)ET0:定时/计数器T0的溢出中断允许位

0:禁止T0溢出中断;

1:允许T0溢出中断。(6)EX0:外部中断0中断允许位。

0:禁止外部中断0中断;

1:允许外部中断0中断。

D7D6D5D4D3D2D1D0EAESET1EX1ET0EX0IE

1:高优先级中断

0:低优先级中断

(1)PS—串行口中断优先级控制位

(2)PT1—定时器T1中断优先级控制位(3)PX1—外部中断1中断优先级控制位(4)PT0—定时器T0中断优先级控制位(5)PX0—外部中断0中断优先级控制位2.中断优先级控制寄存器IPD7D6D5D4D3D2D1D0PSPT1PX1PT0PX0IP为什么要有中断优先级?CPU同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求,就必须有先有后。为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。若同时来了两个或两个以上优先级相同的中断请求时,则由“同级内的中断优先顺序”确定。

中断源中断标志优先级顺序

INT0IE0最高定时器T0TF0INT1IE1

定时器T1TF1串行口中断TI或RI最低出现同级中断请求时按以下顺序:中断优先原则:(概括为四句话)1、低级不打断高级2、高级不睬低级3、同级不能打断4、同级同时中断,事先约定MCS-51中断系统内部结构

5.2.3中断处理过程中断处理过程可分为四个阶段:(一)中断采样(二)中断查询

(三)中断响应(四)中断返回(一)中断采样

采样是中断处理的第一步,主要针对外部中断请求信号。所谓采样,就是在每个机器周期的S5P2期间对INT0和INT1引脚进行检测,根据检测的结果,设置相应中断标志位IE0或IE1的状态。(二)中断查询

MCS-51系列单片机,在每个机器周期的最后一个状态S6期间,都要按先后顺序对各个中断标志位进行查询,以确定是否有中断发生。若有则在下个机器周期S1期间按优先级进行中断处理。

中断查询由硬件自动完成,查询顺序:

IE0(外部中断0)→TF0(T0)→IE1(外部中断1)→TF1(T1)

→RI和TI(串行口收发中断)(三)中断响应中断响应就是对中断源提出的中断请求的接受,当CPU查询到有效的中断请求时,紧接着就进行中断的响应。1.中断响应的条件:

1)有中断源发出中断请求2)系统处于开中断状态,即EA=13)申请中断的中断源中断允许,即相应的中断允许标志位为1。

1)CPU正处理相同级别或更高级别的中断;

2)正在执行指令还未到最后一个机器周期;

3)正在执行的指令是RETI或访问IP、IE指令,则执行完上述指令后,还应再执行一条指令,才会响应新中断。响应的具体条件:满足以上条件时,CPU一般会响应中断。但如果有下列情况之一时,中断响应被暂时搁置,中断查询结果即被取消。2.中断响应过程中断响应过程包括保护断点和将程序转向中断服务程序的入口地址。具体过程如下:首先,中断系统通过硬件自动生成长调用指令(LCALL),该指令将自动把断点地址压入堆栈保护。然后,将对应的中断入口地址装入PC,使程序转向该中断入口地址,执行中断服务程序。单片机的中断为固定入口式中断,即一响应中断就转入固定入口地址执行中断服务程序。具体入口如下:中断源入口地址INT00003HT0000BHINT10013HT1001BHRI/TI0023H在这些单元中往往是一些跳转指令,跳到真正的中断服务程序,这是因为给每个中断源安排的空间只有8个单元。

3.中断处理中断处理就是执行中断服务程序。中断服务程序从中断入口地址开始执行,到返回指令RETI为止。一般包括两部分内容:一是保护现场,二是完成中断源请求的服务。保护现场包括保护:累计器A、PSW、及其他一些寄存器。4.中断响应时间所谓中断响应时间是指:CPU检测到中断请求信号到转入中断服务程序入口所需要的机器周期数。MCS-51单片机响应中断的最短时间为3个机器周期,时间最长需要8个机器周期。

(1)最快响应时间以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序需要三个机器周期:

1个周期(查询)+2个周期(长调用LCALL)(2)最长时间若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期:2个周期执行当前指令(其中含有1个周期查询)+4个周期乘除指令+2个周期长调用=8个周期。为什么要计算中断响应时间?

关系到MCS-51对外中断的响应速度,在系统设计中十分重要。中断响应时间是选择处理器的指标!(四)中断返回RETI指令是专用于中断服务程序的返回指令,占两个机器周期。RETI指令的作用:除正确返回中断断点处继续执行主程序外,并告之中断系统,表示已结束中断服务程序的执行,恢复中断逻辑可以接受新的中断请求。中断源发中断请求中断响应条件满足中断受阻把PC断点地址压入堆栈相应中断源的入口地址送PCYNYN硬件自动完成中断处理流程保护现场和恢复现场的过程中不允许中断,以免现场遭到破坏。保护和恢复现场之后的开中断是为了允许有更高级中断打断此中断服务程序。

5.2.4中断嵌套

在某一瞬间,CPU因响应某一中断源的中断请求而正在执行它的中断服务程序时,若CPU此时的中断是开放的,那它必然可以把正在执行的中断服务程序暂停下来转而响应和处理中断优先权更高中断源的中断请求,等到处理完后再转回继续执行原来的中断服务程序,这就是中断嵌套。

中断嵌套的先决条件:1.中断服务程序开头应设置一条开中断指令。

(因为CPU会因响应中断而自动关闭中断)2.要有中断优先权更高的中断请求存在。两者缺一不可,都是实现中断嵌套的必要条件。MCS-51中断嵌套示意图5.2.5中断请求的撤除

CPU响应某中断请求后,在中断返回前应撤除该中断请求,否则会引起另一次中断。

1.

定时/计数器中断请求的撤除:由硬件电路自动撤除的

2.

串行口中断请求的撤除:

要靠软件来清除相应的标志

3.

外部中断请求的撤除:(分两种情况)

﹡边沿触发:自动撤除

﹡电平触发:硬件、软件相配合当外部请求为电平触发方式时,IE1或IE0是依靠检测INT0或INT1引脚上的低电平而置位的。尽管CPU在响应中断时IE1或IE0被自动复位“0”,但如果外部中断源不能及时撤除在INT0或INT1引脚上的低电平,就会再次置位IE1或IE0

而在硬件上,CPU对INT0和INT1引脚的信号不能控制,所以这个问题要通过硬件,再配合软件来解决。§5.3中断的应用及编程

[例1]若要求外部中断INT1引脚为边沿触发方式,以及处于高中断优先级,编写中断系统初始化程序。

解:程序的编制有两种方法:采用位操作指令进行编制:

SETBbit或CLRbit

字节型指令编制

方法一:

SETBEA;开中断

SETBEX1;开INT1中断

SETBPX1;令INT1为高优先级

SETBIT1;令INT1为边沿触发方式

方法二:

MOVIE,#84H;开INT1中断

ORL IP, #04H;令INT1为高优先级

ORLTCON,#04H;令INT1为边沿触发方式例2:利用8031的外部中断,实现单步操作。INT08031+5V1KΩ硬件组成:单步操作的工作原理:(1)根据MCS-51单片机中断系统的一个重要特性:在执行完中断处理程序的RETI指令后,必须返回主程序执行一条指令,然后才能响应新的中断。

(2)因此,在硬件电路上,只需通过按键或微动开关,实现按键弹起为高电平,按下为低电平,将此信号与INTx引脚相连,且设为电平触发方式。当按下按键产生低电平,经INTx请求中断,主机响应中断,进入中断服务程序,等待从INTx引脚上接收到一个脉冲(从低→高→低),才结束中断服务程序,返回主程序并执行完一条指令后,又立即进入INTx中断服务程序,等待下一个脉冲的到来。(3)不断按键,反复产生脉冲,就可以单步方式执行完整个程序段。初始化程序为:CLR IT0;外部中断0为电平触发SETBEA;CPU开中断SETBPX0;外部中断0置为高优先级SETBEX0;允许外部中断0中断

外部中断0的中断服务程序为:

JNB P3.2,$;INT0为低电平等待JB P3.2,$;INT0为高电平等待RETI

练习:试编写一段对中断系统初始化的程序,使之允许、T1

温馨提示

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

评论

0/150

提交评论