📄 exp3.asm
字号:
OUTBIT EQU 0E101H
CLK164 EQU 0E102H
DAT164 EQU 0E102H
LINE EQU 0E103H
COLUMN EQU 0E101H
LEDBuf EQU 60H
START:
MOV DPTR,#0E100H
MOV A,#03H
MOVX @DPTR,A
MOV A,#0
MOV R0,#LEDBuf
MOV R1,#6
LOOP1:
MOV @R0,A
INC R0
DJNZ R1,LOOP1
CYCLE:
ACALL DisplayLED
ACALL KS1
JZ CYCLE
ACALL DisplayLED
ACALL DisplayLED
ACALL KS1
JZ CYCLE
ACALL KEY
JZ CYCLE
Delay:
MOV R7,#0
DelayLoop:
DJNZ R7,DelayLoop
DJNZ R6,DelayLoop
RET
DisplayLED:
MOV R0,#LEDBuf
MOV R1,#6
MOV R2,#00100000B
LOOP:
MOV DPTR,#OUTBIT
MOV A,#0
MOVX @DPTR,A
MOV DPTR,#LEDMap
MOV A,@R0
MOVC A,@A+DPTR
MOV B,#8
DLP:
RLC A
MOV R3,A
MOV ACC.0,C
ANL A,#0FDH
MOV DPTR,#DAT164
MOVX @DPTR,A
MOV DPTR,#CLK164
ORL A,#02H
MOVX @DPTR,A
ANL A,#0FDH
MOVX @DPTR,A
MOV A,R3
DJNZ B,DLP
MOV DPTR,#OUTBIT
MOV A,R2
MOVX @DPTR,A
MOV R6,#1
CALL DELAY
MOV A,R2
RR A
MOV R2,A
INC R0
DJNZ R1,LOOP
MOV DPTR,#OUTBIT
MOV A,#0
MOVX @DPTR,A
RET
KS1:
MOV DPTR,#COLUMN
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#LINE
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
KEY:
MOV R2,#0FEH
MOV R4,#4
SCAN:
MOV DPTR,#COLUMN
MOV A,R2
MOVX @DPTR,A
MOV DPTR,#LINE
MOVX A,@DPTR
ANL A,#0FH
CJNE A,#0FH,NEXT
MOV A,R2
RL A
MOV R2,A
DJNZ R4,SCAN
AJMP FINISH
NEXT:
SWAP A
MOV R3,A
MOV A,R2
ANL A,#0FH
ORL A,R3
CPL A
MOV R3,A
MOV R2,#0
MOV DPTR,#KEYBOARD
FINDKEY:
MOV A,R2
MOVC A,@A+DPTR
CLR C
SUBB A,R3
JNZ NEXT1
SJMP FillBuf
NEXT1:
INC R2
SJMP FINDKEY
FillBuf:
MOV R0,#LEDBuf
MOV R1,#LEDBuf+1
MOV R4,#5
FLOOP:
MOV A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R4,FLOOP
MOV A,R2
MOV @R0,A
FINISH:
ACALL DisplayLED
ACALL KS1
JNZ FINISH
RET
KEYBOARD:
DB 11H,21H,22H,24H,41H,42H,44H,81H,82H,84H,88H,48H,28H,18H,14H,12H
LEDMap:
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db 7fh,6fh,77h,7ch,39h,5eh,79h,71h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -