8259中断控制器应用实验

更新时间:2024-04-06 12:26:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

8259中断控制器应用实验

实验目的

(1) 学习中断控制器8259的工作原理。 (2) 掌握可编程控制器8259的应用编程方法 。

实验内容

(1) 利用实验平台上的8259控制器,通过查询中断源方法,设计一个查询中断应用实验,处理IR0 和IR1发出的中断请求。

实验原理

1.8259控制器的介绍

中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259的级连,能构成多达64级的矢量中断系统。它的管理功能包括: (1) 记录各级中断源请求。

(2) 判别优先级,确定是否响应和响应哪一级中断。 (3) 响应中断时,向CPU传送中断类型号。 8259的内部结构和引脚如图1所示。

图1

8259的命令共有7个,一类是初始化命令字,另一类是操作命令。8259的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1- OCW3分别写入初始化命令寄存器组和操作命令寄存器组。ICW1-ICW4各命令字格式如图2所示,OCW1-OCW3各命令字格式如图3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令

字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。

图2(a) ICW1格式

图2(b) ICW2格式

图2(c) ICW3格式

图2 (d)ICW4格式

图3

2.8259寄存器及命令的控制访问

在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。对寄存器和命令的访问控制如表1所示。

实验说明及步骤

1.8259查询中断应用实验

8259支持查询方式检测中断请求。具体过程为:设置8259 OCW3中的P位为1即可执行查询命令,8259将下一个I/O读命令视作一次中断响应。如果有中断请求,则置ISR中的相应位并读其优先级。从OCW3写操作到I/O读操作期间禁止中断,读出字节的最高位为1表示有中断,最低3位(D2~D0)为最高优先级中断请求源的编码。查询字格式如图4所示。

图4

本实验要求使用这种方法编写程序处理实验单元8259 IR0和IR1请求的中断,IR0请求在屏幕上显示字符“0”,IR1请求则在屏幕上显示字符“1”以示中断到来。IR0和IR1分别用一个单次脉冲的上升沿模拟中断产生。参考程序流程如图5所示,参考实验接线图如6所示。

图6 实验步骤如下。

(1) 确认从PC机引出的两根扁平电缆已经连接在实验平台上。

(2) 运行Tdpit集成操作软件,查看系统资源分配情况,记录与所使用片选信号对应的I/O端口始地址。

(3) 参考实验程序流程图编写程序,注意使用正确的端口地址,然后编译链接。 (4) 参考实验接线图连接实验电路。

(5) 运行程序,按动KK1+、KK2+按键,观察中断响应是否正常。

程序

IOY0 EQU 0D400H

MY8259_ICW1 EQU IOY0+00H MY8259_ICW2 EQU IOY0+04H MY8259_ICW3 EQU IOY0+04H MY8259_ICW4 EQU IOY0+04H MY8259_OCW1 EQU IOY0+04H MY8259_OCW2 EQU IOY0+00H MY8259_OCW3 EQU IOY0+00H

STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV DX,MY8259_ICW1 MOV AL,13H OUT DX,AL

MOV DX,MY8259_ICW2 MOV AL,08H OUT DX,AL

MOV DX,MY8259_ICW4 MOV AL,01H OUT DX,AL

MOV DX,MY8259_OCW1 MOV AL,0FCH OUT DX,AL

QUERY: MOV AH,1 INT 16H

JNZ QUIT

MOV DX,MY8259_OCW3

MOV AL,0CH OUT DX,AL

IN AL,DX

TEST AL,80H

JZ QUERY

AND AL,03H CMP AL,00H

JE IR0ISR JNE IR1ISR JMP QUERY

IR0ISR:MOV AL,30H MOV AH,0EH INT 10H

MOV AL,20H INT 10H JMP EOI

IR1ISR:MOV AL,31H MOV AH,0EH INT 10H

MOV AL,20H INT 10H

EOI: MOV DX,MY8259_OCW2 MOV AL,20H OUT DX,AL JMP QUERY

QUIT: MOV AX,4C00H INT 21H

CODE ENDS END START

JZ QUERY

AND AL,03H CMP AL,00H

JE IR0ISR JNE IR1ISR JMP QUERY

IR0ISR:MOV AL,30H MOV AH,0EH INT 10H

MOV AL,20H INT 10H JMP EOI

IR1ISR:MOV AL,31H MOV AH,0EH INT 10H

MOV AL,20H INT 10H

EOI: MOV DX,MY8259_OCW2 MOV AL,20H OUT DX,AL JMP QUERY

QUIT: MOV AX,4C00H INT 21H

CODE ENDS END START

本文来源:https://www.bwwdw.com/article/78wr.html

Top