八人抢答器利用8255来实现,A口接数码管输出,B口接输入,代码如下:
**`;=========================================================
; 文件名: A82551.ASM
; 功能描述: B口为输入,A口为输出,实现八人抢答器
; IOY0
;=========================================================
IOY0 EQU 0600H ;片选IOY0对应的端口始地址
MY8255_A EQU IOY0+00H*2 ;8255的A口地址
MY8255_B EQU IOY0+01H*2 ;8255的B口地址
MY8255_C EQU IOY0+02H*2 ;8255的C口地址
MY8255_MODE EQU IOY0+03H*2 ;8255的控制寄存器地址
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX, MY8255_MODE
MOV AL, 82H
OUT DX, AL;初始化8255
MOV DX, MY8255_C
MOV AL,00H
OUT DX,AL
AA1: MOV DX, MY8255_B
IN AL, DX;读入B口数据
CALL DELAY
CMP AL,0FFH;由于采用共阴极,所以没有人抢答时为全1,比较输入的数据
;与FF,即可知道是否有人抢答
JZ AA1 ;如果没有则跳转到开头,继续检测
MOV AH,AL
AND AL,01H
JZ DISP1
MOV AL,AH
AND AL,02H
JZ DISP2
MOV AL,AH
AND AL,04H
JZ DISP3
MOV AL,AH
AND AL,08H
JZ DISP4
MOV AL,AH
AND AL,10H
JZ DISP5
MOV AL,AH
AND AL,20H
JZ DISP6
MOV AL,AH
AND AL,40H
JZ DISP7
MOV AL,AH
AND AL,80H
JZ DISP8
DISP1: MOV AL,06H
MOV DX, MY8255_A
OUT DX, AL;输出1
JMP EXIT
DISP2: MOV AL,5BH
MOV DX, MY8255_A
OUT DX, AL;输出2
JMP EXIT
DISP3: MOV AL,4FH
MOV DX, MY8255_A
OUT DX, AL
JMP EXIT
DISP4: MOV AL,66H
MOV DX, MY8255_A
OUT DX, AL
JMP EXIT
DISP5: MOV AL,6DH
MOV DX, MY8255_A
OUT DX, AL
JMP EXIT
DISP6: MOV AL,7DH
MOV DX, MY8255_A
OUT DX, AL
JMP EXIT
DISP7: MOV AL,07H
MOV DX, MY8255_A
OUT DX, AL
JMP EXIT
DISP8: MOV AL,7FH
MOV DX, MY8255_A
OUT DX, AL
JMP EXIT
DELAY: PUSH CX
MOV CX, 0F00H
AA2: PUSH AX
POP AX
LOOP AA2
POP CX
RET
EXIT:
CODE ENDS
END START