各个中断源的优先级怎样确定
时间: 2023-07-24 13:47:45 浏览: 145
在计算机系统中,中断源的优先级是通过中断控制器来管理的。通常,中断源的优先级是由其对应的中断请求线的编号来确定的。当多个中断源同时请求中断时,中断控制器会先处理具有最高优先级的中断请求,然后再处理次高优先级的中断请求,以此类推,直到所有中断请求都被处理完毕。在一些高级的系统中,中断源的优先级可能是可编程的,可以通过软件来设置。
相关问题
根据个人理解综合分析STC89C52的中断系统有几个中断源?几个中断优先级?中断优先级分包括哪些?中断优先级是如何控制的?在出现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少?
STC89C52 的中断系统有 6 个中断源,分别是外部中断 0、外部中断 1、定时器 0 中断、定时器 1 中断、串口中断和 ADC 转换完成中断。
STC89C52 的中断优先级有 5 级,从高到低分别为:外部中断 0、定时器 0 中断、外部中断 1、定时器 1 中断、串口中断和 ADC 转换完成中断。
中断优先级的控制是通过一个叫做 IP(Interrupt Priority)的寄存器来实现的。IP 寄存器的高 3 位分别对应外部中断 0、定时器 0 中断和外部中断 1 的优先级,低 3 位分别对应定时器 1 中断、串口中断和 ADC 转换完成中断的优先级。IP 寄存器的值越大,优先级越高。
当出现同级中断申请时,CPU 会按照 IP 寄存器中设置的优先级顺序响应中断,即从高优先级到低优先级依次响应。各个中断源的优先级从高到低的顺序是:外部中断 0、定时器 0 中断、外部中断 1、定时器 1 中断、串口中断和 ADC 转换完成中断。
各个中断源的入口地址如下:
- 外部中断 0 的入口地址为 0x23。
- 外部中断 1 的入口地址为 0x33。
- 定时器 0 中断的入口地址为 0x0B。
- 定时器 1 中断的入口地址为 0x1B。
- 串口中断的入口地址为 0x23。
- ADC 转换完成中断的入口地址为 0x43。
某计算机有5个中断源,其中断响应优先级是1>2>3>4>5,在中断处理过程中拟将优先级动态调整为1>4>5>2>3,假设此中断系统中的中断允许触发器始终为1。 ① 设计各个中断源的中断服务程序中设置的新屏蔽字(1为屏蔽,0为开放); ② 在运行CPU主程序时,同时出现中断源2和4的请求,并且在执行2服务程序中, 1、3和5同时发生中断请求,描述CPU执行各中断服务程序的轨迹图。
① 各中断源的新屏蔽字如下:
中断源1的新屏蔽字为 11110
中断源2的新屏蔽字为 11111
中断源3的新屏蔽字为 00100
中断源4的新屏蔽字为 11111
中断源5的新屏蔽字为 00001
② CPU执行各中断服务程序的轨迹图如下:
1. 在执行CPU主程序时,同时出现中断源2和4的请求,由于中断响应优先级是1>2>3>4>5,因此CPU会先响应中断源2的请求,暂停原有程序的执行,转去执行中断服务程序2。在此过程中,由于中断允许触发器始终为1,因此其他中断源的请求不会被响应。
2. 在执行中断服务程序2时,1、3和5同时发生中断请求,但由于此时中断源1的新屏蔽字为11110,即被屏蔽掉了,因此不会被响应;中断源3的新屏蔽字为00100,即未被屏蔽,但在中断响应优先级中排名低于中断源4,因此不会被响应;中断源5的新屏蔽字为00001,即未被屏蔽,但在中断响应优先级中排名低于中断源4,因此同样不会被响应。
3. 当中断服务程序2执行完毕后,CPU会根据中断优先级动态调整为1>4>5>2>3,因此接下来会响应中断源4的请求,暂停中断服务程序2的执行,转去执行中断服务程序4。在此过程中,由于中断允许触发器始终为1,其他中断源的请求同样不会被响应。
4. 在执行中断服务程序4时,没有其他中断源的请求,该服务程序执行完毕后,CPU返回到原有程序中继续执行。
阅读全文