搜索
您的当前位置:首页正文

实验五8259A中断实验

来源:爱go旅游网
实验五 8259单级中断控制器实验

一、实验目的

⒈ 掌握8259中断控制器的接口方法。 ⒉ 2. 掌握8259中断控制器的应用编程。 二、实验内容

利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。 三、实验接线图

图6-6

四、编程指南

⑴ 8259芯片介绍

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

⑵ 本实验中使用3号中断源IR3, “ ”插孔和IR3相连,中断方式

为边沿触发方式,每拨二次AN开关产生一次中断,满5次中断,显示“8259——good”。如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。 五、实验程序框图

IR3中断服务程序:

IR7中断服务程序:

六、实验步骤

1、按图6-6连好实验线路图。

⑴8259的INT连8088的INTR;⑵8259的INTA连8088的INTA;⑶“

插孔和8259的3号中断IR3插孔相连,“ CS端接FF80H孔。

”端初始为低电平;⑷8259的

2、运行实验程序,在系统处于命令提示符“P.”状态下,按SCAL键,

输入12D0,按EXEC键, 系统显示8259-1。 3、拨动AN开关按钮, 按满l0次显示good。 七、实验程序清单

CODE SEGMENT ;H8259.ASM ASSUME CS: CODE

INTPORT1 EQU 0FF80H INTPORT2 EQU 0FF81H INTQ3 EQU INTREEUP3 INTQ7 EQU INTREEUP7

PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 ORG 12D0H

START: JMP START0 BUF DB ?,?,?,?,?,? intcnt db ? data1:

db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h

db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH

START0: CLD ;递加

CALL BUF1 ;写显示缓冲初值

CALL WRINTVER ;写中断向量 MOV AL,13H ;写ICW1 MOV DX,INTPORT1 OUT DX,AL MOV AL,08H ;写ICW2 MOV DX,INTPORT2 OUT DX,AL MOV AL,09H ;写ICW4 OUT DX,AL

MOV AL,0F7H ;写OCW1 OUT DX,AL

MOV intcnt,01H ;中断计数初值 STI ;开中断 WATING: CALL DISP ;DISP 8259-1

JMP WATING ;循环显示

WRINTVER: MOV AX,0H ;写中断向量子程序

MOV ES,AX

MOV DI,002CH ;IR3中断向量地址 LEA AX,INTQ3 ;IR3中断服务地址

STOSW ;写中断服务地址偏移量 MOV AX,0000h ;写中断服务段地址 STOSW

MOV DI,003CH ;IR7中断向量地址 LEA AX,INTQ7 ;IR7中断服务地址

STOSW ;写中断服务地址偏移量 MOV AX,0000h ;写中断服务段地址 STOSW RET INTREEUP3: CLI ;IR3中断服务 push ax ;压栈保护现场 push bx push cx push dx

MOV AL,INTCNT ;

CALL CONVERS ;拆送缓冲区 MOV BX,OFFSET BUF ;077BH MOV AL,10H MOV CX,05H INTRE0: MOV [BX],AL ;高五位缓冲区送熄灭码

INC BX

LOOP INTRE0 MOV AL,20H ;中断返回码 MOV DX,INTPORT1 OUT DX,AL

ADD INTCNT,01H CMP INTCNT,06H JNA INTRE2 ;中断次数小于5次继续 CALL BUF2 ;中断次数结束DISP:good INTRE1: CALL DISP

JMP INTRE1 CONVERS: AND AL,0FH ;拆送缓冲区

MOV BX,offset buf ;077AH MOV [BX+5],AL RET INTRE2: MOV AL,20H

MOV DX,INTPORT1 OUT DX,AL pop dx

pop cx pop bx

pop ax

STI

IRET INTREEUP7: CLI

MOV AL,20H MOV DX,INTPORT1 OUT DX,AL

call buf3 INTRE3: CALL DISP

JMP INTRE3

DISP: MOV AL,0FFH

MOV DX,PA OUT DX,AL

MOV CL,0DFH MOV BX,OFFSET BUF

DIS1: MOV AL,[BX]

MOV AH,00H PUSH BX

MOV BX,OFFSET DATA1 ADD BX,AX MOV AL,[BX]

POP BX MOV DX,PB OUT DX,AL MOV AL,CL MOV DX,PA OUT DX,AL PUSH CX

DIS2: MOV CX,00A0H

LOOP $ POP CX

CMP CL,0FEH JZ LX1 INC BX

ROR CL,1 JMP DIS1

LX1: MOV AL,0FFH

MOV DX,PB OUT DX,AL RET

BUF1: MOV BUF,08H

MOV BUF+1,02H

;中断返回 ;IR7中断服务 ;中断返回码

;disp:err

;循环显示:ERR

;显示子程序 ,5ms

;20H

;01H

;SHR CL,1

;写”8259-1”

MOV BUF+2,05H MOV BUF+3,09H MOV BUF+4,17H MOV BUF+5,01H RET

BUF2: MOV BUF,09H

;写”good ”

MOV BUF+1,00H MOV BUF+2,00H MOV BUF+3,0dH MOV BUF+4,10H MOV BUF+5,10H RET

BUF3: MOV BUF,0eH

MOV BUF+1,18H MOV BUF+2,18H MOV BUF+3,10H MOV BUF+4,10H MOV BUF+5,10H RET CODE ENDS END START

;写”err

因篇幅问题不能全部显示,请点此查看更多更全内容

Top