2.试问以下几种中断优先级顺序的安排(级别由高到低)是否可能?若可能,则应如何设置IP=?若不可能,请简述不可能的理由。 (10分) (1)外中断0,外中断1,串行口中断,定时器0溢出中断,定时器1溢出中断 (2)外中断0,外中断1,定时器0溢出中断,串行口中断,定时器1溢出中断
时间: 2024-02-26 07:55:05 浏览: 142
根据 8051 芯片的中断优先级规则,中断优先级的高低顺序为:
1. 外部中断 0(最高优先级)
2. 定时器 0 溢出中断
3. 外部中断 1
4. 定时器 1 溢出中断
5. 串行口中断(最低优先级)
因此,根据题目所给的两种中断优先级顺序,可以分别进行如下分析:
(1)外中断0,外中断1,串行口中断,定时器0溢出中断,定时器1溢出中断
这种中断优先级顺序是不可能的。因为定时器 1 溢出中断的优先级比串行口中断高,但是比定时器 0 溢出中断低,而这三个中断的优先级顺序是相对固定的,不能调整。因此,无法实现这种中断优先级的顺序。
(2)外中断0,外中断1,定时器0溢出中断,串行口中断,定时器1溢出中断
这种中断优先级顺序是可能的。可以将 IP 寄存器设置为二进制数 0000 0011,其中 bit0 和 bit1 分别表示外部中断 0 和外部中断 1 的优先级,bit2 表示定时器 0 溢出中断的优先级,bit3 表示串行口中断的优先级,bit4 表示定时器 1 溢出中断的优先级。因此,IP 寄存器的值为 03H。
相关问题
设某机有5级中断:L0、L1、L2、L3、L4,其中断响应优先次序为:L0最高、L1次之、……、L4最低。现在要求将中断处理次序改为L1→L3→L0→L4→L2,试问: (1)各级中断服务程序中的各中断屏蔽码应如何设置(设每级对应一位,当该位为“0” ,表示中断允许;当该位为“1” ,表示中断屏蔽)? (2)若这5级同时都发出中断请求,试画出进入各级中断处理过程示意图。
(1) 为了满足新的中断处理次序,各级中断服务程序中的中断屏蔽码应该设置为:
L0:01110
L1:10001
L2:00001
L3:00100
L4:11000
其中,L0的中断屏蔽码为01110,表示屏蔽L1、L2、L3、L4级中断;L1的中断屏蔽码为10001,表示屏蔽L0、L2、L3、L4级中断;L2的中断屏蔽码为00001,表示只屏蔽L4级中断;L3的中断屏蔽码为00100,表示只屏蔽L2级中断;L4的中断屏蔽码为11000,表示屏蔽L0、L1、L3级中断。
(2) 若这5级同时都发出中断请求,按照新的中断处理次序,应该是L1先响应,然后是L3、L0、L4、L2。进入各级中断处理过程的示意图如下:
```
+---------------+
| L1 |
+---------------+
|
v
+---------------+
| L3 |
+---------------+
|
v
+---------------+
| L0 |
+---------------+
|
v
+---------------+
| L4 |
+---------------+
|
v
+---------------+
| L2 |
+---------------+
```
其中,箭头表示中断请求的响应顺序。由于L0的中断屏蔽码中屏蔽了L1、L2、L3和L4级中断,因此L1会先响应。当L1处理完后,L3会被响应,然后是L0、L4和L2。
(7)有如下两个优先级相同的进程P1和P2,已知信号量S1和S2的初值均为0,试问P1、P2并发执行后x、y、z的值各为多少? P1(){ y=1; y=y+3; V(S1); z=y+1; P(S2); y=z+y; P2() { x=1; x=x+5; P(S1); x=x+y; V(S2); z=z+x;
在理想情况下,P1和P2应该交替执行。假设P1首先执行,那么:
1. P1执行y=1,结果y=1;
2. P1执行y=y+3,结果y=4;
3. P1执行V(S1),将S1的值加1,此时S1=1;
4. P1执行z=y+1,结果z=5;
5. P1执行P(S2)时因为S2的初值为0,所以P1被阻塞,进入等待状态;
6. P2执行x=1,结果x=1;
7. P2执行x=x+5,结果x=6;
8. P2执行P(S1)时因为S1的值为1,所以P2可以继续执行;
9. P2执行x=x+y,结果x=10;
10. P2执行V(S2)将S2的值加1,此时S2=1;
11. P2执行z=z+x,结果z=15;
12. P2执行完毕,P1被唤醒,继续执行;
13. P1执行y=z+y,结果y=9;
14. P1执行完毕,整个程序结束。
因此,最终的结果是x=10,y=9,z=15。
阅读全文