-
Notifications
You must be signed in to change notification settings - Fork 0
Description
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