控制cpu内部中断允许触发器的指令是
应该是B了。
1. 中断概念
中断是指由于接收到来自外围硬件(相对于中央处理器和内存)的异步信号或来自软件的同步信号,而进行相应的硬件/软件处理。发出这样的信号称为进行中断请求(interrupt request,IRQ)。硬件中断导致处理器通过一个上下文切换(context switch)来保存执行状态(以程序计数器和程序状态字等寄存器信息为主);软件中断则通常作为CPU指令集中的一个指令,以可编程的方式直接指示这种上下文切换,并将处理导向一段中断处理代码。中断在计算机多任务处理,尤其是实时系统中尤为有用。这样的系统,包括运行于其上的操作系统,也被称为“中断驱动的”(interrupt-driven)。
中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作,这些引起中断的事件称为中断源,它们可能是来自外设的输入输出请求,也可能是计算机的一些异常事故或其它内部原因。
中断:在运行一个程序的过程中,断续地以“插入”方式执行一些完成特定处理功能的程序段,这种处理方式称为中断。
2. 中断的作用
并行操作
硬件故障报警与处理
支持多道程序并发运行,提高计算机系统的运行效率
支持实时处理功能
3. 术语
按中断源进行分类:发出中断请求的设备称为中断源。按中断源的不同,中断可分为
内中断:即程序运行错误引起的中断
外中断:即由外部设备、接口卡引起的中断
软件中断:由写在程序中的语句引起的中断程序的执行,称为软件中断
允许/禁止(开/关)中断: CPU通过指令限制某些设备发出中断请求,称为屏蔽中断。从CPU要不要接收中断即能不能限制某些中断发生的角度 ,中断可分为
可屏蔽中断 :可被CPU通过指令限制某些设备发出中断请求的中断, 那是不是意味着进中断时disable整个中断,其实disable的都是可屏蔽中断?
不可屏蔽中断:不允许屏蔽的中断如电源掉电
中断允许触发器:在CPU内部设置一个中断允许触发器,只有该触发器置“1”,才允许中断;置“0”,不允许中断。
指令系统中,开中断指令,使中断触发器置“1”
关中断指令,使中断触发器置“0”
中断优先级:为了管理众多的中断请求,需要按每个(类)中断处理的急迫程度,对中断进行分级管理,称其为中断优先级。在有多个中断请求时,总是响应与处理优先级高的设备的中断请求。
中断嵌套:当CPU正在处理优先级较低的一个中断,又来了优先级更高的一个中断请求,则CPU先停止低优先级的中断处理过程,去响应优先级更高的中断请求,在优先级更高的中断处理完成之后,再继续处理低优先级的中断,这种情况称为中断嵌套。
Intel的官方文档里将中断和异常理解为两种中断当前程序执行的不同机制。这是中断和异常的共同点。不同点在于:
中断(interrupt)是异步的事件,典型的比如由I/O设备触发;异常(exception)是同步的事件,典型的比如处理器执行某条指令时发现出错了等等。
中断又可以分为可屏蔽中断和非可屏蔽中断,异常又分为故障、陷阱和异常中止3种,它们的具体区别很多书籍和官方文档都解释的比较清楚这里不再赘述。
关于它们的区别有两点是需要注意的:
平常所说的屏蔽中断是不包括异常的,即异常不会因为CPU的IF位被清(关中断,指令:cli)而受影响,比如缺页异常,即使关了中断也会触发CPU的处理,回答了我上面红色部分疑问。
通常说的int 80h这种系统调用使用的中断方式实际上硬件上是理解为异常处理的,因此也不会被屏蔽掉,这也很好理解,int 80h这种中断方式是程序里主动触发的,对于CPU来说属于同步事件,因此也就属于异常的范畴。
由图3.2可以看出,MCS——51系列单片机有5个中断源,它们是:外部中断INTO(P3.2) 、INTI(P3.3);定时器肼数器T0、Tl溢出中断;串行口的发送(TXD)和接收(RXD)中断源(只占1个中断源)。外部中断的中断请求标志位和T0、Tl的溢出中断请求标志位锁存在定时器/计数器控制寄存器TCON中,而串行口对应的中断请求标志位锁存在串行口控制寄存器SCON中。
1.定时器/计数器控制寄存器TCON
TCON为定时器/计数器控制寄存器,其字节映像地址为88H,可位寻址,它除了控制定时器/计数器T0、Tl的溢出中断外,还控制着两个外部中断源的触发方式和锁存两个外部中断源的中断请求标志。其格式如下:
TFl
TRl
TF0
TRO
IEl
ITl
IEO
IT0
TCON寄存器各位的含义如下:
IT0:外部中断INTO的中断触发方式选择位。
当IT0位清为0时,外部中断INTO为电平触发方式。在这种触发方式中,CPU在每一个机器周期的$5P2采样INTO(P3.2)引脚的输入电平,当采样到低电平时,置INT0的中请求标志位为1,采样到高电平清IE0位为0。在采用电平触发方式时,外部中断源(输入到INTO,即P3.2引脚)上的必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行结束之前,外部中断源的有效信号必须被清除,否则将产生另一次中断。为了保证CPU能正确采样电平状态,要求外部中断源INTO有效的低电平信号至少要维持一个机器周期以上。
当IT0位置为1时,外部中[新IN-T0为边沿触发方式。在这种触发方式中,CPU在每个机器周期的$5P2采样INTO(P3.2)引脚上的输入电平。如果在相继的两个机器周期,一个周期采样到INTO为高电平,而接着的下一个周期采样到低电平,则置INTO的中断请求标志位IE0为1,即当IE0位为l时,表示外部中断INTO正在向CPU请求中断,直到该中断被CPU响应时,才由硬件自动将IE0位清为0。因为CPU在每一个机器周期采样一次外部中断源输入引脚的电平状态,因此采用边沿触发方式时,外部中断源输入的高电平信号和低电平信号时间必须保持在一个机器周期以上,才能保证CPU检测到此信号由高到低的负跳变。
IE0:外部中断:INT0的中断请求标志位。当IE0位为0时,表示外部中断源INT0没有向CPU请求中断;当IE0位为l时,表示外部中断INTO正在向CPU请求中断,且当CPU响应该中断时由硬件自动对IE0进行清0。
1T1:外部中断INTO的中断触发方式选择位。功能与ITo相同。
IEl:外部中断INTO的中断请求标志位。功能与IE0相l司。
TR0:定时器/计数器T0的启动标志位。当TR0位为0时,不允许T0计数工作;当TRO位为l时,允许T0定时或计数工作。
TF0:定时器/计数器T0的溢出中断请求标志位。在定时器/计数器T0被允许计数后,从初值开始加l计数,当产生计数溢出时由硬件自动将TF0位置为1,通过TF0位向CPU申请中断,一直保持到CPU响应该中断后才由硬件自动将TF0位清为0。当TF0位为0时,表示T0未计数或计数未产生溢出。当T0工作在不允许中断时,TF0标志可供程序查询。
TRl:定时器/计数器Tl的启动标志位。功能与TR0相l司。
TFl:定时器/计数器Tl的溢出中断请求标志位。功能与TF0相I司。
2.串行口控制寄存器SC,ON
'SCON为串口控制寄存器,其字节映像地址为98H,也可以进行位寻址。串口的接收和发送数据中断请求标志位(R1、TI)被锁存在串口控制寄存器SCON中,其格式如下:
SM0
SMl
SM2
REN
TB8
RB8
TI
RI
SCON寄存器各位的含义如下:
R1:串口接收中断请求标志位。当串行以一定方式接收数据时,每接收完一帧数据,由硬件自动将Rl位置为1。而Rl位的清0必须由用户用指令来完成。
T1:串l3发送中断请求标志位。当串口以一定方式发送数据时,每发送完一帧数据,由硬件自动将Tl位置为l。而Tl位的清0也必须由用户用指令来完成。
注意:在中断系统中,将串行口的接收中断Rl和发送中断Tl经逻辑或运算后作为内部的一个中断源。当CPU响应串口的中断请求时,CPU并不清楚是由接收中断产生的中断请求还是由发送中断产生的中断请求,所以用户在编写串口的中断服务程序时,在程序中必须识别是RI还是Tl产生的中断请求,从而执行相应的中断服务程序。
SCON其他位的功能和作用与串行通信有关,将在第6章中介绍。
在上述的特殊功能寄存器中的所有中断请求标志位,都可以由软件加以控制,即用软件置位或清0。当某位置位时,就相当于该位对应的中断源向CPU发出中断请求,如果清。就撤销中断请求。
3.2.2中断允许控制
在计算机中断系统中有两种不同类型的中断:一类为非屏蔽中断,另一类为可屏蔽中断。对于非屏蔽中断,用户不能用软件方法加以禁止,一旦有中断请求,CPU就必须予以响应。而对于可屏蔽中断,用户则可以通过软件方法来控制它们是否允许CPU去响应。允许CPU响应某一个中断请求称为中断开放(或中断允许),不允许CPU响应某一个中断请求称为中断屏蔽(或中断禁止)。
MCS一51系列单片机的5个中断源都是可屏蔽中断。由图3.2可知,CPU对中断源的中断开放或中断屏蔽的控制是通过中断允许控制寄存器IE来实现的。IE的字节映像地址为0A8H,既可以按字节寻址,也可以按位寻址。当单片机复位时,IE被清为0。
通过对IE的各位的置1或清0操作,实现开放或屏蔽某个中断,也可以通过对EA位的清O来屏蔽所有的中断源。IE的格式如下。
EA
----
-----
ES
ET1
EX1
ETO
EX0
IE寄存器各位的含义为:
EA:总中断允许控制位。当EA位为0时,屏蔽所有的中断;当EA位为l时,开放所有的中断。
ES:串口中断允许控制位。当ES位为0时,屏蔽串口中断;当ES位为l且EA位也为1时,开放串口中断。
ETl:定时器/计数器Tl的中断允许控制位。当ETl位为0时,屏蔽Tl的溢出中断;当ETl位为l且EA位也为1时,开放Tl的溢出中断。
EXl:INT1的中断允许控制位。当EXl位为0时,屏蔽INTl;当EXl位为l且EA位也为1时,开放丽。
ET0:定时器/计数器T0的中断允许控制位。功能与ETl相同。
EX0:INT0的中断允许控制位。功能与EXl相同。比如要开放INTl和Tl的溢出中断,屏蔽其他中断,则对应的中断允许控制字为:l00011008,即8CH。只要将这个结果送人IE中,中断系统就按所设置的结果来管理这些中断源。形成这个控制结果的方法可以对IE按字节操作,也可以按位操作。
按字节操作形式 按位操作形式
SETB EXl
MOV IE,#8CH SETB ETl
SETB EA
思考题3.1:如果要开放外部中断0和串口的中断,而屏蔽其他中断的控制字是什么?如何来实现这个控制结果呢?
3.2.3中断优先权管理
在中断系统中,要使某一个中断被优先响应的话,就要依靠中断优先权控制。MCS-51系列单片机对所有中断设置了两个优先权,每一个中断请求源都可以编程设置为高优先权中断或低优先权中断,从而实现二级中断嵌套。为了实现对中断优先权的管理,在MCS一51内部提供了一个中断优先级寄存器IP,其字节地址为088H,既可以按字节形式访问,又可以按位的形式访问。其格式如下:
—
-------
--------
PS
PTl
PXl
PT0
PXO
IP寄存器各位的含义如下:
PX0、PT0、PXl、PTl和PS分别为INTO、TO、INT1、Tl和串口中断优先级控制位。当相应的位为0时,所对应的中断源定义为低优先级,相反则定义为高优先级。
比如要将T0定义为高优先级,使CPU优先响应其中断,其他中断均定义为低优先级,对应的优先级控制字为O00000108,即02H。只要将这个控制字送人IP中,CPU就优先响应TO产生的溢出中断,并将其他中断按低优先级中断处理。具体操作形式如下:
按字节操作形式 按位操作形式
MOV IP,#02H SETB PT0
在同一个优先级中,各中断源的优先级别由一个内部的硬件查询序列来决定,所以在同级的中断中按硬件查询序列也确定了一个自然优先级,其从高到低的优先级排列如下:
INTO—TO—INT1—Tl--串口(RI、TI)
按中断优先权设置后,响应中断的基本原则是:
.若多个中断请求同时有效,CPU优先响应优先权最高的中断请求。
.同级的中断或更低级的中断不能中断CPU正在响应的中断过程。
.低优先权的中断响应过程可以被高优先权的中断请求所中断,CPU会暂时中止当前低优先权的中断过程,而优先响应高优先权中断。等到高优先权中断响应结束后再继续响应原低优先权的中断过程,形成中断的嵌套。为了实现上述功能和基本原则,在MCS.51系列单片机中断系统的内部设置了两个不可寻址的优先级触发器,一个是指出CPU是否正在响应高优先权中断的高优先级触发器,另一个是指出CPU是否正在响应低优先权中断的低优先级触发器。当高优先级触发器状态为l时,屏蔽所有的中断请求;当低优先级触发器状态为1时,屏蔽所有同级的中断请求而允许高优先权中断的中断请求。
MCS一51系列单片机复位后,特殊功能寄存器IE、IP的内容均为0,由用户的初始化程序对IE、IP进行初始化,开放或屏蔽某些中断并设置它们的优先权。
3.2.4中断响应
单片机一旦工作,并由用户对各中断源进行使能和优先权初始化编程后,MCS-51系列单片机的CPU在每个机器周期顺序检查每一个中断源。那么,在什么情况下CPU可以及时响应某一个中断请求呢?若CPU响应某一个中断请求,它又是如何工作的呢?
1.中断响应条件
单片机的CPU在每个机器周期的最后一个状态周期采样并按优先权设置的结果处理所有被开放中断源的中断请求。一个中断源的请求要得到响应,必须满足一定的条件。
(1)CPU正在处理相同的或更高优先权的中断请求。这种情况下只有当前中断响应结
束后才可能响应另一个中断请求。
(2)现行的机器周期不是当前所执行指令的最后一个机器周期。此时只有在当前指令执行结束周期的下一个机器周期才可能响应中断请求。
(3)正在执行的指令是中断返回指令(RETI)或者是对IE、IP的写操作指令。在这种情况下,只有在这些指令执行结束并至少再执行一条其他指令后才可能响应中断请求。如果上述条件中有一个存在,CPU将自动丢弃对中断查询的结果;若一个条件也不存在,则将在紧接着的下一个机器周期执行中断查询的结果,响应相应的中断请求。
2.中断响应过程
如果某一个中断被开放,且中断请求符合响应条件,CPU会及时响应该中断请求,并按下列过程进行处理:
(1)置相应的优先级触发器状态为1,指明了CPU正在响应的中断优先权的级别,并通过它屏蔽所有同级或更低级的中断请求,允许更高级的中断请求。
(2)执行一条硬件子程序调用,清相应的中断请求标志位为0(R1、Tl和电平触发的外部中断除外)。
(3)保护断点。即将被中断程序的断点位置(Pc的值)压人堆栈保存起来。
(4)将被响应的中断源的中断服务程序入口地址送程序计数器PC。各中断源的中断服务程序入口地址的分配情况如表l.4所示。
(5)执行相应的中断服务程序。当CPU执行完中断服务程序中的中断返回指令后,清相应的优先级触发器为0,然后恢复断点,即将保存在堆栈中的程序计数器PC的值再弹给PC,使CPU再继续执行原来被中断的程序。
3.中断响应的时间
在MCS.51系列单片机中的外部中断请求信号在每一个机器周期的第5个状态周期的第2个时钟脉冲被采样并锁存到相应的中断请求标志中,这个状态等到下一个机器周期才被查询。如果中断被开放,并符合响应条件,CPU接着执行一个硬件子程序调用指令以转到相应的中断服务程序入口,该调用指令需要2个机器周期,所以从外部产生中断请求到CPU开始执行中断服务程序的第l条指令之间,最少需要3个完整的机器周期。如果中断请求被阻止,则需要更长的时间。如果已经在处理同级或更高级中断,额外的等待取决于中断服务程序的处理过程。如果正处理的指令没有执行到最后的机器周期,即使是需要时间最长的乘法或除法指令,所需的额外等待时间不会超过3个机器周期;如果是CPU正在执行中断返回指令RETl或对IE、IP的写操作指令,加上另外一条指令的执行时间,额外的等待时间不会多于5个机器周期。所以在单一中断系统中,外部中断响应时间总是在3——8个机器周期。
CPU的中断响应条件是什么?在中断周期中主要完成哪些操作?
(1)当前正在执行的指令已经执行完毕,而不是在执行当中。(2)当前程序允许中断,即中断允许触发器IE的状态为1。在中断周期中,CPU主要完成以下操作:(1)确定中断源 向中断源查询电路发出中断响应信号INTA,去读取当前最高优先权的中断源编码。(2)关中断 将中断允许触发器IE清0,暂时不再响应任何中断...
什么是CPU响应中断?
1、有中断源发出的中断请求;2、中断总允许位EA=1,即CPU开中断;3、申请中断的中断源的中断允许位为1,即中断没有被屏蔽;4、无同级或更高级中断正在被服务;5、当前的指令周期已经结束。CPU包括运算逻辑部件、寄存器部件和控制部件等,英文Logic components;运算逻辑部件,可以执行定点或浮点算术运算...
中断响应的条件
2、中断总允许位EA=1,即CPU开中断。3、申请中断的中断源的中断允许位为1,即中断没有被屏蔽。4、无同级或更高级中断正在被服务。5、当前的指令周期已经结束。中央处理器(CPU),是电子计算机的主要设备之一,电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责...
阻止cpu响应中断的因素是?
IE,中断允许寄存器。还有,中断响应的存在,也能阻止。
CPU存储器详细资料大全
2、中断允许标志IF(Interrupt-enable Flag) 中断允许标志IF是用来决定CPU是否回响CPU外部的可禁止中断发出的中断请求。但不管该标志为何值,CPU都必须回响CPU外部的不可禁止中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下: (1)、当IF=1时,CPU可以回响CPU外部的可禁止中断发出的中断请求; (2)、当...
cpu响应中断应具备哪些条件
CPU响应中断条件:1、有中断源发出的中断请求;2、中断总允许位EA=1,即CPU开中断;3、申请中断的中断源的中断允许位为1,即中断没有被屏蔽;4、无同级或更高级中断正在被服务;5、当前的指令周期已经结束.
cpu中断处理过程流程图
可屏蔽中断 :可被CPU通过指令限制某些设备发出中断请求的中断, 那是不是意味着进中断时disable整个中断,其实disable的都是可屏蔽中断?不可屏蔽中断:不允许屏蔽的中断如电源掉电 中断允许触发器:在CPU内部设置一个中断允许触发器,只有该触发器置“1”,才允许中断;置“0”,不允许中断。指令系统...
什么叫屏蔽中断?允许中断?怎样实现?
中断屏蔽:中断由异步的外部事件引起。外部事件及中断响应与正在执行的指令不存在关系。80386有两根引脚INTR和NMI接受外部中断请求信号,INTR接受可屏蔽中断请求。在80386中,标志寄存器EFLAGS中的IF标志决定是否屏蔽可屏蔽中断请求。允许中断:在计算机科学中,中断(Interrupt)是指处理器接收到来自硬件或软件的...
写出80c51中断允许控制寄存器ie结构,位名称和位地址,如何设置才能开中断...
1.堆栈用于响应中断或调用子程序时保护断点地址,也可通过栈操作指令(push 和pop保护和恢复现场)其中入栈时先SP+1再将内容压入当前SP所指示的堆栈单元 中,出栈则先将SP所指示的内部ram单元中内容送入直接地址寻址的单元中,再将 SP减1.2.中断允许寄存器的功能是控制CPU对中断的开放和屏蔽以及每个...
什么是中断?80C51单片机的中断是什么?
Service Routine,ISR)或中断处理程序的特殊程序,处理完中断事件后再返回到原来的程序继续执行。中断可以提高系统的响应速度和效率,因为它允许CPU在等待外部事件(如输入\/输出操作完成)时执行其他任务。在80C51单片机中,中断是一种硬件机制,它允许单片机响应外部或内部的事件,如定时器溢出、外部输入信号变化...
暨阁回生: 1.在CPU内部设置的中断请求触发器必须是开放的,STI指令开中断;CLI指令关中断.2.外设有中断请求时,中断请求触发器必须处于“1”状态,保持中断请求信号.3.外设(接口)中断屏蔽触发器必须为“0”,这样才能把外设中断请求送至CPU.4.CPU在现行指令结束的最后一个状态周期.5.无DMA请求.
文县18567698066: CPU响应中断有哪些条件 - ?
暨阁回生: 以单片机为例. CPU响应中断条件: 1、有中断源发出的中断请求; 2、中断总允许位EA=1,即CPU开中断; 3、申请中断的中断源的中断允许位为1,即中断没有被屏蔽; 4、无同级或更高级中断正在被服务; 5、当前的指令周期已经结束
文县18567698066: 为什么MCS - 51的中断允许触发器内容为83H,CPU将响应的中断请求是T1,串行口 - ?
暨阁回生: D7:EA D6:--- D5:ET2 D4:ES D3:ET1 D2:EX1 D1:ET0 D0:EX0 把中断允许打开即EA为1,ET0为1,EX0为1 ,算出来就是83H,ET0即T0的中断允许,EX0即INT0的中断允许,INT0的中断优先于T0的中断,所以最先响应的应该是INT0
文县18567698066: 对CPU来说,外部中断与内部中断在产生条件、处理方法上什么区别? - ?
暨阁回生: 外部中断就是由外部设备产生的, 比如说可编程计时器或者某些特定端口. 内部中断就是int指令.在保护模式下可以重写中断向量表,处理起来就没什么太大区别了
文县18567698066: 什么叫屏蔽中断?允许中断?怎样实现? - ?
暨阁回生: 按照是否可以被屏蔽,可将中断分为两大类:不可屏蔽中断(又叫非屏蔽中断)和可屏蔽中断.不可屏蔽中断源一旦提出请求,CPU必须无条件响应,而对可屏蔽中断源的请求,CPU可以响应,也可以不响应.CPU一般设置两根中断请求输入...
文县18567698066: 为什么cpu要响应中断还受到中断系统多方面的控制? - ?
暨阁回生: 就像人的大脑可以控制身体,而身体的反应会影响大脑的思考
文县18567698066: CPU的内部指令是指什么 - ?
暨阁回生: 你好我是学计算机专业的,希望我学的知识能够让你理解 你提的问题其实是比较复杂深奥的,要想简单只能大概的说明 首先程序的指令是面向操作系统的,和CPU并无关系,所以说windows程序无法直接在Linux上运行,虽然你用的是同一块...
文县18567698066: 汇编语言 CPU中断响应问题 - ?
暨阁回生: LP作为一个子程序或者在LP结束时再跳转回来,如下: LCALL LP ...... RETI 或 LJMP LP INT001: ..... RETI LP: ....... LJMP INT0001 根据你的补充,中断中转移到Lp来执行是绝对不允许的,这样肯定会出错.