MOV DS,AX
MOV DX,OFFSET ADINT MOV AL,0AH MOV AH,25H INT 21H POP DS
;主程序,开放IRQ2中断 MOV DX,021H IN AL,DX
AND AL,1111 1011B OUT DX,AL STI ;开中断 MOV DX,84H MOV AL,05H
OUT DX,AL;启动0809 HLT;等待中断 ;中断服务程序
ADINT PROC NEAR IN AL,DX MOV BUF,AL PUSH DX
MOV DX,20H MOV AL,20H
OUT DX,AL POP DX IRET
ADINT ENDP
17.ADC0809和8255A连接如图8.81所示。8255A的A口工作于方式1输入。当ADC0809转换结束时,EOC的上升沿触发单稳态电路DW,DW输出的负脉冲作为选通脉冲,将ADC0809的输出数据锁存进A口。用中断方式依次将IN7~IN0采样一遍,放到BUFFER开始的数据缓冲区,试编程。设8255A口地址为200H~203H,8259的地址为020H、021H,IRQ2中断类型号为0AH,8259已初始化。
图8.81 解:
8255的PC7为1输出启动信号,PC0~PC2实现通道选择,A/D转换结束信号可从PC4获得,PC3为1输出中断。 ;主程序
STACK SEGMENT STACK STA DB 20 DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENT
BUFFER DB 8 DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX
MOV SP,OFFSET TOP
PUSH DS ;中断向量送中断向量表 MOV AX,SEG ADINT MOV DS,AX
MOV DX,OFFSET ADINT MOV AL,0AH MOV AH,25H INT 21H
POP DS
MOV DX,021H ;开放IRQ2中断 IN AL,DX
AND AL,1111 10llB OUT DX,AL
MOV DI,OFFSET BUFFER ;缓冲区起始地址送DI STD ;DF置1
STI ;开中断 MOV CX,8 MOV BL,90H
NEXT:MOV DX,202H
MOV AL,BL
OUT DX,AL ;启动0809 AND AL,7FH OUT DX,AL
WAIT:IN AL,DX TEST AL,10H
JNZ WAIT ;检测PC4状态,非0,A/D转换没结束 MOV AL,07H MOV DX,203H
OUT DX,AL ;PC3置1,输出中断 HLT
INC BL LOOP NEXT
CLI ;采集完8口,结束 MOV AH,4CH INT 2IH ;中断服务程序
ADINT PROC NEAR
PUSH DX
MOV DX,200
IN AL,DX ;读取转换结果 STOSB ;送指定内存单元 MOV DX,20H ;发中断结束命令 MOV AL,20H OUT DX,AL POP DX
IRET
ADINT ENDP CODE ENDS
END START
18.ADC的引线图及工作时序如图8.82所示。试将此ADC与8255相连接,并编写包括初始化程序在内的、变换一次数据并将数据放在DATA中的程序。
图8.82
19. 试利用8255A、ADC0809设计一 IBM PC机 A/D转换接口卡,8255A的地址为02C0H~02C3H,由系统板上的8253定时器0控制每隔5秒采样一遍ADC0809的8路模拟输入,并将采集的数字量显示于CRT屏幕上。
解:
20.简述82380DMA控制器与8237的兼容性。
21.82380DMA控制器中,如果设置为全循环优先级,通道2最低优先级,通道4最低优先级。则开始时各通道的优先顺序是怎样排列的?若通道2完成DMA服务后,各通道的优先顺序又是如何排列的?
22.简述82380中断控制器PIC的功能。