您好,欢迎访问三七文档
1.中断的基本概念2.MCS-51的中断系统3.中断源和中断标志4.中断的允许和优先权5.中断的处理过程6.外部中断源的扩展7.中断的应用第章中断与中断系统本章内容SingleChipMicrocomputer中断的基本概念日常生活中断的例子单片机中的中断概念中断技术的优点日常中断的例子返回你正在专心看书,突然电话铃响,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。计算机中的中断概念返回中断是指由于某种随机事件的发生,计算机暂停现行程序的运行,转去执行另一程序,以处理发生的事件,处理完毕后又自动返回原来的程序继续运行。将能引起中断的事件称为中断源。CPU现行运行的程序称为主程序。处理随机事件的程序称为中断服务子程序。中断技术的优点分时操作——CPU可以同多个外设“同时”工作实时处理——CPU及时处理随机事件故障处理——电源掉电、存储出错、运算溢出MCS-51中断系统中断源中断标志中断允许中断优先级MCS-51中断系统结构中断寄存器MCS-51的中断系统——中断源8051单片机有5个中断请求源:单片机INT0或外部输入中断源INT0(P3.2)INT1或外部输入中断源INT1(P3.3)T0片内定时器T0的溢出T1片内定时器T1的溢出串行口片内串行口发送或接收中断源MCS-51的中断系统——中断标志CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中断源中断标志位每一个中断源都有相应的中断标志位;某一个中断源申请中断,相应中断标志位置1。MCS-51的中断系统——中断允许CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中断源中断标志位EA——总中断允许位,EA=1开放所有中断,EA=0,禁止所有中断;某一个中断源还有相应的中断允许位,1允许相应中断源的中断,0禁止相应中断源的中断。中断允许ESET0EX0EX1ET1EAMCS-51的中断系统——中断优先级CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TISI中断源中断标志位单片机中有两个中断优先级,即高优先级中断和低优先级中断,前者优先权高于后者(在程序中设置,相应位=1,为高优先级);同一优先级别的中断源按照自然优先级顺序确定优先级别(硬件形成,无法改变)。中断允许ESET0EX0EX1ET1EA自然优先级高低优先控制PSPT0PX0PX1PT1IE0TCONSCONINT0IT0=0IT0=1INT1IT1=0IT1=1TF0IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然优先级矢量地址高级中断请求自然优先级矢量地址低级中断请求PX0PT0PX1PT1PSIEIPMCS-51的中断系统结构图中断标志位中断源允许总允许中断优先级TCON寄存器——T0和T1控制寄存器TF1TF0IE1IT1IE0IT0TCONT1溢出中断标志(TCON.7):T1启动计数后,计满溢出由硬件置位TF1=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。76543210TF1TF0IE1IT1IE0IT0TCON88H外部中断INT1中断标志位(TCON.3):IE1=1,外部中断1向CPU申请中断外部中断INT1触发方式控制位(TCON.2):IT1=0,电平触发方式IT1=1,下降沿触发方式76543210TCON寄存器——T0和T1控制寄存器注意:该寄存器可以位寻址。返回TI(SCON.1)——串行发送中断标志。RI(SCON.0)——串行接收中断标志。TIRISCON寄存器——串行口控制寄存器SCON98H76543210注意:该寄存器可以位寻址。IE寄存器——中断允许寄存器IEA8HEAESET1EX1ET0EX0例:允许定时器T0中断:SETBEASETBET0或MOVIE,#82H76543210注意:该寄存器可以位寻址。51单片机有两个中断优先级——高级和低级专用寄存器IP为中断优先级寄存器,用户可用软件设定相应位为1,对应的中断源被设置为高优先级,相应位为0,对应的中断源被设置为低优先级系统复位时,均为低优先级该寄存器可以位寻址PSPT1PX1PT0PX0IP寄存器——中断优先级寄存器IPB8H76543210中断处理过程中断处理过程分为三个阶段:中断响应、中断处理和中断返回。中断响应中断处理(又称中断服务)中断返回中断请求的撤除中断响应中断返回中断响应(以外部中断0为例)中断响应:在满足CPU的中断响应条件之后,CPU对中断源中断请求予以处理。中断响应过程:保护断点地址;中断响应把程序转向中断服务程序的入口地址(通常称矢量地址)。特别注意:这些工作是硬件自动完成的!断点地址中断服务子程序的入口地址外部中断0入口地址0003ZD0AJMPORG0003HAJMPZD0ZD0中断响应中断服务子程序入口地址又称为中断矢量或中断向量。中断响应单片机中5个中断源的矢量地址是固定的,不能改动。断点地址中断服务子程序的入口地址程序存储器ROM0000H:复位后,程序的入口地址(PC=0000H)0023H:串行口中断入口0003H:外部中断0入口000BH:定时器0溢出中断入口0013H:外部中断1入口001BH:定时器1溢出中断入口002AH使用时,通常在这些入口地址处存放一条跳转指令,使程序跳转到用户安排的中断服务程序起始地址上去!程序存储器ROM0000H:复位后,程序的入口地址(PC=0000H)0023H:串行口中断入口0003H:外部中断0入口000BH:定时器0溢出中断入口0013H:外部中断1入口001BH:定时器1溢出中断入口002AH包含T0中断服务子程序的程序结构:ORG0000HAJMPMAINORG000BHAJMPINTT0ORG0100HMAIN:...INTT0:...RETIENDAJMPMAINAJMPINTT0中断处理中断服务程序从中断子程序入口地址开始执行,直到返回指令RETI为止,这个过程称为中断处理(或中断服务)。中断服务子程序一般包括两部分内容,一是保护和恢复现场,二是处理中断源的请求。中断响应入口地址RETI中断处理INTT0:PUSHACCPUSHDPHPUSHDPLPUSHPSW中断源服务POPPSWPOPDPLPOPDPHPOPACCRETI保护现场恢复现场中断返回中断返回是指中断服务完后,计算机返回到原来暂停的位置(即断点),继续执行原来的程序。中断返回由专门的中断返回指令RETI来实现。中断响应中断返回中断返回RETI指令功能:把断点地址取出,送回到程序计数器PC中去。另外,它还通知中断系统已完成中断处理,将清除优先级状态触发器。特别注意:不能用RET指令代替RETI指令!中断响应中断返回中断处理过程示意图中断源发中断请求中断响应条件是否满足?中断是否受阻?把PC断点地址压入堆栈相应中断源的中断入口地址送入PC,转向中断服务程序NYYN由硬件自动完成关中断保护现场中断服务开中断关中断恢复现场开中断中断返回断点地址由堆栈弹入PC保护现场和恢复现场的过程中不允许中断,以免现场遭到破坏。保护和恢复现场之后的开中断是为了允许有更高级中断打断此中断服务程序。中断服务程序硬件自动完成中断响应时间在实时控制系统中,为了满足控制速度要求,常要弄清CPU响应中断所需的时间。中断响应时间是指从查询中断请求标志位到转向中断服务程序入口地址所需的机器周期数,一般是3-8个机器周期。响应中断最短时间是:CPU查询中断标志的周期正好是执行一条指令的最后一个机器周期(占用一个机器周期),此后,不需等待即可响应中断,硬件自动生成并执行LCALL指令(需要2个机器周期),所以总共需要3个机器周期。响应中断最长时间是:CPU查询中断标志时,正好是开始执行RETI或访问IE、IP的指令,此时,需要把当前指令执行完再继续执行一条指令后,才能响应中断。执行前者最长需2个机器周期,而执行后者最长需4个机器周期(如乘、除指令),再加上执行长调用指令LCALL所需2个机器周期,总共需要8个机器周期。通常,中断响应时间可以不予考虑,但在某些需要精确定时的场合,应作出调整,以保证精确的定时。中断请求的撤除在中断请求被响应前,中断源发出的中断请求是由CPU锁存在特殊功能寄存器TCON和SCON的相应中断标志位中的。一旦某个中断请求得到响应,CPU必须把它的相应标志位复位成“0”状态。否则,MCS51就会因中断未能得到及时撤除而重复响应同一中断请求,这是绝对不能允许的。五个中断源只分属于三种中断类型。这三种类型是:外部中断、定时器溢出中断和串行口中断。对于这三种中断类型的中断请求,其撤除方法是不同的。一、定时器溢出中断请求的撤除定时器溢出中断源的中断请求是自动撤除的,用户根本不必专门为它们撤除。二、串行口中断请求的撤除TI和RI是串行口中断的标志位,中断系统不能自动将它们撤除,这是因为MCS51进入串行口中断服务程序后常需要对它们进行检测,以测定串行口发生了接收中断还是发送中断。为了防止CPU再次响应这类中断,用户应在中断服务程序的适当位置处通过如下指令将它们撤除:CLRTI;撤除发送中断CLRRI;撤除接收中断若采用字节指令,则也可采用如下指令:ANLSCON,#0FCH;撤除发送和接收中断三、外部中断的撤除外部中断请求有二种触发方式:电平触发和负边沿触发。对于这两种不同的中断触发方式,MCS51撤除它们的中断请求的方法是不相同的。在负边沿触发方式下外部中断标志IE0和IE1是依靠CPU两次检测INT0和INT1上触发电平状态而置位的。因此,芯片设计者使CPU在响应中断时自动复位IE0和IE1,以撤除INT0或INT1上的中断请求。在中断服务时,既然INT0或INT1停留在低电平,就不会再产生负边沿而使相应中断标志位IE0或IE1置位。在电平触发方式下外部中断标志IE0和IE1是依靠CPU检测INT0或INT1上低电平而置位的。尽管CPU响应中断时相应中断标志IE0或IE1,能自动复位成“0”状态,但若外部中断源不能及时撤除它在INT0或INT1上低电平就会再次使已经变“0”的中断标志IE0或IE1置位,这是绝对不能允许的。因此,电平触发型外部中断请求的撤除必须使INT0或INT1上低电平随着其中断被CPU响应而变为高电平。外部中断信号8031INT0P1.0QDSdCP1电平型外部中断的撤除电路当外部中断源产生中断请求时,D触发器复位成“0”状态,Q端的低电平被送到INT0端,该低电平被8031检测到后就使中断标志IE0置1。8031响应INT0上中断请求便可转入INT0中断服务程序执行,故可以在中断服务程序开头安排如下程序来撤除INT0上的低电平。INSVR:ORLP1,#01HANLP1,#0FEHCLRIE0END8031执行上述程序就可在P1.0上产生一个宽度为二个机器周期的负脉冲。在该负脉冲作用下,D触发器被置位成“1”状态,INT0上电平也因此而变高,从而撤除了其上的中断请求。中断系统的初始化中断系统初始化就是用户对管理中断系统的特殊功能寄存器中的各控制位进行赋值。中断系统初始化步骤如下:(1)开相应中断源的中断;(2)设定所有中断源的中断优先级;(3)若为外部中断,则应规定低电平还是负边沿的中断触发方式。〔举例〕请写出INT0为低电平触发的中断系统初始化程序。解:①采用位操作指令SETBEASETBEX0;开INT0中断SETBPX0;令INT0为高优先级CLRIT0;令INT0为电平触发②采用字节型指令MOVIE,#81H;开INT0中断ORLIP,#01H;令INT0为高优先级ANLTCON,#0FEH;令INT0为电平触发外部中断源的扩展单片机仅有两个外部中断输入端.可用两种方法扩展:1.定时器T0,T1。(工作在计数方式下)2.中断和查询结合。1.用
本文标题:第四章 中断
链接地址:https://www.777doc.com/doc-3224571 .html