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

如题所述

如果在没有更改过优先级的情况下,外部中断1被触发,定时器1和定时器0哪个还能工作?
不知道楼主所说的“工作”,是什么意思。
外部中断0、定时器0、外部中断1、定时器1和串行口,它们是同时工作的。
只是当满足一定的条件,它们会向CPU申请中断,而CPU只有一个,只能执行一个外设的中断程序。
如果外部中断1被触发,CPU执行X1的中断程序,这时,定时器1和定时器0仍然在做自己的工作,并没有停止工作。
楼主的问题,可能是问CPU的,当CPU在执行外部中断1的程序期间,还能不能接受T1、T0的中断申请。
答案是:不能。
只有高级的,可以中断低级的。
楼主已经说它们是同一级别的中断源,那么它们就是不能互相中断的。
只有当这个中断程序结束了,返回主程序后,CPU才会响应刚才早已来到的中断申请。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-05
这要看你的中断优先级是如何设置的了。(中断优先级控制寄存器)
如果其他中断都比中断0优先级高,当中断0被触发,其他中断来了就要立刻去执行其他的,
否则就要等中断0执行完以后再去执行其他的。
同理中断1也这样。
如果都是同一优先级的,系统还是按照自然优先级进行查找、响应中断。追问

如果在没有更改过优先级的情况下,外部中断1被触发,定时器1和定时器0哪个还能工作?

追答

在51单片机中,专门有一个中断优先级寄存器IP,用来设置中断的优先级,针对51的5个中断源,其优先控制位从低到高分别是:
外部中断0、T0、外部中断1、T1、串行中断,
D0 D1 D2 D3 D4
如果你想要设置那个为高优先级,就分别给哪一位置1,相反置0。如果在主程序初始化开头,你不进行IP的设置,那么,51默认的有一个优先级排序。从高到低的级别为分别为:外部中断0,T0、外部中断1 、T1 、串行中断。默认情况优先级的级别就是按照这个顺序,如果你通过IP控制寄存器来设置的话,可以改变其优先级。
默认状态,中断1触发后,定时器0可以工作。

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