是CPU进入中断周期后自动关中断,为了让主程序和中断服务程序能够处理中断与中断嵌套都要安排开中断指令。
中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行。
CPU进入中断周期后,由中断隐指令自动将使能全局中断标志位置零,即关中断,这就意味着CPU在执行中断服务程序中禁止响应新的中断请求。CPU若想再次响应中断请求,必须开中断,这一任务通常由中断服务程序中的开中断指令实现。
扩展资料:
中断源屏蔽处理的相关技术:
当中断源被屏蔽(屏蔽触发器mask=1),此时即使完成触发器D=1,中断查询信号到来时刻只能将中断请求触发器INTR置“0”,CPU接收不到该中断源的中断请求,即它被屏蔽。
若该中断源未被屏蔽(mask=0),当设备工作已完成时(D=1),中断查询信号则将INTR置“1”,表示该中断源向CPU发出中断请求,该信号送至排队器进行优先级判断。
为了保证级别低的中断源不干扰比其级别高的中断源的中断处理过程。可采用屏蔽技术。
参考资料来源:百度百科-可屏蔽中断标志
参考资料来源:百度百科-中断嵌套
举个例子,当你在苦逼的洗碗的时候,突然你的电话响起来了,于是你去接了电话,接完电话之后,你又继续回去洗碗了。在这里,可以把洗碗当成主线,而电话铃声看作中断触发信号,接电话看作是在中断里做的事。应用场合嘛,看实际需求,但是耗时的 *** 作一般是不允许放在中断里的
以计数器中断为例,不加while(1)或者足够长的FOR循环次数,程序就会在计满数(溢出标志TF=1)之前扫描结束。也就是说,程序都执行完了,中断请求还没发出来,当然进不了中断服务程序。加循环是让程序停到那里等中断请求,希望帮到你。
中断程序不是使用的,是当单片机的中断源有中断请求时,以允许中断的情况下,就是自动转到中断程序去执行了。所以,编程时,需要在中断完成什么任务,都要写到中断程序中就行了,会自己去执行的。而不需要你去使用的。
相同点:都是让cpu从主程序转去执行子程序,执行完毕又返回主程序。
不同点:中断服务程序是随机的,而普通子程序是预先安排好的;中断服务子程序以reti结束,而一般子程序以ret结束。reti除将断点d回pc动作外,还要清除对应的中断优先标志位,以便新的中断请求能被响应。
以上就是关于为什么在主程序和中断服务程序中都要安排开中断指令全部的内容,包括:为什么在主程序和中断服务程序中都要安排开中断指令、何为程序中断方式它主要应用在什么场合、你好 请问中断程序是怎么运行的 为什么要加一个while或是for的循环呢27538等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)