51单片机中断处理程序中关中断的问题
发布网友
发布时间:2022-04-22 17:23
我来回答
共1个回答
热心网友
时间:2023-11-02 19:50
中断保护现场,是为了你中断子程序执行完以后能够返回到你程序中中断点,即产生中断的地方,使程序能够继续向下执行!!!!
如过你说的不用保护现场的话,那么程序执行完以后就不能够回到现场,那么你的程序将不知道要跳转到那里去了,也就是飞鸟,呵呵……
你说的中断嵌套,也是一样的,两者都要保护现场,不然你也不能够回到现场,程序也会飞的!!!!
而我们保护现场的数据都是放在堆栈中的,因此,你的中断次数也不能够超过堆栈的级数,那样数据也会丢失!!!!
说白了,中断它不同于子程序,子程序是固定好了的,返回的位置也固定了;而中断我们不能够预知它在那里发生中断,因此要保护现场,使中断子程序执行完后返回到中断的地方!!!
呵呵……说的太多了!!!
我知道你说的意思了,但是你要知道,中断现场保护是在中断子程序中进行的,因此当你高一级的中断发生的时候(他们不可能共用一个中断子程序,如果是同一中断,那也不可能,因为51中断中你进入中断子程序后要将禁止该中断再次中断,好象似的,嘿嘿……你可以试试),在高一级的中断子程序中也有现场保护,你的问题就是没有把现场保护放对地方!!!!!
============================================================
它们是把现场保护在同一堆栈中,我跟你打个比方吧,假如说堆栈的地址是80H,低一级的中断要保护的是1,2,3;高一级要保护的现场是4,5,6,那么在低一级的中断发生的时候,现场保护1,2,3将压如堆栈,(顺序书上应该有,这里是个比喻),那我先压入1,堆栈地址加1,压入2,堆栈地址再加1,如果这个时候高一级的中断发生,那么现在就应该跳到高一级中断的子程序,堆栈地址就是82H了,在将4,5,6分别压入堆栈,这样堆栈的地址就是85H,当高一级的中断子程序结束后,返回现场,堆栈的数据要从85H开始弹出,这样现场返回的就是6,5,4,这个时候程序就会跳到中断之前的地方,即底一级的中断那里,将要继续将3保护到堆栈中,在执行低一级的中断子程序.(其中,你要在中断保护现场完了后将中断标志清0啊,不然它始终会中断的,不可能去执行程序去了...)
这样讲解你应该知道它们的过程了吧,呵呵!!!!!!
51单片机关于中断优先级和中断优先权是如何规定的?
在51单片机中,中断是指由内外部事件引起的一种程序执行流程的改变,它允许CPU暂停当前正在执行的程序,转而去处理更为紧急的事件。为了有效地管理这些中断,51单片机提供了一套完善的中断优先级和中断优先权管理机制。首先,中断优先级是指在一个系统中,当多个中断同时发生时,CPU优先响应哪个中断的级别设...
51单片机中断处理程序中关中断的问题
你可以试试),在高一级的中断子程序中也有现场保护,你的问题就是没有把现场保护放对地方!!!=== 它们是把现场保护在同一堆栈中,我跟你打个比方吧,假如说堆栈的地址是80H,低一级的中断要保护的是1,2,3;高一级要保护的现场是4,5,6,那么在低一级的中断发生的时候,现场保护1,2,3将压如堆...
51单片机中断的触发方式问题
有两种触发方式:低电平触发和下降沿触发。低电平触发:当检测到外部引脚为低电平触发中断的为低电平触发。下降沿触发:当检测到外部引脚由高电平变以低电平的瞬间时触发中断的为下降沿触发。注意:选择低电平触发中断后,要撤去低电平信号,否则单片机不断检测引脚为低电平就会不断发生中断。而下降沿则不...
51单片机中可以中断嵌套么?如果可以是如何规定的?
51单片机中可以实现中断嵌套。在51单片机中,中断嵌套是指在一个中断服务程序正在执行时,如果有另一个优先级更高的中断发生,系统会暂停当前中断的处理,转而响应更高优先级的中断,待其处理完后再返回继续处理之前的中断。这种机制使得单片机能够灵活应对多种中断事件,确保重要任务得到及时响应。51单片机支...
请问51单片机能不能暂停中断程序并跳转至其它程序中、执行完后跳回中断...
这个是可以做到的。实事上,嵌入式的操作系统的时间片轮转,就是用定时中断,进入定时中断判断并切换上下文,切换到别的任务,执行一段时间再返回原来的流程继续执行。但请注意,正常设计程序时,不要这么做。如果遇到程序中需要用到这种流程控制,有两个办法,重新设计流程,使用嵌入式操作系统。
51单片机中用中断程序关闭别的中断
其实还有更简单的办法:进入死循环那个中断这后立即将SP保存到一个内存变量中,定时器中断中判断发生了死循环,就将那个变量的值再恢复给SP,然后执行reti。当然该方法要求中断服务程序是不可重入的,这对单片机来说一般不是问题。最后,再一次提醒你,死循环是不对的,应该从这方面多想想解决办法。上面的...
在用51编程时,可不可以在中断函数里关掉当前中断并且打开或关上定时器...
1、在中断服务程序里,关闭中断允许标志当然可以(只是这个中断暂时被关闭了,如果在其他程序中没有开启中断,则这个中断服务程序不会再被执行),同样也可以启停定时器。看了你的追问,我觉得你的要求完全可以实现,只是在编程的时候,要细致一些,把逻辑理清楚就可以了。我以前做过一个出租车计价器,里程数据也是从外部中断...
51单片机串口中断问题!急!大神求教
如果中断没有返回又再次进入同一中断也就是中断嵌套,那么就面临栈溢出的问题,程序就会飞掉了。另一方面,因为中断优先级同级的时候是先来先中断,后来要等待前一个中断结束后才能响应中断,所以也避免了嵌套问题的发生。再说要达成你的愿望,只能在你漫长的中断服务程序里,不断的检测RI的值,如果为1,...
关于单片机外部中断的疑问(51)
第一,我的外部中断0设定为跳变沿触发,如果来了一次下降沿,在处理中断函数的过程中,又来了一次下降沿,这时怎么办?--处理函数,不宜过长,中断频率,不宜过高。--尽量避免这种现象出现。是同样一个中断。这个问题源于一个关于红外遥控的程序,他的意思就是用一次中断来收集共33位数据,可是33...
MCS-51单片机什么是开中断,什么是关中断
开中断就是当有中断信号产生时,单片机会进入中程序 如P3^2口 有低电平信号或下降沿信号(由TCON寄存器控制),单片机会暂时放下当前工作,去执行中断程序中的程序,当中断程序中的工作结束后,再返回主程序继续做。关中断的话,就是关闭中断,让P2^3口接收到低电平信号或下降沿信号(由TCON寄存器控制...