;==============================================
;微机接口
;A/D变换实验(中断方式)
;ADC0809CS接208H~20FH,8279的CS接210H~217H,8259CS口接200H~207H
;BY 20052025 Diao Min刁民(http://www.diaomin.org) 07-12-18
;================================================
TIME EQU 0FFFH
INT00 EQU 200H
INT01 EQU 201H
Z8279 EQU 212H
D8279 EQU 210H
LEDMODE EQU 00
LEDFEQ EQU 38H
STACK SEGMENT
STACK ENDS
DATA SEGMENT
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS
ATA ,SS:STACK ,ES
ATA
START: CLI ;关中断
MOV AX,8000H
MOV ES,AX
MOV DI,0020H ;设置中断向量号8
MOV AX,OFFSET INT_PROC ;偏移地址
STOSW
MOV AX,8100H ;段地址
STOSW
MOV AL,13H
MOV DX,INT00
OUT DX,AL ;设置ICW1
MOV AL,08H ;设置中断向量号为8
MOV DX,INT01
OUT DX,AL ;设置ICW2
MOV CX,TIME
L00:LOOP L00
MOV AL,01H
MOV DX,INT01
OUT DX,AL ;设置ICW4
MOV CX,TIME
L01:LOOP L01
MOV DX,Z8279
MOV AL,LEDMODE
OUT DX,AL ;设置8279工作方式
MOV AL,LEDFEQ
OUT DX,AL
MOV DX,INT01
MOV AL,00H
OUT DX,AL ;设置OCW1,使8位中断请求全部开放
MOV CX,TIME
L02:LOOP L02
MOV DX,Z8279
MOV AL,0D0H
OUT DX,AL ;设置8279工作在清除方式,将显示RAM全部清零
MOV CX,TIME
L05:LOOP L05
NEXT: MOV DX,208H
MOV AL,00H
OUT DX,AL
STI ;开中断
HLT ;等待外部中断
JMP NEXT
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H
DB 7CH,39H,5EH,79H,71H
;中断处理程序部分
INT_PROC PROC FAR
PUSH AX
PUSH CX
PUSH DX
MOV CX,TIME
L1: LOOP L1
IN AL,DX
MOV CX,TIME
L2: LOOP L2
PUSH AX
MOV DX,Z8279
MOV AL,80H
OUT DX,AL ;在指定位置的数码管上输出数据
POP AX
PUSH AX
AND AL,0FH
LEA BX,LED
XLAT
MOV DX,D8279
OUT DX,AL ;低位换码显示
POP AX
PUSH AX
MOV DX,Z8279
MOV AL,81H
OUT DX,AL ;在指定位置的数码管上输出数据
POP AX
PUSH AX
MOV CL,4H
SHR AL,CL
LEA BX,LED
XLAT
MOV DX,D8279
OUT DX,AL ;高位换码显示
POP AX
MOV DX,INT00
MOV AL,20H
OUT DX,AL ;设置OCW2,发中断结束命令
MOV CX,TIME
L03:LOOP L03
POP DX
POP CX
POP AX
IRET
INT_PROC ENDP
CODE ENDS
END START
快速链接:http://www.diaomin.org/go/18179.html
Tags:




没人甩我?!
到此一游