?? ex5123.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 0030H
START: MOV SP,#60H
MOV DPTR,#P_CON ;8155控制字
MOV A,#03H
MOVX @DPTR,A
MOV R0,#D_BUF
MOV R7,#6
LP0: MOV @R0,#10H ;關顯示
INC R0
DJNZ R7,LP0
LCALL DISPLAY
LP2: SETB PSW.3
LCALL KEYIN
CLR PSW.3
MOV 7CH,A
LCALL RTAB
LCALL DISPLAY
SJMP LP2
RTAB: MOV DPTR,#TAB1
ANL A,#0FH
RL A
MOV R2,A
MOVC A,@A+DPTR
MOV R0,#7AH
LCALL SUB1
MOV A,R2
INC A
MOVC A,@A+DPTR
MOV R0,#78H
LCALL SUB1
RET
;
SUB1: MOV R3,A
ANL A,#0F0H
SWAP A
MOV @R0,A
MOV A,R3
ANL A,#0FH
DEC R0
MOV @R0,A
RET
;
TAB1: DW 0123H
DW 1234H
DW 2345H
DW 3456H
DW 4567H
DW 5678H
DW 6789H
DW 789AH
DW 89ABH
DW 9ABCH
DW 0ABCDH
DW 0BCDEH
DW 0CDEFH
DW 0DEF0H
DW 0EF01H
DW 0F012H
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 + -