📄 ddddg.asm
字号:
RS BIT P2.0
RW BIT P2.1
E BIT P2.2
DBUF EQU 30H
TEMP EQU 40H
YJ EQU 50H
YJ1 EQU 51H
GONG EQU 52H
ORG 00H
START:MOV P0,#01H
ACALL ENABLE
MOV P0,#01H
ACALL ENABLE
MOV P0,#38H
ACALL ENABLE
MOV P0,#0cH
ACALL ENABLE
MOV P0,#07H
ACALL ENABLE
MOV P0,#0CAH
ACALL ENABLE
MOV R3,#0
MOV GONG,#0
WAIT: CALL TESTKEY
JZ WAIT
CALL GETKEY
INC R3
CJNE A,#0,NEXT1
LJMP E1
NEXT1: CJNE A,#1,NEXT2
LJMP E1
NEXT2: CJNE A,#2,NEXT3
LJMP E1
NEXT3: CJNE A,#3,NEXT4
LJMP E1
NEXT4: CJNE A,#4,NEXT5
LJMP E1
NEXT5: CJNE A,#5,NEXT6
LJMP E1
NEXT6: CJNE A,#6,NEXT7
LJMP E1
NEXT7: CJNE A,#7,NEXT8
LJMP E1
NEXT8: CJNE A,#8,NEXT9
LJMP E1
NEXT9: CJNE A,#9,NEXT10
LJMP E1
NEXT10: CJNE A,#10,NEXT11
LJMP E2
NEXT11: CJNE A,#11,NEXT12
LJMP E2
NEXT12: CJNE A,#12, NEXT13
LJMP E2
NEXT13: CJNE A,#13,NEXT14
LJMP E2
NEXT14: CJNE A,#14,NEXT15
LJMP E2
NEXT15: LJMP E3
E1: CJNE R3,#1,N1
LJMP E11
N1: CJNE R3,#2,N2
LJMP E12
N2: CJNE R3,#3,N3
LJMP E13
N3: LJMP E3
E11: CALL SHOW
MOV R4,A
MOV 32H,A
MOV 31H,#70H
MOV 30H,#70H
CALL DISP
LJMP WAIT
E12: CALL SHOW
MOV R7,A
MOV B,#10
MOV A,R4
MUL AB
ADD A,R7
MOV R4,A
MOV 30H,#70H
MOV 31H,32H
MOV 32H,R7
LJMP WAIT
E13: CALL SHOW
MOV R7,A
MOV B,#10
MOV A,R4
MUL AB
JB OV,E3
ADD A,R7
JB CY,E3
MOV R4,A
MOV 30H,31H
MOV 31H,32H
MOV 32H,R7
LJMP WAIT
E3: MOV R3,#0
MOV R4,#0
MOV YJ,#0
MOV GONG,#0
CALL CLEAR
LJMP WAIT
E2: CALL CLEAR
MOV R0,GONG
MOV GONG,A
MOV A,R0
CJNE A,#10,N21
LJMP JIA
N21: CJNE A,#11,N22
LJMP JIAN
N22: CJNE A,#12,N23
LJMP CHENG
N23: CJNE A,#13,N24
LJMP CHU
N24: CJNE A,#0,N25
LJMP FIRST
N25: LJMP DEN
FIRST: MOV YJ,R4
MOV R3,#0
LJMP DISP1
N4: LJMP E3
JIA: MOV A,YJ
ADD A,R4
JB CY,N4
MOV YJ,A
MOV R3,#0
LJMP DISP1
JIAN: MOV A,YJ
SUBB A,R4
JB CY,N4
MOV YJ,A
MOV R3,#0
LJMP DISP1
CHENG: MOV A,YJ
MOV B,A
MOV A,R4
MUL AB
JB OV,N4
MOV YJ,A
LJMP DISP1
CHU: MOV A,R4
MOV B,A
MOV A,YJ
DIV AB
MOV YJ,A
MOV R3,#0
LJMP DISP1
DEN: MOV R3,#0
LJMP DISP1
DISP1: MOV B,#10
MOV A,YJ
DIV AB
MOV YJ1,A
MOV A,B
MOV 32H,A
MOV A,YJ1
JZ DISP11
MOV B,#10
MOV A,YJ1
DIV AB
MOV YJ1,A
MOV A,B
MOV 31H,A
MOV A,YJ1
JZ DISP11
MOV 30H,A
DISP11: CALL CLEAR
CALL DISP
LJMP WAIT
DISP: CALL CLEAR
MOV R0,#DBUF
MOV R7,#3
XX: MOV A,@R0
INC R0
CALL SHOW
DJNZ R7,XX
RET
TESTKEY:
MOV P1,#0FH
MOV A,P1
CPL A
ANL A,#0FH
RET
KEYTABLE:
DB 0D7H,0EBH,0DBH,0BBH ;0,1,2,3
DB 0EDH,0DDH,0BDH,0EEH ;4,5,6,7
DB 0DEH,0BEH,077H,07BH ;8,9,+,-
DB 07DH,07EH,0B7H,0E7H ;*,/,=,ON/C
GETKEY:
MOV R6,#10
LCALL DELAY
MOV P1,#0FH
MOV A,P1
CJNE A,0FH,K12
LJMP WAIT
K12: MOV B,A
MOV P1,#0EFH
MOV A,P1
CJNE A,#0EFH,K13
MOV P1,#0DFH
MOV A,P1
CJNE A,#0DFH,K13
MOV P1,#0BFH
MOV A,P1
CJNE A,#0BFH,K13
MOV P1,#07FH
MOV A,P1
CJNE A,#07FH,K13
LJMP WAIT
K13: ANL A,#0F0H
ORL A,B
MOV B,A
MOV R1,#16
MOV R2,#0
MOV DPTR,#KEYTABLE
K14: MOV A,R2
MOVC A,@A+DPTR
CJNE A,B,K16
MOV P1,#0FH
K15: MOV A,P1
CJNE A,#0FH,K15
MOV R6,#10
LCALL DELAY1
MOV A,R2
RET
K16: INC R2
DJNZ R1,K14
LJMP WAIT
delay1:mov r7,#80
dloop: djnz r7,dloop
djnz r6,dloop
ret
CLEAR:
MOV P0,#01H
ACALL ENABLE
MOV P0,#01H
ACALL ENABLE
MOV P0,#0CAH
ACALL ENABLE
ACALL DELAY
RET
SHOW: PUSH ACC
CLR E
ACALL ENABLE
ADD A,#30H
MOV P0,A
SETB RS
CLR RW
CLR E
POP ACC
ACALL DELAY
RET
ENABLE:CLR RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
DELAY:
MOV P0,#0FFH
CLR RS
SETB RW
CLR E
NOP
SETB E
JB P0.7,DELAY
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -