当前位置:首页 > 问问

51 中断函数里为什么要禁止中断 为什么中断函数要禁止中断?

1、保证中断的完整性

在 51 的中断处理中,中断服务程序需要使用共享资源,而系统中可能存在多个中断服务程序同时访问某一共享资源的情况,这就会导致资源竞争和冲突。为了避免这种情况发生,中断服务程序在访问共享资源时一般会关闭中断使其无法被干扰,这便是所谓的“禁止中断”。

因为中断处理需要一定的时间,如果在这段时间内的中断事件没有得到处理,可能会导致系统的响应速度变慢,影响到系统的正常运行。所以中断响应程序中为了尽可能快地处理中断并恢复中断的响应,往往要禁止其他中断的发生,以保证中断的完整性。

2、防止嵌套中断

在 51 单片机中,一个中断服务程序在执行期间,如果遇到了另一个同样优先级的中断事件,那么就会产生所谓的“嵌套中断”。这时候,就会出现多个中断服务程序同时访问共享数据的情况了。为避免这种嵌套中断的产生,中断响应程序在进入中断服务程序前往往要禁止其他的中断事件。

在实际应用中,中断是很常见的,为了避免程序再次进入中断,在中断处理函数开始执行时,必须禁止该中断的中断请求。如果这个中断相应期间又出现了中断请求,则该中断请求不被执行,只有等到处理函数执行完后再处理。

3、避免中断重入

中断重入是指同一中断可以被多次执行,这将导致产生致命错误。中断响应程序在进入中断服务程序前要禁止其他的中断处理,以避免可能发生的中断重入。

在 51 单片机中,中断重入的问题还会涉及到相互嵌套的情况。比如说,当中断A正在执行处理过程中,突然出现了优先级更高的中断B,此时中断服务程序中会优先处理中断B,而不是等中断A处理完后再进行。如果此时中断B又出现一个优先级更高的中断C,那么就会产生中断重入的情况。

4、避免中断影响主程序和数据准确性

在 51 单片机中,中断是一种异步方式的操作。中断事件周期性地或不定时地发生,且在发生时,中断服务程序必须立即响应并完成对该事件的处理。如果不禁止中断,那么一旦中断发生,中断服务程序就会立即响应,这样就会使主程序暂停执行,并且影响数据的准确性。

通过禁止中断,可以避免中断对主程序和数据的影响。禁止中断后,中断事件就只能在中断响应程序执行之后才会被处理,从而保证了主程序的正常执行。同时也可以保证,中断服务程序所需要使用的数据在中断处理期间不会被主程序修改,从而保证了数据的准确性。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信

相关文章