微机原理与接口技术实验报告 下载本文

(1)将加到引脚IR0~IR7上的中断请求寄存到中断请求寄存器中。

(2)在中断屏蔽寄存器的管理下,没有被屏蔽的中断请求被送到优先权电路判优。 (3)选中当前级别最高的中断源,然后从引脚INT向CPU发出中断请求信号。 (4)CPU满足一定的条件后,向8259A发出两个中断响应信号(负脉冲):

1)8259A从引脚INTA收到第1个中断响应信号之后,立即使中断服务寄存器中与被选中的中断源对应的那一位置1,同时把中断请求寄存器中的相应位清0。

2)从引脚INTA收到第2个中断响应信号之后,8259A把选中的中断源类型码n通过数据线送往CPU。

(5)在实模式下,CPU从4×n~4×n+3单元取出该中断源的中断向量→IP,CS,从而引导CPU执行该中断源的中断服务程序。 3. 8259A编程 (1)初始化编程

提供了4个(ICW1~ICW4)初始化命令字,写入命令寄存器组后,就建立了8259A的基本工作方式。系统8259A的初始化编程在微机启动时,由BIOS自动完成。用户不需再对其初始化,更改它的初始化设置。

BIOS对系统8259A初始化为: ? ? ? ?

中断触发方式采用边沿触发。

中断屏蔽方式采用常规屏蔽方式。

中断优先级的管理采用完全嵌套即固定优先级方式。IR0的请求级别最高,IR7的请求级别最低。

中断结束,采用常规结束方式。

(2)操作方式编程

将操作命令字OCW1~OCW3写入操作命令寄存器组,对中断处理过程实现动态控制。OCW1~ OCW3各命令格式如图11-2所示。 ? OCW1——写中断屏蔽字(对奇地址操作) ? ?

? 某位Mi为1,表示对应的中断源IRQi被屏蔽;Mi为0,IRQi被开放。 OCW2——写中断方式命令字(对偶地址操作)

? 设置优先级是否进行循环,循环的方式及中断结束的方式。 OCW3——(对偶地址操作)

? 用来设置特殊屏蔽方式、查询方式 ?

用来读8259A的中断请求寄存器IRR,中断服务寄存器ISR、中断屏蔽寄存器IMR的当前状态。

21

4. PC机系统中8259A的应用

11-2

现代PC机系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中部分中断源已经被系统硬件占用,具体使用情况如表11-1所示。中断向量表的占用情况见表10-1。

两片8259A的端口地址为:主片在020H~03FH,实际使用020H和021H两个端口;从片在0A0H~0BFH范围,实际使用0A0H和0A1H两个端口。

11-

5. 8259A的应用编程流程,如图11-3所示。

开发用户中断时,做到以下几点:

(1)硬件方面:将外扩中断源的中断请求(由低电平到高电平的跃变)接入选定的中断源IRQi上。

(2)软件方面:

? 置换相应的中断向量,即把用户中断子程序的入口地址写入4×n~4×n+3单元。 ? ? ?

分别向主从8259A写入屏蔽字,使主片IMR的D2位置0;使从片IMR的Di位置0,开放用户中断。(即填写OCW1)

每一次中断服务结束,即执行IRET之前,向从片、主片8259A送中断结束命令。(即填写OCW2)

返回DOS之前,写中断屏蔽字OCW1,使主片IMR的D2位置1;使从片IMR的Di位置1,屏蔽用户中断。恢复系统中断屏蔽字、恢复系统中断向量。

22

三.程序清单及相关注解

;按键8次,计算键盘中断次数 DATA SEGMENT CSBAK DW ? IPBAK MKBAK

DW ? DB ?

DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START PROC FAR

MOV AX,DATA

MOV DS,AX IN AL,21H MOV CLI AND OUT MOV MOV MOV

;保留8259初始屏蔽字的状态 ;关中断 ;打开键盘屏蔽

;修改键盘中断的中断矢量

MKBAK,AL 21h,AL AX,0

AL,11111101B

ES,AX

DI,24H ;IRQ1,09H,24H=09H*4 AX,ES:[DI] IPBAK,AX ;写入IP AX,OFFSET MYINT

23

MOV MOV MOV

CLD STOSW MOV MOV MOV STOSW XOR

A1: STI CMP

JZ JMP

A2: PUSH

CLI MOV MOV MOV

AX,ES:[DI] CSBAK,AX AX,SEG MYINT DX,DX

;写入CS

;清计数器

;开中断

DX,10H ;是否按了8次键

;是,结束程序运行

;否则继续等待键盘中断 ;保存计数值 ;关中断

;恢复系统中断矢量

A1 DX AX,0

A2

ES,AX

DI,24H;IRQ1,09H AX,IPBAK

MOV CLD STOSW MOV STOSW

AX,CSBAK

;恢复系统8259屏蔽字

;开中断

;显示计数值

MOV AL,MKBAK OUT 21h,AL STI POP DX CALL MOV

INT RET

START ENDP

21H

SHWORD AX,4C00H

MYINT PROC FAR STI

;开中断

;自定义键盘中断处理程序

INC DX IN AL,60H IN AL,61H MOV AH,AL OR AL,80H OUT 61H,AL CLI MOV AL,61H OUT 20H,AL

;计数加一 ;读入扫描码(用户可对此键值进行处理)

;读入控制字节

;复位键盘 ;关中断

;中断结束命令送中断控制器

IRET ;中断返回

MYINT ENDP SHWORDPROC NEAR ;2→16进制显示

24