📄 yang5.txt
字号:
C8279 EQU 20AH ;8279 控制端口
D8279 EQU 208H ;8279 数据端口
C8255 EQU 203H ;8255 控制端口
P8255C EQU 202H ;8255 C端口
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
START:PUSH CS
POP DS
INI:MOV DX,C8255
MOV AL,80H
OUT DX,AL ;置8255工作方式,C端口输出
MOV DX,C8279
MOV AL,00H
OUT DX,AL ;KEYBORD DISPLY MODE,置键盘显示模式
MOV AL,2AH
OUT DX,AL ;8279 CLOCK,置时钟命令
MOV AL,90H
OUT DX,AL ;WRITE RAM COMMAND,写RAM命令,地址自动加1
MOV AL,0D1H
OUT DX,AL ;8279 CLEAR,清零
JMP SHORT $+2
WAIT1:IN AL,DX ;从8279控制端口读状态
MOV AH,AL
AND AL,80H
JNZ WAIT1 ;当显示无效时跳WAIT1
MOV AL,AH
AND AL,0FH
CMP AL,00H
JE WAIT1 ;当FIFO RAM中没有键值时
LEA BX,STEP ;把STEP的地址传给BX
RUN:CALL CHKKEY ;调CHKKEY扫描键子函数
CALL DISPLAY ;调DISPLAY显示子函数
MOV CX,08H
LOOP3:MOV DX,P8255C
MOV AL,[SI]
OUT DX,AL ;往C端口输出脉冲
INC SI
CALL DELAY ;调DELAY延时子函数
LOOP LOOP3
JMP RUN
CHKKEY PROC NEAR ;扫描键子函数
RDKEY:MOV DX,C8279
IN AL,DX ;从8279控制端口读状态
MOV AH,AL
AND AL,80H
CMP AL,80H
JE RDKEY
MOV AL,AH
AND AL,0FH
CMP AL,00H
JE RTN ;当FIFO RAM中没有键值时
MOV AL,40H
OUT DX,AL
MOV DX,D8279
IN AL,DX ;从8279数据端口读键值
CHK:CMP AL,15H
JE QUIT ;如果AL=15H则退出
CMP AL,0AH
JNC DIRE ;如果AL>=0AH,则跳转DIRE
MOV DELAYTIME,AL ;DELAYTIME存放延时时间
JMP RTN
DIRE:CMP AL,12H
JNE NEXT ;如果AL=12H,即按下“-”键时,则继续执行
MOV DIRDSP,40H
LEA BX,STEP
JMP RTN
NEXT:CMP AL,13H
JNE RTN ;如果AL=13H,即按下“+”键时,则继续执行
MOV DIRDSP,46H
LEA BX,STEP
ADD BX,07H
RTN:MOV SI,BX
RET
CHKKEY ENDP
DELAY PROC NEAR ;延时子函数
PUSH CX
MOV CX,0AH
SUB CL,DELAYTIME
LOOP1:PUSH CX
MOV CX,03FFH
LOOP2:NOP
LOOP LOOP2
POP CX
LOOP LOOP1
POP CX
RET
DELAY ENDP
DISPLAY PROC NEAR ;显示DISPLAY子函数,在LED上显示在键盘输入的字符。
PUSH BX
MOV DX,D8279
MOV AL,DELAYTIME
LEA BX,LED
XLAT
OUT DX,AL
MOV AL,DIRDSP
OUT DX,AL
MOV CX,0006H
LEA BX,DSP
LOOP4:MOV AL,[BX]
OUT DX,AL
INC BX
LOOP LOOP4
MOV DX,C8279
MOV AL,0C2H
OUT DX,AL
POP BX
RET
DISPLAY ENDP
QUIT:MOV DX,C8279
MOV AL,0D2H
OUT DX,AL
jmp $
LED DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
DSP DB 5EH,79H,79H,73H,6DH,0EDH
DELAYTIME DB 01H
STEP DB 04H,05H,01H,09H,08H
DB 0AH,02H,06H,02H,0AH
DB 08H,09H,01H,05H,04H
DIRDSP DB 40H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -