文档详情

8259A硬件中断实验程序.doc

发布:2017-06-20约2.66千字共4页下载文档
文本预览下载声明
;*---------------------------------------------------------* ;* 中断控制器8259应用实验-中断方式控制彩灯点亮 * ;* 中断方式控制彩灯点亮程序source file * ;* 运行步骤:1.将PC4和IRQ10两个跳接开关分别联上 * ;* 2.按下1次SW3,申请1次中断,使LED灯点亮1次 * ;* Copyright (c) 2002 by HUST * ;*---------------------------------------------------------* STACK1 SEGMENT STACK DW 200 DUP(?) STACK1 ENDS DATA SEGMENT MESG1 DB Press SW3 one time to invoke interrupt one time,and to light one of LEDs,0ah,0dh DB Exit with q/Q,0ah,0dh,$ LEDDATA DB 01H,02H,04H,08H,10H,20H,40H,80H NUM DW(0) INT0A_OFF DW(?) INT0A_SEG DW(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESG1 MOV AH,09H INT 21h ;显示提示信息 MOV DX,303H ;初始化8255 MOV AL,83H OUT DX,AL MOV DX,300H ;LED灯熄灭 MOV AL,00H OUT DX,AL MOV AX,3572H ;获取原中断向量 INT 21H MOV INT0A_OFF,BX ;保存原中断向量 MOV BX,ES MOV INT0A_SEG,BX CLI ;关中断 MOV AX,2572H MOV DX,SEG LEDLIGHT ;设置新的中断向量 PUSH DS MOV DS,DX MOV DX,OFFSET LEDLIGHT INT 21H POP DS STI ;开中断 IN AL,0A1H ;打开IRQ10 AND AL,0FBH OUT 0A1H,AL IN AL,21H ;打开IRQ2 AND AL,0FBH OUT 21H,AL L1: MOV AH,0BH ;检查是否有’Q’或’q’键按下 INT 21H INC AL JNZ NEXT0 ; 若无键按下,则程序往下执行 MOV AH,08H ;如有’Q’或’q’键按下,则程序退出 INT 21H CMP AL,q JZ EXIT CMP AL,Q JZ EXIT NEXT0: MOV DX,302H ;查PC2是否为0 IN AL,DX AND AL,04H JNZ L1 MOV DX,303H ;按下SW3,则PC4=1申请中断 MOV AL,09H OUT DX,AL PUSH CX MOV CX,100 WT: LOOP WT POP CX MOV DX,303H ;置PC4=0 MOV AL,08H OUT DX,AL JMP L1 EXIT: MOV AX,2572H ;恢复中断向量
显示全部
相似文档