不锈钢鱼缸支架承重:8259A应用举例
硬件连接如图6.22所示。
8259A的硬件连接比较简单,不需要附加其他电路就可以与CPU直接连接。
系统的工作过程是:当80486 CPU响应8259A的中断请求INT时,向8259A回送中断响应信号
在第一个
在第二
【例6.2】 设计一个中断处理程序。要求中断请求信号以跳变方式由IR2引入(可为任一定时脉冲信号),当CPU响应IR2请求时,输出字符串“8259A INTERRUPT!”,中断10次,程序退出(设8259A的端口地址为20H和21H,中断类型号为40H)。
中断处理程序如下:
DATA SEGMENT
MESS DB'8259A? INTERRUPT!', 0AH, 0DH, '$'
COUNT DB 10 ; 计数值为10
DATA ENDS
STACK SEGMENT STACK
STA DB 100H DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
MAIN: CLI
MOV AX,DATA
NOV DS, AX
MOV AX, STACK
MOV SS, AX
MOV SP, TOP
MOV AL, 13H ; 8259A初始化
OUT 20H, AL ; 单片, 边沿触发
MOV AL, 40H ; 中断类型号40H
OUT 21H, AL
MOV AL, 01H ; 非自动结束
OUT 21H, AL
MOV AX, SEG INT-P ; 设置中断向量
MOV DS, AX ; 中断服务子程序入口段基址送DS
MOV DX, OFFSET INT-P ; 中断服务子程序入口偏移地址送DX
MOV AL, 42H ; IR2的中断类型号42H送AL
MOV AH, 25H ; 25H功能调用
INT 21H
IN AL, 21H ; 读IMR
AND AL, 0FBH ; 允许IR2请求中断
OUT 21H, AL ; 写中断屏蔽字OCW1
WAIT1: STI ; 开中断
CMP COUNT,0 ; 判断10次中断是否结束
JNZ WAIT1 ; 未结束, 等待
MOV AX, 4C00H ; 结束, 返回DOS
INT 21H
INT-P PROC ; 中断服务子程序
PUSH DS ; 保护现场
PUSH AX
PUSH DX
STI ; 开中断
MOV DS, AX
MOV DX, OFFSET MESS
MOV AH, 09H
INT 21H
DEC COUNT ; 控制10次循环
JNZ NEXT
IN AL, 21H ; 读IMR
OR AL, 04H ; 屏蔽IR2请求
OUT 21H, AL
NEXT: CLI ; 关中断
MOV AL, 20H ; 写OCW2, 送中断结束命令EOI
OUT 20H, AL
POP DX ; 恢复现场
POP AX
POP DS
IRET ; 中断返回
INT-P ENDP
CODE ENDS
END MAIN