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

 我来答
做而论道
高能答主

2011-03-12 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
如果在没有更改过优先级的情况下,外部中断1被触发,定时器1和定时器0哪个还能工作?
不知道楼主所说的“工作”,是什么意思。
外部中断0、定时器0、外部中断1、定时器1和串行口,它们是同时工作的。
只是当满足一定的条件,它们会向CPU申请中断,而CPU只有一个,只能执行一个外设的中断程序。
如果外部中断1被触发,CPU执行X1的中断程序,这时,定时器1和定时器0仍然在做自己的工作,并没有停止工作。
楼主的问题,可能是问CPU的,当CPU在执行外部中断1的程序期间,还能不能接受T1、T0的中断申请。
答案是:不能。
只有高级的,可以中断低级的。
楼主已经说它们是同一级别的中断源,那么它们就是不能互相中断的。
只有当这个中断程序结束了,返回主程序后,CPU才会响应刚才早已来到的中断申请。
shaox_m
推荐于2017-09-05 · TA获得超过374个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:197万
展开全部
这要看你的中断优先级是如何设置的了。(中断优先级控制寄存器)
如果其他中断都比中断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可以工作。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a语无伦次
2011-03-21
知道答主
回答量:17
采纳率:0%
帮助的人:16.4万
展开全部
首先要看你设置的中断优先级,就是在 interrupt 后面的 using X, X表示0到4的数,其中0的优先级为最高;当外部中断0被触发时,其他中断依旧在进行,只是要在中断0结束后才中断;
如果是外部中断1被触发的话,可以被比他优先级高的中断打断!一般优先级的从高到低的排序是:中断0、定时器0、外部中断1、定时器1、串行口中断,但当用到using X时,根据X确定,其中0为最高!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式