标题: 单片机如果有两个中断服务使代码重叠,这两个都有用,该怎么解决。 [打印本页]

作者: 进击的蜗牛    时间: 2017-12-24 12:33
标题: 单片机如果有两个中断服务使代码重叠,这两个都有用,该怎么解决。
在51单片机里面如果有两个中断服务使代码重叠,这两个都有用,该怎么解决。我用的是ST89C52

作者: HC6800-ES-V2.0    时间: 2017-12-24 19:45
中断的执行过程,大概是这样的:(假设中断1,中断2,且中断1优先级高)
1、中断1发生中断了,执行这个中断服务程序。
2、在中断1执行服务程序期间,中断2发生了,由于它的优先级低,所以等待。
3、中断1服务程序执行完毕,返回中断点,再去执行中断2的服务程序。看到没,两个中断服务程序都执行了的。
4、在中断2服务程序执行期间,中断1又发生了,由于它的优先级高,所以立即去执行中断1的服务程序,即中断2的服务程序被打断了。
5、当中断1的服务程序执行完毕,回到中断2的服务程序刚才打断的点,继续执行中断2的服务程序。看到没,两个中断服务程序还是执行了的。
6、中断2服务程序执行完毕,回到主程序刚才中断2打断的位置处,继续执行主程序。
不论两个中断服务程序是不是有代码重复,单片机CPU会自动认为是两个函数,自动会按照一定的规则去执行它们,你是不需要担心的。
当然,这种中断嵌套,也是有麻烦的。套得太深(多次打断中断服务程序),有可能出现不可预料的结果。所以,通常不是很紧要的操作,都不设置优先级。我只在给新手演示中断可以嵌套这个时候用过优先级,在实际应用中,只在智能小车用按键调速、选择功能时,让按键的外部中断优先级高于用于PWM波的定时器中断优先级。


作者: imxuheng    时间: 2017-12-24 22:05
说说中断里要做什么事情




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1