
这里面最右边硬件查询电路的是干什么的,里面是不是集成了排队器和向量地址形成部件,还有右边数第2列IP,它是干什么的?把来的中断信号分为两个优先级吗?比如有两个中断源来了中断信号,一个Ip那位是1它到了硬件查询电路,另一个ip是0也进去了硬件查询电路,那都会形成向量地址不是吗?那不会打架吗?到底是给哪个给PC?能不能举个例子来表示这个中断系统硬件是怎么工作,怎么判优的。谢谢

以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
在51单片机的中断系统中,硬件查询电路的作用是识别并处理来自不同中断源的中断请求。它确实包含了排队器和向量地址形成部件,用于确定哪个中断请求被服务以及如何找到相应的中断服务程序的入口地址。
IP(Interrupt Priority)寄存器是用来设置中断优先级的。这个寄存器允许用户为每个中断源指定一个优先级,这样当多个中断同时发生时,系统可以根据这些优先级来决定先处理哪个中断。
当中断事件发生时,相关的中断标志位(如TF0、TF1、RI、TI等)会被置位。如果中断使能位(如EA、ES等)也被置位,那么这些中断请求就会进入硬件查询电路。
硬件查询电路会首先检查各个中断的自然优先级,然后根据IP寄存器中设定的优先级来进一步排序。自然优先级是由硬件决定的,例如,外部中断0(INT0)通常比定时器0(T0)有更高的自然优先级。
在你的例子中,如果两个中断源同时发出中断请求,一个是高优先级(IP=1),另一个是低优先级(IP=0),则硬件查询电路会优先处理高优先级的中断请求。这意味着即使低优先级的中断请求先到达,只要高优先级的中断请求也到达了,就会优先处理高优先级的中断。
假设定时器0(T0)和外部中断0(INT0)同时发出了中断请求。如果T0的IP位是0(低优先级),而INT0的IP位是1(高优先级),那么即使T0的中断请求先发生,硬件查询电路也会先处理INT0的中断请求。这是因为INT0具有更高的优先级。
一旦INT0的中断服务程序开始执行,它会清除INT0的中断标志,并处理相应的任务。完成后,如果T0的中断请求仍然有效(即TF0仍被置位),此时T0的中断服务程序才会被执行。
这种优先级机制确保了更紧急或更重要的中断可以得到更快的响应,从而提高了系统的实时性能。