📄 adc0809a.asm
字号:
;-------------------------------------------------------
; 程序说明
;实现功能:通过ADC0809(模/数转换器)将输入的模拟电压转换成8位
;的16进制数并显示在屏幕上(通过延时方式进行A/D转换),按任意键退出程序。
;
; 测试专用,适用于唐都TD-PIT实验箱 胖大海
;-------------------------------------------------------
ADC0809 EQU 1040H ;定义ADC0809的IN0的端口地址
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,ADC0809 ;IN0的端口地址送DX
OUT DX,AL ;通过向IN0的端口地址送数据来启动IN0开始转换
;注意此时的AL值的大小对程序的执行无影响
CALL DELAY ;延迟一会儿
IN AL,DX ;读取转换结果
;----------------------------------------------------
;显示读取的16进制转换结果,先显示高位再显示低位
MOV CH,AL ;把低4位保存到CH中,先处理高4位
AND AL,0F0H
MOV CL,04H
SHR AL,CL
CMP AL,09H
JG A1
ADD AL,30H
JMP A2
A1: ADD AL,37H
A2: MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,CH ;处理低4位
AND AL,0FH
CMP AL,09H
JG A3
ADD AL,30H
JMP A4
A3: ADD AL,37H
A4: MOV DL,AL
MOV AH,02H
INT 21H
;----------------------------------------------------
CALL DELAY ;输出一个回车
MOV DL,0DH
MOV AH,02H
INT 21H
MOV AH,06H ;是否有键盘输入,有则退出
MOV DL,0FFH
INT 21H
JNE EXIT1
JMP START
EXIT1:
MOV AH,4CH
INT 21H
;------------------------------------------------------------
;延迟子程序
DELAY PROC NEAR
PUSH CX
PUSH AX
MOV CX,4000H
DELAY1: MOV AX,0FF0H
DELAY2: DEC AX
JNZ DELAY2
LOOP DELAY1
POP AX
POP CX
RET
DELAY ENDP
;------------------------------------------------------------
CODE ENDS
END START
;------------------------------------------------------------
; 参考接线:
;ADC0809的D0-D7接ISA仿真借口的XD0-XD7
;ADC0809的A-C接ISA仿真借口的XA0-XA2
;ADC0809的WR、RD、CS分别接ISA仿真借口的XIOW、XIOR、IOY2
;ADC0809的CLK接信号源单元的10KHz
;ADC0809的IN0接ADJ(模拟电压源)
;
; 一些说明:
;因为PCI的I/O基地址是系统动态给定的,不同的机型的PCI的I/O基地址各不相同
;而I/O信号线对应的实际地址=基地址+相对偏移。
;IOY2的相对偏移为40-5FH,所以当你选中IOY2时(假设I/O基地址
;为1400),IOY2可使用的I/O地址范围为1440H-145FH
;(即1400H+40H到1400H+5FH)
;
;如果线接对了、I/O地址也都对、程序也一样,还是出不来,
;那就是箱子有问题。
;------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -