以51单片机为例,在响应某一个中断后进行保护现场的工作时,为什么不能被更高级的中断所中断?

书上的解释是:保护现场时如果被更高级的中断所中断会使现场信息受到破坏或造成混乱,这是为何?哪位能举个例子详细说明一下吗

对书上这句话的理解应该是,中断服务程序中,在保护现场时,应尽量避免被高优先级的中断所中断,而并不是说这时候单片机不能响应高优先级的中断。所谓保护现场一般就是保护一些共用的寄存器,由于这些寄存器是共用的,所以可能会被其它的程序修改,因此需要保存起来,返回的时候再恢复回来,从而保护了程序运行的状态。一般可在进入中断服务程序保护现场的时候关掉中断,保护完现场后再开中断。
引起混乱的意思是,如果没有保护现场或者保护现场的时候被高优先级的中断所中断,这时候当前程序里面的有些寄存器没有被保护下来,而高优先级的中断运行的过程中可能会改写这些寄存器,这样再返回低优级中断的时候,不可能恢复这些器存器的值,低优先级的程序运行的时候会因为错误的寄存器值造成不可预料的结果。比如,在中断1中有一个判断的语句JB A.3,L1,如果你在中断1中没有保存A,这时被高优先级的中断2所中断,而高优先级的中断运行后,A的值被改变了,由于你没有保存A,所以无法恢复,这样再返回中断1执行的时候就可能产生错误的执行结果。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-19
进入中断之后要马上关中断吧……

中断优先级也可以自己设置,IP寄存器……

因为现场保护要一个过程,把状态寄存器和PC压栈,如果这个过程之中就跳转的话……
下面是引用同时产生的解释
————————————————————————
你已经设置“定时器0”和“外中断1”为高优先级了,如果5个中断同时产生,

系统会按照自然优先级的顺序,对中断源进行查找,首先会查到“定时器0”,

那么“定时器0”就会首先进入中断。

执行了“定时器0”中断的各个环节,返回主程序之后,如果“外中断1”的中

断申请还存在,就会进入“外中断1”的。

执行完了高级的中断程序,如果还有其它中断申请标志,系统还是按照自然优先级进行查找、响应中断。

参考资料:http://zhidao.baidu.com/question/118717280.html?fr=ala0

本回答被网友采纳
第2个回答  2010-11-19
因为通用寄存器R0~R7和其他一些RAM空间能被其他中断程序所用,可能你第一个中断程序正在使用这些寄存器时就被另一个中断程序中断了,另一个子程序改变了寄存器的值导致另一个中断程序返回后第一个中断程序的寄存器值不是原来的值,导致得到的结果出错,所以要保护现场,不知你看明白没。
第3个回答  2010-11-19
中断处理完回来还有恢复现场,如果更高级的中断回来后发现现场恢复不了不就混乱了吗?

以51单片机为例,在响应某一个中断后进行保护现场的工作时,为什么不能...
这时候当前程序里面的有些寄存器没有被保护下来,而高优先级的中断运行的过程中可能会改写这些寄存器,这样再返回低优级中断的时候,不可能恢复这些器存器的值,低优先级的程序运行的时候会因为错误的寄存器值造成不可预料的结果。

51单片机中断处理程序中关中断的问题
我知道你说的意思了,但是你要知道,中断现场保护是在中断子程序中进行的,因此当你高一级的中断发生的时候(他们不可能共用一个中断子程序,如果是同一中断,那也不可能,因为51中断中你进入中断子程序后要将禁止该中断再次中断,好象似的,嘿嘿……你可以试试),在高一级的中断子程序中也有现场保护...

51单片机关于中断优先级和中断优先权是如何规定的?
在51单片机中,中断是指由内外部事件引起的一种程序执行流程的改变,它允许CPU暂停当前正在执行的程序,转而去处理更为紧急的事件。为了有效地管理这些中断,51单片机提供了一套完善的中断优先级和中断优先权管理机制。首先,中断优先级是指在一个系统中,当多个中断同时发生时,CPU优先响应哪个中断的级别设...

51单片机的每个中断源有几个中断优先级?它们在进行中断请求是单片机如 ...
总的来说,51单片机的每个中断源都具有两个中断优先级,这样的设计使得中断的处理更加灵活和高效。通过合理地设置中断优先级和中断处理程序,可以确保单片机在面对多个中断请求时能够做出正确的响应,从而保障整个系统的正常运行。

51单片机中断优先级问题请教!~
51单片机的中断可嵌套,但至多支持二级嵌套。51单片机的默认(此时的IP寄存器不做设置)中断优先级为:外部中断0 > 定时\/计数器0 > 外部中断1 > 定时\/计数器1 > 串行中断;但这种优先级只是逻辑上的优先级,当同时有几种中断到达时,高优先级中断会先得到服务。这种优先级实际上是中断同时到达的情况...

51单片机中可以中断嵌套么?如果可以是如何规定的?
在51单片机中,中断嵌套是指在一个中断服务程序正在执行时,如果有另一个优先级更高的中断发生,系统会暂停当前中断的处理,转而响应更高优先级的中断,待其处理完后再返回继续处理之前的中断。这种机制使得单片机能够灵活应对多种中断事件,确保重要任务得到及时响应。51单片机支持多个中断源,如定时器中断...

51单片机,如果中断函数比较长,执行到一半又触发了这个中断,程序会停 ...
51单片机中,中断分高低两个优先级,高优先级的中断能打断低优先级的中断。但同级中断是不能打断同级中断的!无论该中断函数有多长,在执行到一半这个中断又发生了,还是要等到该中断函数执行完毕,并再执行了一条主程序指令后才会再次进入该中断。不过,若楼主恰好在这个低优先级中断服务程序中修改了该...

51系列单片机中断系统中优先级的基本规则有哪些?
举例来说,假设一个51系列单片机系统中同时启用了定时器中断和外部中断,且外部中断被设置为高优先级。在正常情况下,定时器中断会按照设定的时间间隔周期性地触发。然而,如果在定时器中断处理过程中,外部中断条件满足并触发,由于外部中断的优先级高于定时器中断,单片机会立即暂停定时器中断的处理,转而...

关于51单片机编程保护现场的基础知识问题
所谓现场保护可以理解为,在进入中断之前,先将可能改变的寄存器中的值保存下来,等到退出中断之后,再恢复他们的值,以防中断期间改变了原有寄存器的值,使得程序无法继续正常运行。所以:1、只要有中断的情形,最好都要保护现场 2、状态标志位,可能改变的寄存器都要保护 3、每次保护的寄存器当然不一定...

MCS-51单片机响应中断的条件是什么?
在某一时刻有几个中断源同时发出中断请求时,处理器只响应其中优先权最高的中断源。当处理机正在运行某个中断服务程序期间出现另一个中断源的请求时,如果后者的优先权低于前者,处理机不予理睬,反之,处理机立即响应后者,进入所谓的“嵌套中断”。中断优先权的排序按其性质、重要性以及处理的方便性决定...

相似回答