单片机中如果我开放了中断,但是在中断程序中关闭中断,那么中断程序中剩下的程序还会执行吗

如题所述

还会执行的,关闭中断的话只是关闭对中断的响应,而正在执行的中断服务函数只是一个稍微特别一些的函数,而且一般情况下都是会在中断服务函数中关闭中断的,这是因为在中断服务函数执行过程中,一般来说都是希望一次性执行完这个中断服务函数,而不希望被其它的中断打断,所以如果系统不是特别复杂,要求不是特别高的话都会在进入中断服务函数后立刻关闭中断,中断服务函数的最后再打开中断,这样一个中断服务函数就可以完全执行完成,避免了因为其它原因导致的中断服务函数无法执行完成,这点在用按键引起的中断时非常有用,因为按键按下一次并不一定就是真正的一次,可能会有轻微的抖动或是其它原因,这也是按键消抖的原因,如果不进行按键消抖或是在中断服务函数中关闭中断的话,很有可能会导致中断服务函数执行出错,而且很有可能会导致程序反反复复重复进入中断,如果中断服务函数比较短小的话可能当你按下一次按键触发中断的时候中断服务函数执行了N多次而自己却不知道。
总结来说,关闭中断只是关闭对中断的响应,所以是不会影响到现阶段的程序的执行,所以中断程序中剩下的程序还会执行。只是在中断关闭期间无法响应新的中断请求而已。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-07-30
继续执行,只是下次中断不会响应了。

单片机中如果我开放了中断,但是在中断程序中关闭中断,那么中断程序中剩...
总结来说,关闭中断只是关闭对中断的响应,所以是不会影响到现阶段的程序的执行,所以中断程序中剩下的程序还会执行。只是在中断关闭期间无法响应新的中断请求而已。

单片机用while(1);等待中断,中断执行完后 程序还回来执行while(1);吗...
程序一直在while(1)里面,直到定时器计满产生中断;产生中断后,执行中断服务程序 (中断中大部分是有重新对定时器赋值的命令的 ) 中断程序完成后 回到while(1),等待下一次中断,定时器继续计数;定时器产生中断,...反复

单片机定时中断执行完中断程序后将返回主程序哪里
每个单片机都会有PC(程序计数器)值,每执行一条语句PC值加一,当中断来临的时候,PC值会被压入堆栈(有些单片机是硬件自动压入,有些是需要软件压入),当中断函数执行完毕的时候,PC值会被弹出堆栈,这样程序会跳到PC值所指向的那条程序继续执行。当然这个是单片机的运行机制,如果仅从表面现象来看的...

单片机中的开中断,关中断是什么意思?
开中断就是当有中断信号产生时,单片机会进入中程序 如P3^2口 有低电平信号或下降沿信号(由TCON寄存器控制),单片机会暂时放下当前工作,去执行中断程序中的程序,当中断程序中的工作结束后,再返回主程序继续做。关中断的话,就是关闭中断,让P2^3口接收到低电平信号或下降沿信号(由TCON寄存器控制...

51单片机进入中断函数后首先应该关此中断,但是我这个关了中断后后面的...
C51采用的是C89标准,函数内一旦有实体语句之后就不能再声明变量了。你应当将第42行代码挪到变量声明之后,也就是第47行的位置。百度嫌我字数不够

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

单片机定时中断执行完中断程序后将返回主程序哪里
当中断发生时,单片机如果响应中断,则立即将正在执行的程序停住;记录运行程序的位置;然后转中断服务程序;中断服务程序执行完后,返回刚才中断打断程序执行的位置继续执行,就好像没有中断过一样

为什么单片机在中断中时原程序还在运行?
中断服务程序运行完返回原程序中断地址,你的中断void zhongduan() interrupt 0 \/\/中断程序蜂启动鸣器 {p2_1=0;}仅此一条,过程太快观察不到,中断完成后就返回去了。

51单片机中用中断程序关闭别的中断
其实还有更简单的办法:进入死循环那个中断这后立即将SP保存到一个内存变量中,定时器中断中判断发生了死循环,就将那个变量的值再恢复给SP,然后执行reti。当然该方法要求中断服务程序是不可重入的,这对单片机来说一般不是问题。最后,再一次提醒你,死循环是不对的,应该从这方面多想想解决办法。上面的...

单片机中关于中断的问题
你的理解没有错,中断是在你的主程序开始运行时同时进行的,并且定时器、计数器或者是外部中断都是独立工作的,当定时器溢出时,TF由硬件自动置1,并且向cpu发送中断请求,当cpu响应中断时,TF又由硬件自动清0.。并且不管定时器溢不溢出,它都会不断计数,因此在响应完中断程序时,需要对定时器重新装...

相似回答