Skip to content

矩阵键盘+数码管 #4

@Talnex

Description

@Talnex
 timecount EQU 40H
 miaoL EQU 73H
 miaoH EQU 72H
 tim EQU 50H
 ORG 0000H
 LJMP MAIN
 ORG 000BH
 LJMP timer0_ser
 ORG 0030H

MAIN:
MOV R0,#70H
MOV R7,#04H
MOV A,#00H

M1:
MOV @r0,A
INC R0
DJNZ R7, M1

LCALL inittimer

SETB EA
SETB TR0

MOV timecount,#0AH

LP:
LCALL DISP
LCALL key_scan
SJMP LP

DISP:
MOV R6,#0EFH
MOV R7,#04H
MOV R0,#70H

DIS1:
MOV A,R6
MOV P3,A

MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A

LCALL DELAY

MOV A,R6
RL A
MOV R6,A
INC R0
DJNZ R7,DIS1

RET

TAB:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H

DELAY:
PUSH 03H
PUSH 04H
MOV R3,#0AH
D2: MOV R4,#1FH
D1: DJNZ R4,D1
DJNZ R3,D2
POP 04H
POP 03H
RET

inittimer:
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB ET0
RET

timer0_ser:
MOV TH0,#3CH
MOV TL0,#0B0H

DJNZ timecount,trtn
MOV timecount,#00H
INC miaoL
MOV A,miaoL
CJNE A,#0AH,trtn
MOV miaoL,#00H
INC miaoH
MOV A,miaoH
CJNE A,#06H,trtn
MOV miaoH,#00H

trtn:
RETI

key_scan:
MOV P1,#00H
LCALL ks
JZ krtn

MOV R5,#0EFH
MOV R7,#04H
MOV R1,#00H
MOV R2,#00H

kloop:
MOV A,R5
MOV P3,A
NOP
NOP
MOV A,P3
CPL A
ANL A,#0FH
JZ next
JB ACC.0,row1
JB ACC.1,row2
JB ACC.2,row3
JB ACC.3,row4
SJMP krtn

row1:
MOV R2,#00H
SJMP keyhandle
row2:
MOV R2,#04H
SJMP keyhandle
row3:
MOV R2,#08H
SJMP keyhandle
row4:
MOV R2,#0cH
SJMP keyhandle

next:
INC R1
MOV A,R5
RL A
MOV R5,A
DJNZ R7,kloop
SJMP krtn

keyhandle:
MOV A,R2
ADD A,R1
PUSH ACC

keywait:
LCALL ks
JNZ keywait
POP ACC
LCALL keyresult

krtn:
RET

ks:
MOV A,#0FH
MOV P3,A
NOP
NOP
MOV A,P3
CPL A
ANL A,#0FH
RET

keyresult:
CJNE A,#00H,kk1
MOV R2,miaoL
CJNE R2,#09H,kkk1
MOV miaoL,#00H
SJMP krrtn

kkk1:
INC miaoL
SJMP krrtn

kk1:
CJNE A,#01H,krrtn
MOV R2,miaoH
CJNE R2,#05H,kkk2
MOV miaoH,#00H
SJMP krrtn
kkk2: INC miaoH
krrtn: RET

END

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions