8259的外部优先级中断实验指导书新规定
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中断实验
8259A是一种可编程接口芯片,它将中断源的优先级排队、识别中断源及提供中断向量的功能集于一体,因此,只需对8259A进行编程,就可以管理8级中断,并选择优先模式、中断请求方式、中断结束方式等。在中断源超过8个时,不需加任何附加电路通过多片级联构成多达64级向量中断,所以8259A的中断控制功能既强又灵活。
2.4.4 实验预习:
(1) 了解中断的概念。
(2) 了解8259A的工作原理。
(3) 分析、了解中断子程序入口地址的设置过程。
2.4.5实验要求:
(1).要认真预习实验内容。
(2).要求在运行主程序时对每次中断进行记录。
2.4.6实验步骤及说明:
(1)连线。
(2)编辑录入源程序并汇编。
(3)启动系统,运行程序。
(4)触发脉冲(中断申请)。
(5)观察验证结果。
(6)说明:一个8259A可外接8个中断源,本实验只响应INT0,INT1,INT2中断,8259A 也可以多级连接以响应多个中断源。本实验的8259A的INT0,INT1,INT2管脚分别是中断申请源,哪个优先级高,就首先执行相应的中断服务程序,假设CUP 首先响应的是INT0申请源,那么就要执行IENT0中断服务程序,就说明它的级别最高。现将INT0,INT1,INT2管脚连到一起,接到单脉冲信号发生器插孔,在运行主程序时,同时申请中断(给一个正脉冲),观察存储器的内容在执行IENT0、IENT1、IENT2中断服务程序前后数据的变化(从0400H观察)。
联机
①用串口线连接实验机和系统计算机。打开实验机的电源,显示8086。
②点击系统机桌面上的图标(CT2000系统软件实验平台),在对
话框中选择“好”。在仿真器菜单中点击“仿真器设置”。在对话框中选择不使用软件模拟器。在选择仿真器项中选择“CT2000实验系统”,仿真头选择“8088/8086实验”,CPU选择“8088”。端口选择为COM1。确认硬件仿真器设置。实验机显示“888888”。
通过逻辑分析仪记录波形
③点击项目菜单选择“编译”→检查编译是否正确。
④置逻辑分析仪:仿真器→跟踪器/逻辑分析仪设置→逻辑分析
仪;逻辑分析仪窗口“”→触发设置→采样频率10M。
⑤点击“”复位→“”全速运行程序→发“”单脉冲后,可通过逻辑分析仪窗口观察到中断相应的波形,通过分析波形可以了解中断的响应过程,以及中断响应的条件,记录波形。
2.4.7 8259A的内部寄存器:
(1) 中断请求寄存器IRR
每片8259A能够管理8个外部中断源,其中断请求输入端为IR7-IR0,在没设定指定优先级或优先级循环方式时IR0的优先级最高,IR7的优先级最低。请求信号可以是电平触发也可以是边沿触发。中断请求寄存器IRR是一个具有锁存功能的8位寄存器,用它来存放外部中断请求信号IR7-IR0。当某个中断源有请求时,IRR寄存器中的相应位置“1”,当中断请求被响应,IRR寄存器中的相应位被清零。
(2) 中断屏蔽寄存器IMR
中断屏蔽寄存器IMR是一个8位锁存器,与8级中断源IR7-IR0相对应。其中的每一位可以对IRR中相对应的中断源进行屏蔽。某位为“1”时,相应中断源被屏蔽,某位为“0”时,表示开放。
(3) 优先权分析器PR
当中断源IRi有中断请求产生时,PR检查新产生的中断请求的优先级并和“正在服务的中断”进行比较,判定是否向CPU提出中断申请。同时有多个中断请求时,PR进行中断请求优先级的比较并提出申请,及中断被响应时送出最高优先级中断源的中断类型号。
(4) 中断服务寄存器ISR
中断服务寄存器ISR是一个8位锁存器,与8级中断源IR7-IR0相对应。用来存放正在服务的所有中断级,包括尚末服务完而中途被别的中断所打断了的中断级,在第一个INTA信号有效时ISR的相应位置“1”,中断服务结束时用命令将其清零。
2.4.8 编程注意事项:
(1) 正确设置可编程中断控制和工作方式。
(2) 必须正确设置中断服务程序人口地址。
2.4.9 8259A的编程:
(1) 设置初始化命令字ICW1:单片8259A, 边沿触发。
设置ICW1,对8259A编程指令序列为:
mov dx, CS8259A
mov al, 00010011B
out dx, al
(2) 设置初始化命令字ICW2:中断号为20H。
T3为中断向量地址。
设置ICW2,对8259A编程指令序列为:
mov dx, CS8259B
mov al, 00100000B
out dx, al
(3) 设置初始化命令字ICW4:工作在8086/88 方式。
设置ICW4,对8259A编程指令为:
mov dx, CS8259B
mov al, 00000001B
out dx, al
(4) 设置操作命令字OCW1:只响应INT0, INT1, INT2 中断。
1——中断请求被屏蔽
设置OCW1,对8259A编程指令序列为:
mov dx, CS8259B
mov al, 11111000B
out dx, al
(5) 设置操作命令字OCW2:8259A采用普通EOI结束方式。
偶地址 0 0 1 0 0 0 0 0
设置OCW2,对8259A编程指令序列为:
mov dx, CS8259A
mov al, 20h
2.4.11 实验程序:
ICW1 equ 00010011b ; 单片8259A, 上升沿中断, 要写ICW4 ICW2 equ 00100000b ; 中断号为20H
ICW4 equ 00000001b ; 工作在8086/88 方式
OCW1 equ 11111000b ; 只响应INT0, INT1, INT2 中断
CS8259A equ 08000h ; 8259A地址
CS8259B equ 08001h
data segment
MSG db 0, 0, 0, 0, 0, 0, 0, 0
CNT db 0
data ends
code segment
assume cs:code, ds: data
IEnt0 proc near
push ax