CPU响应中断的条件最全版
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CPU响应中断的条件
yrty
1
CPU对中断的响应
• • • • • • 关中断 保留断点 保护现场 给出中断入口,转入相应的中断服务程序 恢复现场 开中断与返回
yrty
2
执行一条指令
No
取下一条指令
最后一个总线周期的最后一个T状态?
No
有INTR?
Yes Yes Yes
No
中断开放? (FR中的IF=1?)
8259A内部逻辑框图
yrty 12
…
2. 读/写控制逻辑
CS : 接高位地址的译码输出。 A0:常常与地址信号线A0相连。 8259A的两 个端口地址
CPU 通常利用:
OUT 指令, WR与CS, A0配合写入有关的控制字。 IN 指令,
RD与CS, A0配合读出8259A 内部 有关寄存器的内容。
从片A标志码:011,从片B标志码:110
yrty 15
(2) SP / EN引脚
① 当8259A 工作于非缓冲方式 (直接与
CPU 的DB 相连)
SP 为输入,是主从芯片定义引脚。
SP 1, 主片 SP 0, 从片
yrty
16
② 当8259A 工作于缓冲方式 (通过总线缓冲器与
CPU 的DB 相连)
中断服务
恢复现场 开中断,返回
yrty
9
6.3 8259A 可编程中断控制器
在微机系统中,可以使用 8259A 扩展
外部中断, Intel 8259A 可编程中断控制
器,主要有以下功能:
yrty
10
1. 1片8259A 能管理8级中断,通过级联用9
片8259A可以构成64 级主从式中断系统。 2. 每一级中断可以屏蔽或允许。 3. 在中断响应周期, 8259A 可提供相应的 中断类型号。 4. 可编程使8259A 工作在多种不同的方式。
发INTA信号 关中断 (置FR中IF=0) 断点地址(CS. IP)入栈 FR 入栈
识别中断源,转入相应中断服务程序 保护现场
中断服务处理 恢复现场 开中断STI (置FR中IF=1)
yrty 3
中断返回IRET
中断优先级
8086 系统中,中断优先级的次序为: 高 内部中断 (除法错、INTO、INT n) NMI INTR 低 单步中断
yrty
21
♣ ICW1:基本方式初始化字
D7
×
D6
×
D5 ×
D4
1
D3
LTIMD2×D1来自SNGLyrty
4
中断向量 (中断服务程序入口地址) 在表 中的地址 = 中断类型号 × 4
yrty
5
6.2.5 8086CPU 转入中断服务程序的过程
1. 取类型号;
2. 计算向量地址;
3. 根据向量地址查表,将偏移地址送IP,段
基址送CS;
4. 转入中断服务程序,进行中断处理。
yrty
6
6.2.6 8086CPU中断响应流程
7
完成当前指令 内部中断? N NMI? N INTR? Y IF=1? N N Y 第一个中断响应周期 AD7 ~ AD0 浮空 第二个响应周期,取中断类型码 Y
Y
N
TF=0? Y
执行下条指令
Y
yrty
A
8
A
标志进栈 保存TF,将IF、TF清0
断点地址进栈 查中断向量表,转中断服务程序 保护现场
yrty 18
3、CPU响应中断时,送回应答信号 INTA 。 4 、 8259A 接到来自 CPU 的第一个信号 INTA 时, 当前中断服务寄存器(ISR)中相应位置位,
并把 IRR 中相应位复位。同时, 8259A 准备
向数据总线发送中断类型号。
yrty
19
5、在8259A发送中断类型号的后一个INTA 脉冲
EN为输出,用于CPU与8259A传送数据信息时 启动数据总线驱动器。
CPU
DB
数据总线
DB
8259A
驱动器
OE
EN
yrty
此时,主从芯片的定义由ICW4中的M/S实现。
17
6.3.2 8259A 的中断处理过程
下面以8259A单片使用为例,说明其中断 处理过程。 1 、当一条或多条中断请求线 IR0 ~ IR7 变高时, 设置相应的IRR位。 2 、 PR 对中断优先权和中断屏蔽寄存器的状态 进行判断之后,如某中断优先权最高且为 允许中断状态,就向 CPU 发高电平信号 INT , 请求中断服务。
期间,如果是在AEOI(自动结束中断)方式下, 在这个 INTA 脉冲结束时复位 ISR 的相应位。 在非自动中断结束方式下, ISR 相应位要由 中断服务程序结束时发出的 EOI 命令来复位。
yrty
20
6.3.3 8259A 的工作方式
8259A 有多种工作方式,这些工作方式可 以通过初始化命令字( ICW1ICW4 )和操作命 令字(OCW1OCW3)来设置。
AB
CB DB
CS A0
INTA 8259A 从片 A
SP/EN IR7 GND
…
INT CAS0 CAS1 CAS2 IR0
CS A0
INTA 8259A 从片 B
SP/EN IR7 GND
…
INT CAS0 CAS1 CAS2 IR0
CS A0 INTA INT CAS0 8259A CAS1 主片 CAS2 IR7 IR6 IR IR0 …3 SP/EN Vcc
13
yrty
8. 级联缓冲/比较器 可以实现8259A的级联,扩展外中断。
(1) CAS2、CAS1、CAS0 引脚 ① 主8259A: CAS2~CAS0 输出,输出被
响应的从片的标志码。
yrty
14
② 从 8259A: CAS2 ~ CAS0 输入,接收主片发出的标志码, 与自己的标志码比较。若相等,下一个 INTA 信号到来 时,将中断类型号送至数据总线。
完成当前指令 内部中断?
Y
N
NMI?
Y
N
INTR?
Y
IF=1?
N N
TF=0?
Y
第一个中断响应周期 AD7 ~ AD0 浮空 第二个响应周期,取中断类型码
N
标志进栈 保存TF,将IF、TF清0 断点地址进栈 查中断向量表,转中断服务程序 保护现场
Y
执行下条指令
中断服务
中断响应流程
yrty
恢复现场 关中断,返回
yrty
11
6.3.1 8259A 的内部结构与引脚信号
INTA
D0~D7
INT
数据总线 缓冲器
控制逻辑
RD
WR
A0
读写控制 逻辑 中断服务 寄存器 ISR 优先权 电路 PR 中断请求 寄存器 IRR
CS
CAS0 CAS1 CAS2
IR0 IR1 IR7
级联缓冲 比较器 中断屏蔽寄存器IMR
SP EN
yrty
1
CPU对中断的响应
• • • • • • 关中断 保留断点 保护现场 给出中断入口,转入相应的中断服务程序 恢复现场 开中断与返回
yrty
2
执行一条指令
No
取下一条指令
最后一个总线周期的最后一个T状态?
No
有INTR?
Yes Yes Yes
No
中断开放? (FR中的IF=1?)
8259A内部逻辑框图
yrty 12
…
2. 读/写控制逻辑
CS : 接高位地址的译码输出。 A0:常常与地址信号线A0相连。 8259A的两 个端口地址
CPU 通常利用:
OUT 指令, WR与CS, A0配合写入有关的控制字。 IN 指令,
RD与CS, A0配合读出8259A 内部 有关寄存器的内容。
从片A标志码:011,从片B标志码:110
yrty 15
(2) SP / EN引脚
① 当8259A 工作于非缓冲方式 (直接与
CPU 的DB 相连)
SP 为输入,是主从芯片定义引脚。
SP 1, 主片 SP 0, 从片
yrty
16
② 当8259A 工作于缓冲方式 (通过总线缓冲器与
CPU 的DB 相连)
中断服务
恢复现场 开中断,返回
yrty
9
6.3 8259A 可编程中断控制器
在微机系统中,可以使用 8259A 扩展
外部中断, Intel 8259A 可编程中断控制
器,主要有以下功能:
yrty
10
1. 1片8259A 能管理8级中断,通过级联用9
片8259A可以构成64 级主从式中断系统。 2. 每一级中断可以屏蔽或允许。 3. 在中断响应周期, 8259A 可提供相应的 中断类型号。 4. 可编程使8259A 工作在多种不同的方式。
发INTA信号 关中断 (置FR中IF=0) 断点地址(CS. IP)入栈 FR 入栈
识别中断源,转入相应中断服务程序 保护现场
中断服务处理 恢复现场 开中断STI (置FR中IF=1)
yrty 3
中断返回IRET
中断优先级
8086 系统中,中断优先级的次序为: 高 内部中断 (除法错、INTO、INT n) NMI INTR 低 单步中断
yrty
21
♣ ICW1:基本方式初始化字
D7
×
D6
×
D5 ×
D4
1
D3
LTIMD2×D1来自SNGLyrty
4
中断向量 (中断服务程序入口地址) 在表 中的地址 = 中断类型号 × 4
yrty
5
6.2.5 8086CPU 转入中断服务程序的过程
1. 取类型号;
2. 计算向量地址;
3. 根据向量地址查表,将偏移地址送IP,段
基址送CS;
4. 转入中断服务程序,进行中断处理。
yrty
6
6.2.6 8086CPU中断响应流程
7
完成当前指令 内部中断? N NMI? N INTR? Y IF=1? N N Y 第一个中断响应周期 AD7 ~ AD0 浮空 第二个响应周期,取中断类型码 Y
Y
N
TF=0? Y
执行下条指令
Y
yrty
A
8
A
标志进栈 保存TF,将IF、TF清0
断点地址进栈 查中断向量表,转中断服务程序 保护现场
yrty 18
3、CPU响应中断时,送回应答信号 INTA 。 4 、 8259A 接到来自 CPU 的第一个信号 INTA 时, 当前中断服务寄存器(ISR)中相应位置位,
并把 IRR 中相应位复位。同时, 8259A 准备
向数据总线发送中断类型号。
yrty
19
5、在8259A发送中断类型号的后一个INTA 脉冲
EN为输出,用于CPU与8259A传送数据信息时 启动数据总线驱动器。
CPU
DB
数据总线
DB
8259A
驱动器
OE
EN
yrty
此时,主从芯片的定义由ICW4中的M/S实现。
17
6.3.2 8259A 的中断处理过程
下面以8259A单片使用为例,说明其中断 处理过程。 1 、当一条或多条中断请求线 IR0 ~ IR7 变高时, 设置相应的IRR位。 2 、 PR 对中断优先权和中断屏蔽寄存器的状态 进行判断之后,如某中断优先权最高且为 允许中断状态,就向 CPU 发高电平信号 INT , 请求中断服务。
期间,如果是在AEOI(自动结束中断)方式下, 在这个 INTA 脉冲结束时复位 ISR 的相应位。 在非自动中断结束方式下, ISR 相应位要由 中断服务程序结束时发出的 EOI 命令来复位。
yrty
20
6.3.3 8259A 的工作方式
8259A 有多种工作方式,这些工作方式可 以通过初始化命令字( ICW1ICW4 )和操作命 令字(OCW1OCW3)来设置。
AB
CB DB
CS A0
INTA 8259A 从片 A
SP/EN IR7 GND
…
INT CAS0 CAS1 CAS2 IR0
CS A0
INTA 8259A 从片 B
SP/EN IR7 GND
…
INT CAS0 CAS1 CAS2 IR0
CS A0 INTA INT CAS0 8259A CAS1 主片 CAS2 IR7 IR6 IR IR0 …3 SP/EN Vcc
13
yrty
8. 级联缓冲/比较器 可以实现8259A的级联,扩展外中断。
(1) CAS2、CAS1、CAS0 引脚 ① 主8259A: CAS2~CAS0 输出,输出被
响应的从片的标志码。
yrty
14
② 从 8259A: CAS2 ~ CAS0 输入,接收主片发出的标志码, 与自己的标志码比较。若相等,下一个 INTA 信号到来 时,将中断类型号送至数据总线。
完成当前指令 内部中断?
Y
N
NMI?
Y
N
INTR?
Y
IF=1?
N N
TF=0?
Y
第一个中断响应周期 AD7 ~ AD0 浮空 第二个响应周期,取中断类型码
N
标志进栈 保存TF,将IF、TF清0 断点地址进栈 查中断向量表,转中断服务程序 保护现场
Y
执行下条指令
中断服务
中断响应流程
yrty
恢复现场 关中断,返回
yrty
11
6.3.1 8259A 的内部结构与引脚信号
INTA
D0~D7
INT
数据总线 缓冲器
控制逻辑
RD
WR
A0
读写控制 逻辑 中断服务 寄存器 ISR 优先权 电路 PR 中断请求 寄存器 IRR
CS
CAS0 CAS1 CAS2
IR0 IR1 IR7
级联缓冲 比较器 中断屏蔽寄存器IMR
SP EN