51单片机中断优先级问题请教!~

2024-12-17 14:43:38
推荐回答(3个)
回答1:

51单片机的中断可嵌套,但至多支持二级嵌套。
51单片机的默认(此时的IP寄存器不做设置)中断优先级为:
外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断;
但这种优先级只是逻辑上的优先级,当同时有几种中断到达时,高优先级中断会先得到服务。这种优先级实际上是中断同时到达的情况下,谁先得到服务的优先级,而不是可提供中断嵌套能力的优先级。这种优先级被称为逻辑优先级。
例如:当计数器0中断和外部中断1(优先级 计数器0中断>外部中断1)同时到达时,会进入计时器0的中断服务函数;但是在外部中断1的中断服务函数正在服务的情况下,这时候任何中断都是打断不了它的,包括逻辑优先级比它高的外部中断0计数器0中断。
要实现真正的嵌套形式的优先级,也即高优先级中断服务可以打断低优先级中断服务的情况,必须通过设置中断优先级寄存器IP来实现;这种优先级被称为物理优先级。
例如:设置IP = 0x10,即设置串口中断为最高优先级,则串口中断可以打断任何其他的中断服务函数实现嵌套,且只有串口中断能打断其他中断的服务函数。若串口中断没有触发,则其他几个中断之间还是保持逻辑优先级,相互之间无法嵌套。

回答2:

1.不会
2.因为在默认情况下(即每次单片机复位时),中断优先级寄存器IP为XXX0 0000B,未设置IP时,所有中断都是同等级的!外部中断1在执行时,同级的中断是进不来的。
3.是同时接到这些同级中断时,CPU按照如下硬件顺序进行中断响应 外部中断0 - >计时器0 ->外部中断1 ->计时器1->串口中断。不过这种情况一般不会发生,只是为了在出现这种情况下,单片机知道该怎么办而已。注意如果同时接到这些中断信号,外部中断0被响应了,可能其他的中断信号有的就不存在了,这时还要看有什么中断信号存在,在去响应未响应的中断

回答3:

第一点:因为未配置优先级情况下,外部中断0不可以打断外部中断1是属于同级中断,不能互相打断。
第二点:同级中断,外部中断0不可以打断外部中断1.