Y1 EQU 3020H ;片选Y1对应的端口始地址,8255 PA55 EQU Y1+00H*4 ;8255的A口地址 PB55 EQU Y1+01H*4 ;8255的B口地址 PC55 EQU Y1+02H*4 ;8255的C口地址 PCTL EQU Y1+03H*4 ;8255的控制寄存器地址 INTR_IVADD EQU 01C8H ;INTR对应的中断矢量地址,8259
INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的OCW1地址 INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的OCW2地址 - 9 -
课程设计报告纸
INTR_IM EQU 0FBH ;INTR对应的中断屏蔽字 Y7 EQU 30E0H ;片选Y7对应的端口始地址
MY8259_ICW1 EQU Y7+00H ;实验系统中8259的ICW1端口地址 MY8259_ICW2 EQU Y7+04H ;实验系统中8259的ICW2端口地址 MY8259_ICW3 EQU Y7+04H ;实验系统中8259的ICW3端口地址 MY8259_ICW4 EQU Y7+04H ;实验系统中8259的ICW4端口地址 MY8259_OCW1 EQU Y7+04H ;实验系统中8259的OCW1端口地址 MY8259_OCW2 EQU Y7+00H ;实验系统中8259的OCW2端口地址 MY8259_OCW3 EQU Y7+00H ;实验系统中8259的OCW3端口地址
;*********************************堆栈段定义**************************************** STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS
;*********堆栈段定义
***************************************************************** DATA SEGMENT
DCTBL DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh ;数码管的段码表 DB 77h,7Ch,39h,5Eh,79h,71h,00H N DB 2
IN0IN DB ? IN1OUT DB ? A3 DB ? B DB 3 DUP(?) D1 DB 0AH
E1 DB 33H FLAG DB ?
MES4 DB 0DH,0AH,'++++++ WELCOME TO WEI JI YUAN LI KE SHE: ++++++',0DH,0AH,'$' MES0 DB 0DH,0AH,'******** DATA COLECTION SYSTEM ********',0DH,0AH,'$' MES1 DB 0DH,0AH,'------------ ZUO ZHE :LIU JING AND WANG ZHI MING',0DH,0AH,'$' MESS DB 0DH, 'PRESS ANY KEY TO END THE SYSTEM!',0DH,0AH,0DH, 0AH,'$' MES2 DB 0DH, 'IN1OUT DATA : $',0DH,'$'
CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量 IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量 IM_BAK DB ? ;保存INTR原中断屏蔽字的变量 DATA ENDS
;*********代码段定义*********** CODE SEGMENT
ASSUME CS:CODE,SS:STACK1,DS:DATA
START: MOV AX, DATA MOV DS, AX - 10 -
课程设计报告纸
MOV AL, 10000000B ;8255初始 MOV DX, PCTL OUT DX, AL MOV DX, OFFSET MES4
MOV AH, 9 ;显示MES4 INT 21H
MOV DX, OFFSET MES0
MOV AH, 9 ;显示MES0 INT 21H
MOV DX, OFFSET MES1
MOV AH, 9 ;显示MES1 INT 21H MOV DX, OFFSET MESS
MOV AH, 9 ;显示MESS INT 21H
CLI ; 8259初始 MOV AX, 0000H
MOV ES, AX ;替换INTR的中断矢量
MOV DI, INTR_IVADD ;保存INTR原中断处理程序入口偏移地址 MOV AX, ES:[DI] MOV IP_BAK,AX
MOV AX, OFFSET MYISR ;设置当前中断处理程序入口偏移地址 MOV ES:[DI],AX ADD DI, 2
MOV AX, ES:[DI] ;保存INTR原中断处理程序入口段地址 MOV CS_BAK,AX
MOV AX, SEG MYISR ;设置当前中断处理程序入口段地址 MOV ES:[DI],AX
MOV DX, INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位 IN AL, DX ;保存INTR原中断屏蔽字 MOV IM_BAK,AL
AND AL, INTR_IM ;允许PC机内部8259的IR2中断 OUT DX, AL
MOV DX, MY8259_ICW1 ; 初始化实验系统中8259的ICW1 MOV AL, 13H ;边沿触发、单片8259、需要ICW4 OUT DX, AL
MOV DX, MY8259_ICW2
MOV AL, 08H ;初始化实验系统中8259的ICW2 OUT DX, AL
MOV DX, MY8259_ICW4 ;初始化实验系统中8259的ICW4 MOV AL, 01H ;非自动结束EOI OUT DX, AL
MOV DX,MY8259_OCW3 - 11 -
课程设计报告纸
MOV AL, 0AH OUT DX, AL
MOV DX, MY8259_OCW1 ;初始化实验系统中8259的OCW1 MOV AL, 0FCH ;打开IR0的屏蔽位 OUT DX, AL
MOV DX, TCTL ;8254初始 MOV AL, 17H
OUT DX, AL MOV DX, TIMER0; MOV AL,2 OUT DX,AL STI S33:
MOV AL, 0
MOV DX, ADCS ;启动0809 IN0 OUT DX, AL
MOV FLAG,0FFH CALL DISPINT0 MOV DX, OFFSET MES2
MOV AH, 9 ;显示MES2 INT 21H MOV AL,IN1OUT CALL DISPINT1 MOV DL,0FFH MOV AH,6 INT 21H JZ S33 QUIT: CLI
MOV AX, 0000H ;恢复INTR原中断矢量 MOV ES, AX
MOV DI, INTR_IVADD ;恢复INTR原中断处理程序入口偏移地址 MOV AX, IP_BAK MOV ES:[DI],AX ADD DI, 2
MOV AX, CS_BAK ;恢复INTR原中断处理程序入口段地址 MOV ES:[DI],AX MOV DX, INTR_OCW1
MOV AL, IM_BAK ;恢复INTR原中断屏蔽寄存器的屏蔽字 OUT DX, AL STI
EXIT: MOV AH, 4CH ;返回到DOS INT 21H - 12 -
课程设计报告纸
;***********************数码管显示INT1**************************** DISPINT1 PROC
PUSH AX
MOV BL,AL ; 屏幕显示 AND AL, 0F0H
MOV CL, 4 ; 显示高位 ROR AL, CL CALL CRT1 MOV AL, BL
AND AL, 0FH ;显示低位 CALL CRT1 CRLF POP AX RET DISPINT1 ENDP CRT1 PROC
ADD AL, 30H CMP AL, 39H JBE D0
ADD AL, 7 ;在屏幕上显示一位16进制字符 D0: MOV DL, AL MOV AH, 2 INT 21H RET CRT1 ENDP
;***********************数码管显示INT0**************************** DISPINT0 PROC PUSH DS
PUSH AX
MOV AL,IN0IN ;转换IN0个位 十分位 百分位 MOV AH,0 DIV E1
MOV SI,OFFSET B MOV [SI],AL MOV AL,AH MOV AH,0 MUL D1 DIV E1 INC SI MOV [SI],AL MOV AL,AH
相关推荐: