8259的外部优先级中断实验指导书新规定

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档