51单片机,如果外部中断0被触发,定时器0、外部中断1、定时器1还能工作么。如果是外部中断1被触发呢?

2025-03-04 19:47:26
推荐回答(3个)
回答1:

如果在没有更改过优先级的情况下,外部中断1被触发,定时器1和定时器0哪个还能工作?
不知道楼主所说的“工作”,是什么意思。
外部中断0、定时器0、外部中断1、定时器1和串行口,它们是同时工作的。
只是当满足一定的条件,它们会向CPU申请中断,而CPU只有一个,只能执行一个外设的中断程序。
如果外部中断1被触发,CPU执行X1的中断程序,这时,定时器1和定时器0仍然在做自己的工作,并没有停止工作。
楼主的问题,可能是问CPU的,当CPU在执行外部中断1的程序期间,还能不能接受T1、T0的中断申请。
答案是:不能。
只有高级的,可以中断低级的。
楼主已经说它们是同一级别的中断源,那么它们就是不能互相中断的。
只有当这个中断程序结束了,返回主程序后,CPU才会响应刚才早已来到的中断申请。

回答2:

这要看你的中断优先级是如何设置的了。(中断优先级控制寄存器)
如果其他中断都比中断0优先级高,当中断0被触发,其他中断来了就要立刻去执行其他的,
否则就要等中断0执行完以后再去执行其他的。
同理中断1也这样。
如果都是同一优先级的,系统还是按照自然优先级进行查找、响应中断。

回答3:

首先要看你设置的中断优先级,就是在 interrupt 后面的 using X, X表示0到4的数,其中0的优先级为最高;当外部中断0被触发时,其他中断依旧在进行,只是要在中断0结束后才中断;
如果是外部中断1被触发的话,可以被比他优先级高的中断打断!一般优先级的从高到低的排序是:中断0、定时器0、外部中断1、定时器1、串行口中断,但当用到using X时,根据X确定,其中0为最高!