单片微型计算机原理与接口技术 - 高锋版 - 课后答案全集 联系客服

发布时间 : 星期二 文章单片微型计算机原理与接口技术 - 高锋版 - 课后答案全集更新完毕开始阅读dde32b29763231126edb114b

③中断响应:响应中断后,由硬件自动生成长调用指令LCALL,其格式为“LCALL addrl 6”,而addrl 6就是各中断源的中断矢量地址。首先将程序计数器PC的内容压人堆栈进行保护,先压入PC低8位地址,后压人PC高8位地址,同时堆栈指针SP加2。将对应中断源的中断矢量地址装入程序计数器PC,使程序转向该中断矢量地址,去执行中断服务程序。 ④中断服务子程序:由中断矢量地址开始,执行子程序,直到遇到中断返回指令RETI为止。 ⑤中断返回:执行指令RETI,撤消中断申请,把断点地址从堆栈弹出送人PC。先弹出PC高8位地址,后弹出PC低8位地址,同时堆栈指针SP减2。程序从断点处恢复执行。 【5-4】什么是单片机的中断优先级?中断优先级处理的原则是什么?

【答】在一个单片机系统中往往允许有多个中断源,通常给每个中断源规定了优先级别,称为“优先权\或“中断优先级’’。

当单片机同时接收到两个或多个不同优先级的中断请求时,先响应高优先级的中断。如果同时接收到的是几个同一优先级的中断请求,则由内部的硬件查询序列确定它们的优先服务次序,当服务结束后,再响应级别较低的中断源。

在80C51单片机中有高、低两个中断优先级,通过中断优先级寄存器IP来设定。 在80C51单片机中存在同一优先级内由内部硬件查询序列确定的第二个优先级结构。 其排列如下:

中断源 中断优先级 外部中断0 最高 定时器T0中断 外部中断1

定时器T1中断 串行口中断

定时器T2中断 最低 【5-5】外部中断请求有哪两种触发方式?对跳变触发和电平触发信号有什么要求?如何选择和设置?

【答】外部中断请求有两种信号触发方式,即电平有效方式和跳变有效方式,可通过设置有关控制位进行定义。

当设定为信号电平有效方式时,若INT0或INT1引脚上采样到有效的低电平,则提出中断请求;当设定为信号跳变有效方式时,若INT0或INT1引脚上采样到有效负跳变,则提出中断请求。 ’

①INT0(P3.2)—一外部中断O。

当IT0(TCON.O)=0 时,信号触发方式为低电平有效;当IT0(TCON.O)=1时,信号触发方式为下降沿有效。

②INTI(P3.3)——外部中断1。

当ITI(TCON.2)=0时,信号触发方式为低电平有效;当ITl(TCON.2)=1时,信号触发方式为下降沿有效。

【5-6】80C51单片机有哪些中断源?对其中断请求如何进行控制? 【答】

1.中断源

80C51.单片机中有5个中断源。80c52中增加了一个中断源--定时器/计数器T2中断,共有6个中断源。每一个中断源都能被单片机程控为高优先级或低优先级。

80c51单片机的5个中断源包括2个外部中断源和3个内部中断源。2个外部中断源为INT0和INT1,外部设备的中断请求信号、掉电等故障信号都可以从INT0或INT1引脚输入。3个内部中断源为定时器/计数器TO、T1的定时/计数溢出中断源和串行口发送或接收中断源。80C5 1的5个中断源可以分为3类,即: (1)外部中断

外部中断是由外部信号引起的,共有两个外部中断,其中断请求信号分别从引脚INT0(P3.2)和INTl(P3.3)上引入。 (2)定时中断

定时中断是为满足定时或计数需要而设置的。当计数器发生计数溢出时,表明设定的定时时间已到或计数值已满,这时可以申请中断。由于定时器/计数器位于单片机芯片内部,所以定时中断属于内部中断。80C51.内部有两个定时器/计数器,所以定时中断有两个源,即:

① FF0(P3.4)一一定时器/计数器TO溢出中断。 ② FFI(P3.5)…定时器/计数器T1溢出中断。 (3)串行中断

串行中断是为串行数据传送的需要而设置的。每当串行口发送或接收一组串行数据时,就产生一个中断请求。 .

TI(SCON.1)和RI(SCON.O)--串行口发送和接收中断源。 2.中断的允许和禁止由中断允许寄存器IE控制 中断允许寄存器IE格式如图5—1所示。

┏━━━━━┳━━━┳━━━┳━━━┳━━━┳━━━━┳━━━━┳━━━━┳━━━━┓

┃ 位地址 ┃ AFH ┃ AEH ┃ ADH ┃ ACH┃ ABH ┃ AAH ┃ A9H ┃ A8H ┃ ┣━━━━━╋━━━╋━━━╋━━━╋━━━╋━━━━╋━━━━╋━━━━╋━━━━┫

┃ 符 号 ┃ EA ┃ ┃ ┃ ES ┃ ETl ┃ EXl ┃ ETO ┃ EXO ┃

┗━━━━━┻━━━┻━━━┻━━━┻━━━┻━━━━┻━━━━┻━━━━┻━━━━┛

图5—1 中断允许寄存器IE格式

IE寄存器中相应位设置为O时,所对应的中断源被禁止中断;相应位设置为1时,所对应的中断源被允许中断。

系统复位后IE寄存器中各位均为0,即此时禁止所有中断。 与中断有关的控制位共6位,即:

EX0 外部中断O中断允许位。 ETO 定时器/计数器T0中断允许位。 EXl 外部中断1中断允许位。

ETl 定时器/计数器T1中断允许位。 ES 串行口中断允许位。

EA CPU中断允许位。当EA=1时,允许所有中断开放,总允许后,各中断的允许或禁止由各中断源的中断允许控制位进行设置;当EA=0时,所有中断屏蔽。

80C51单片机通过中断允许控制寄存器对中断的允许(开放)实行两级控制,即以EA位作为总控制位,以各中断源的中断允许位作为分控制位。只有当总控制位EA有效(即开放中断系统)时,各分控制位才能对相应中断源分别进行开放或禁止。 . 【5—7】80C51单片机在什么情况下可响应中断? 【答】中断响应是有条件的,即: ·中断源申请中断;

·该中断源已被允许中断,且CPU也已允许中断; ·没有同级或高优先级中断在执行中断服务程序。

在接受中断申请时,如遇下列情况之一,硬件生成的长调用指令LCALL将被封锁:

①CPU正在执行同级或高一级的中断服务程序。因为当一个中断被响应时,其对应的中断优先级触发器被置1,封锁了同级和低级中断。

②查询中断请求的机器周期不是执行当前指令的最后一个周期。目的在于使当前指令执行完毕后,才能进行中断响应,以确保当前指令的完整执行。 ③当前正在执行RETI指令或执行对IE、IP的读/写操作指令。80C51.中断系统的特性规定,在执行完这些指令之后,必须再继续执行一条指令,然后才能响应中断。 【5—8】如何分析中断响应时间?这对实时控制系统有何意义?

【答】从中断请求发生直到被响应去执行中断服务程序,所需时间称为“中断响应时间”。一般来说,在单级中断系统中,中断的响应时间最短为3个机器周期,最长为8个机器周期。 当中断请求标志位查询占1个机器周期时,若这个机器周期恰好是指令的最后一个机器周期,则在这个机器周期结束后,CPU立即响应中断,产生硬件长调用LCALL指令。执行这条长调用指令需要2个机器周期,这样,中断响应时间为3个机器周期。

如果CPU正在执行的是RETI指令或访问IP、IE指令,则等待时间不会多于2个机器周期,而中断系统规定这几条指令执行完后,必须再继续执行一条指令后才能响应中断。如这条指令恰好是4个机器周期长的指令(比如乘法指令MUL或除法指令DIV),再加上执行长调用指令LCALL所需2个机器周期,则总共需要8个机器周期。

如果中断请求被阻止,不能产生硬件长调用LCALL指令,那么所需的响应时间就更长。如果正在处理同级或优先级更高的中断,那么中断响应的时间还需取决于处理中的中断服务程序的执行时间。

当单片机应用中断于实时控制系统时,往往非常在意中断的响应时间。比如出现故障后,

单片机在多长时间里能够响应和处理,这反映了单片机对故障处理的“失控’’时间长短。 . 【5—9】为什么单片机需要进行中断请求的撤消?中断请求的撤消有哪些方法?

【答】单片机响应中断请求,转向中断服务程序执行,在其执行中断返回指令RETI之前,中断请求信号必须撤除,否则将会再一次引起中断而出错。 中断请求撤除的方式有三种,即:

1.由单片机内部的硬件自动复位(硬件置位,硬件清除)

对于定时器/计数器TO、T1的溢出中断和采用跳变触发方式的外部中断请求,单片机响应中断后,由内部硬件自动清除中断标志TF0和TFl、IE0和IEl,从而自动撤除中断请求。 2.应用软件清除相应标志(硬件置位,软件清除)

对于串行接收/发送中断请求和80C52中的定时器/计数器T2的溢出和捕获中断请求,单片机响应中断后,必须在中断服务程序中应用软件清除RI、TI、TF2和EXF2这些中断标志,才能撤除中断。

3.采用外加硬件结合软件来清除中断请求(硬件置位,硬、软件结合清除)

对于采用电平触发方式的外部中断请求,中断标志的撤消是自动的,但中断请求信号的低电平可能继续存在。在以后机器周期采样时,又会把已清O的IEO、IEl标志重新置1,再次申请中断。在系统中加入如图5—2所示的电平方式外部中断请求的撤消电路,保证在中断响应后把中断请求信号从低电平强制改变为高电平。

从图5—2中可看到,用D触发器锁存外部中断请求低电平,并通过触发器输出端Q送INT0或INTl,所以D触发器对外部中断请求没有影响。但在中断响应后,为了撤消低电平引起的中断请求,可利用D触发器的直接置位端SD来实现。采用80C51的一根I/O口线来控制SD端。只要在SD端输人一个负脉冲即可使D触发器置1,从而撤消低电平的中断请求信号。

通过在中断服务程序中增加以下两条指令,SD端得到所需负脉冲: ANL P1,#OFEH ;Q置1(SD为直接置位端,低电平有效) ORL P1,#01H ;SD无效

使P1.0输出一个负脉冲,其持续时间为2个机器周期,足以使D触发器置位,撤除低电平中断请求。第二条指令是必要的,否则D触发器的Q端始终输出1,无法再接收外部中断请求。

【5—1 0】请简述8OC51单片机扩展外部中断源的几种方法。

【答】在80C51单片机中,一般只有两个外部中断请求输入端INTO和INTl。当某个系统需要多个外部中断源时,可以通过增加OC门结合软件来扩展;当定时器/计数器在系统中有空余时,也可以通过对计数器计数长度的巧妙设置,使定时器/计数器的外部输入脚(TO或T1)成为外部中断请求输入端。

1.采用OC门经“线或\后实现 图5—3就是占用一个80C51的INTO或INTl扩展4个外部中断源的电路。 当4个扩展的外部中断源中有一个或几个出现高电平时,OC门反相器输出为O,引起INT0低电平触发中断,所以这些中断源都是电平触发方式。当满足外部中断请求条件时, CPU响应中断,转入中断矢量地址0003H单元开始执行中断服务程序。在中断服务程序中,由软件设定的顺序查询外部扩展中断哪一位是高电平,然后进入该中断处理程序。查询的顺序就是外部扩展中断源的中断优先级顺序。 外部中断源查询的流程图如图5—4所示。

INT0的中断服务程序如下:

PINTO: PUSH PSW ;保护现场 PUSH ACC ,

JB P1.0,LOOPl ;转向中断服务程序1 JB P1.1,LOoP2 ;转向中断服务程序2 JB P1..2,LOOP3 ;转向中断服务程序3