实验一设计性实验
自行设计电路和程序,用2位数码管显示A/D转换结果的十六进制值
代码
IOY0 EQU 0600H
AD0809 EQU IOY0+00H*2 ;AD0809 的端口地址
IOY1 EQU 0640H
MY8255_A EQU IOY1+00H*2
MY8255_B EQU IOY1+01H*2
MY8255_MODE EQU IOY1+03H*2
SSTACK SEGMENT STACK
DW 64 DUP(?)
SSTACK ENDS
DATA SEGMENT
VALUE DB 0
DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV DX,MY8255_MODE ;初始化8255,A口输出,B口输出
MOV AL,80H
OUT DX,AL
MOV DX, AD0809 ;启动 AD 采样
OUT DX, AL
CALL DALLY1
IN AL, DX ;读 AD 采样结果
MOV VALUE,AL
CALL SHOW
JMP START
SHOW:PUSH DX
PUSH AX
CALL DALLY1
MOV DX,MY8255_B;数码管熄灭
XOR AX,AX
MOV AL,0FFH
OUT DX,AL
MOV BX,OFFSET DTABLE
MOV AL,VALUE
MOV CL,4
SHR AL,CL
AND AX,000FH
ADD BX,AX
MOV AL,[BX]
MOV DX,MY8255_A
OUT DX,AL
MOV DX,MY8255_B
XOR AX,AX
MOV AL,0FDH
OUT DX,AL
CALL DALLY1
MOV DX,MY8255_B;数码管熄灭
XOR AX,AX
MOV AL,0FFH
OUT DX,AL
MOV BX,OFFSET DTABLE
MOV AL,VALUE
AND AX,000FH ;读低四位
ADD BX,AX
MOV AL,[BX]
MOV DX,MY8255_A
OUT DX,AL
MOV DX,MY8255_B
XOR AX,AX
MOV AL,0FEH
OUT DX,AL
POP AX
POP DX
RET
DALLY: PUSH CX
PUSH AX
MOV CX, 100H
A5: MOV AX, 0800H
A6: DEC AX
JNZ A6
LOOP A5
POP AX
POP CX
RET
DALLY1: PUSH CX
PUSH AX
MOV CX, 0006H
A7: MOV AX, 009FH
A8: DEC AX
JNZ A8
LOOP A7
POP AX
POP CX
RET
CODE ENDS
END START