微机原理与接口技术——中断应用

(一) 操作练习

设置8259A的IR0为60H中断,利用按键触发中断,使基本I/O驱动LED灯亮、灭。

CODE SEGMENT 'CODE'
    ASSUME CS:CODE,DS:CODE        
START:  MOV AX,0
MOV DS,AX
MOV SI,60H*4
MOV AX,OFFSET INT0
MOV [SI],AX
MOV AX,SEG INT0
MOV [SI+2],AX
CLI
MOV AL,   13H               ;设置ICW1,边沿触发
MOV DX,400H
OUT DX,AL
MOV AL,     60H            ;设置ICW2
MOV DX,402H
OUT DX,AL
MOV AL,     05H             ;设置ICW4,普通全嵌套方式,非缓冲,非自动中断结束
OUT DX,AL
MOV AL,     0FEH               ;设置OCW1,只开放IRO中断
OUT DX,AL
MOV BL,20H
STI
JMP $
RET
INT0 PROC
        SHL BL,1
        MOV AL,BL
        MOV DX,      0600H               ;74LS373输出口地址
        OUT DX,AL 
	    MOV DX,400H
	    MOV AL,20H
	    OUT DX,AL
	    IRET	
INT0 ENDP
CODE ENDS
END START

仿真结果(截图放在下面):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 请回答:8259A初始化命令中,ICW2命令为60H,则可推断IR7线上的中断向量号为多少?说明原因。
    ICW2的高五位作为中断类型号的高5位,中断类型号的低3位取决于IR0-IR7,依次是000-111。若写入ICW2的值是60H,则IR7线上的中断向量号=01100111=67H.

  2. IR0中断矢量地址是多少?
    60H*4=0180H

  3. 请简要回答:
    (1) 如果将中断程序里面红色框起来的这两行代码删除,仿真运行会出现怎么样的情况?
    只有D7会亮,无法改变其他LED灯的亮灭
    (2) 这两行代码实现的什么功能?怎么判断它实现了该功能,是否是通过特征位来判断的?
    实现的是结束中断
    20H=0010 0000H
    分别对应 D7 D6 D5 D4 D3 D2 D1 D0
    所以D5为1 D4、D3 为0 ,为送中断结束
    通过D4D3判断,所以为特征位判断
    (3) 如果要实现LED灯一直循环亮,并且计算中断的次数,怎么修改下面的中断程序?(将修改的程序截图,并标注你修改的部分)
    在这里插入图片描述
    在这里插入图片描述

  4. 请简要回答:为什么下面截图里面的地址一个是400H,一个是402H?(请结合上面完整代码和原理图进行分析)
    在这里插入图片描述
    0400H是IO2的输出地址
    在这里插入图片描述
    因为ICW2对应的A0为1 A0对应地址总线的A1所以地址总线的A1=1
    所以为0402H

  5. 请简要回答:下面这段代码实现了什么功能?
    在这里插入图片描述
    设置中断入口的偏移地址和中断入口的段地址

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值