📄 ex5124.asm
字号:
D_BUF EQU 77H
P_CON EQU 0FF20H
PORT_A EQU 0FF21H
PORT_B EQU 0FF22H
PORT_C EQU 0FF23H
;
ORG 0000H
LJMP START
ORG 000BH
LJMP IT0R
;
ORG 0030H
START: MOV SP,#60H
MOV DPTR,#P_CON ;8155控制字
MOV A,#03H
MOVX @DPTR,A
MOV R0,#D_BUF
MOV R7,#6
LP1: MOV @R0,#10H ;关显示
INC R0
DJNZ R7,LP1
LCALL DISPLAY
SETB PSW.3
LCALL KEYIN
MOV 7CH,A
LCALL KEYIN
MOV 7BH,A
LCALL KEYIN
MOV 7AH,A
LCALL KEYIN
MOV 79H,A
LCALL KEYIN
MOV 78H,A
LCALL KEYIN
MOV 77H,A
CLR PSW.3
;
;
MOV TMOD,#01H
MOV TL0,#00H
MOV TH0,#00H
SETB TR0
MOV IE,#82H
MOV 30H,#08H
LP2: LCALL DISPLAY
LJMP LP2
;
IT0R: PUSH PSW
PUSH ACC
SETB PSW.3
MOV TH0,#00H
MOV TL0,#00H
MOV A,30H
DEC A
MOV 30H,A
JNZ RETN
MOV 30H,#08H
MOV R0,#78H
LCALL CAAD
MOV A,R2
XRL A,#60H
JNZ RETN
LCALL CLR0
MOV R0,#7AH
LCALL CAAD
MOV A,R2
XRL A,#60H
JNZ RETN
LCALL CLR0
MOV R0,#7CH
LCALL CAAD
MOV A,R2
XRL A,#24H
JNZ RETN
LCALL CLR0
RETN: POP ACC
POP PSW
RETI
;
CAAD: MOV A,@R0
DEC R0
SWAP A
ORL A,@R0
ADD A,#01H
DA A
MOV R2,A
ANL A,#0FH
MOV @R0,A
MOV A,R2
INC R0
ANL A,#0F0H
SWAP A
MOV @R0,A
RET
;
CLR0: CLR A
MOV @R0,A
DEC R0
MOV @R0,A
RET
DISPLAY:MOV R0,#D_BUF+5 ;显示子程序
MOV R2,#20H
DIS_LP: MOV DPTR,#DATACO
MOV A,@R0
MOVC A,@A+DPTR
MOV DPTR,#PORT_B
MOVX @DPTR,A
MOV DPTR,#PORT_A
MOV A,R2
MOVX @DPTR,A
MOV R3,#00H
DJNZ R3,$
DEC R0
MOV A,R2
RR A
MOV R2,A
JNB ACC.7,DIS_LP
RET
DATACO: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
KEYIN: ACALL DISPLAY ;键扫子程序
ACALL INKEY
CJNE A,#0FFH,FLASH
SJMP KEYIN
FLASH: RET
INKEY:
ACALL IS_KEY
CJNE A,#0FFH,SK1
SJMP KEYSM10
SK1: ACALL DISPLAY
ACALL DISPLAY
ACALL IS_KEY
CJNE A,#0FFH,KEYSM
SJMP KEYSM10
KEYSM:
MOV A,#0FFH
MOV DPTR,#0FF22H
MOVX @DPTR,A
KEYSM0: MOV R2,#0FEH
MOV R3,#08H
MOV R0,#00H
KEYSM1: MOV A,R2
MOV DPTR,#0FF21H
MOVX @DPTR,A
NOP
RL A
MOV R2,A
MOV DPTR,#0FF23H
MOVX A,@DPTR
CPL A
NOP
NOP
NOP
ANL A,#0FH
JNZ KEYSM2
INC R0 ;没有按键
DJNZ R3,KEYSM1
SJMP KEYSM10
KEYSM2: ;有按键
CPL A ;判断键号
JB 0E0H,KEYSM3
MOV A,#00H
SJMP KEYSM7
KEYSM3: JB 0E1H,KEYSM4
MOV A,#08H
SJMP KEYSM7
KEYSM4: JB 0E2H,KEYSM5
MOV A,#10H
SJMP KEYSM7
KEYSM5: JB 0E3H,KEYSM12
MOV A,#18H
KEYSM7: ADD A,R0
CJNE A,#10H,KEYSM9
KEYSM9: JNC KEYSM12
MOV DPTR,#KEYDATA
MOVC A,@A+DPTR
KEYSM12:PUSH ACC ;等按键释放
KEYSM11:ACALL DISPLAY
ACALL IS_KEY
CJNE A,#0FFH,KEYSM11
POP ACC
KEYSM10:RET
IS_KEY: MOV DPTR,#PORT_A ;是否按键
CLR A
MOVX @DPTR,A
MOV DPTR,#PORT_C
MOVX A,@DPTR
ORL A,#0FCH
RET
KEYDATA:DB 07H,04H,08H,05H,09H,06H,0AH,0BH
DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -