LEDDUAN EQU 8004H
LEDWEI EQU 8002H
KVALUE EQU 52H
NUM EQU 50H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP COUNT
ORG 0100H
MAIN: CLR A
CLR B
MOV R0,#00H
MOV R1,#00H
MOV R2,#00H
MOV R3,#00H
MOV R4,#00H
MOV R5,#00H
MOV NUM,#10
MOV SP,#70H
MOV DPTR,#LEDDUAN
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#LEDWEI
MOV A,#00H
MOVX @DPTR,A
J1S: MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB EA
SETB ET0
SETB TR0
START: LCALL DISPLAY
LCALL KEYBOARD
MOV A,KVALUE
CJNE A,#0FFH,TIME
LCALL CHANGE
TIME: CJNE R0,#60,NEXT2 ;SECOND
MOV R0,#00H
INC R1
CJNE R1,#60,NEXT2 ;MINUTE
MOV R1,#00H
INC R2
CJNE R2,#24,NEXT2 ;HOUR
MOV R2,#00H
NEXT2: SJMP START
;***********CHANGE TIME****************
CHANGE: CLR TR0
CHOUR: MOV R5,#01H
CHOUR2: LCALL DISPLAY
LCALL KEYBOARD
MOV A,KVALUE
CJNE A,#0FFH,KEY1
LJMP CMIN
KEY1: CJNE A,#10H,KEY2
LJMP ADHOUR
KEY2: LJMP CHOUR2
ADHOUR:INC R2
CJNE R2,#24,JHOUR
MOV R2,#00H
JHOUR: LJMP CHOUR2
CMIN: MOV R5,#02H
CMIN2: LCALL DISPLAY
LCALL KEYBOARD
MOV A,KVALUE
CJNE A,#0FFH,KEY3
LJMP CSEC
KEY3: CJNE A,#10H,KEY4
LJMP ADMIN
KEY4: LJMP CMIN2
ADMIN: INC R1
CJNE R1,#60,JMIN
MOV R1,#00H
JMIN: LJMP CMIN2
CSEC: MOV R5,#03H
CSEC2: LCALL DISPLAY
LCALL KEYBOARD
MOV A,KVALUE
CJNE A,#0FFH,KEY5
LJMP EXCH
KEY5: CJNE A,#10H,KEY6
LJMP ADSEC
KEY6: LJMP CSEC2
ADSEC: INC R0
CJNE R0,#60,JSEC
MOV R0,#00H
JSEC: LJMP CSEC2
EXCH: MOV TH0,#3CH
MOV TL0,#0B0H
MOV R5,#00H
SETB TR0
RET
;*************END***************
;***********DISPLAY*************
DISPLAY:MOV DPTR,#LEDWEI ;HOUR
MOV A,#20H
MOVX @DPTR,A
MOV A,R2
MOV B,#10
DIV AB
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
CJNE R5,#01H,CMOD0
ORL A,#80H ;POINT
CMOD0: MOV DPTR,#LEDDUAN
MOVX @DPTR,A
LCALL D2MS
MOV DPTR,#LEDWEI
MOV A,#10H
MOVX @DPTR,A
MOV A,B
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
CJNE R5,#00H,JU1
SJMP POI1
JU1: CJNE R5,#01H,CMOD1
POI1: ORL A,#80H ;POINT
CMOD1: MOV DPTR,#LEDDUAN
MOVX @DPTR,A
LCALL D2MS
MOV DPTR,#LEDWEI ;MINUTE
MOV A,#08H
MOVX @DPTR,A
MOV A,R1
MOV B,#10
DIV AB
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
CJNE R5,#02H,CMOD2
ORL A,#80H ;POINT
CMOD2: MOV DPTR,#LEDDUAN
MOVX @DPTR,A
LCALL D2MS
MOV DPTR,#LEDWEI
MOV A,#04H
MOVX @DPTR,A
MOV A,B
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
CJNE R5,#00H,JU2
SJMP POI2
JU2: CJNE R5,#02H,CMOD3
POI2: ORL A,#80H ;POINT
CMOD3: MOV DPTR,#LEDDUAN
MOVX @DPTR,A
LCALL D2MS
MOV DPTR,#LEDWEI ;SECOND
MOV A,#02H
MOVX @DPTR,A
MOV A,R0
MOV B,#10
DIV AB
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
CJNE R5,#03H,CMOD4
ORL A,#80H ;POINT
CMOD4: MOV DPTR,#LEDDUAN
MOVX @DPTR,A
LCALL D2MS
MOV DPTR,#LEDWEI
MOV A,#01H
MOVX @DPTR,A
MOV A,B
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
CJNE R5,#00H,JU3
SJMP POI3
JU3: CJNE R5,#03H,CMOD5
POI3: ORL A,#80H ;POINT
CMOD5: MOV DPTR,#LEDDUAN
MOVX @DPTR,A
LCALL D2MS
RET
;**********END**************
D2MS: MOV R4,#0AH
DL2: MOV R3,#32H
DL1: NOP
NOP
DJNZ R3,DL1
DJNZ R4,DL2
RET
D10MS: MOV R4,#64H
DL4: MOV R3,#14H
DL3: NOP
NOP
NOP
DJNZ R3,DL3
DJNZ R4,DL4
RET
COUNT: DJNZ NUM,NEXT
INC R0
MOV NUM,#10
NEXT: MOV TH0,#3CH
MOV TL0,#0B0H
RETI
;*******KEYBOARD*************
KEYBOARD:MOV P1,#0FFH
MOV KVALUE,#16H
;*************************
WAIT: MOV A,P1
ANL A,#03H
XRL A,#03H
JZ NOKEY1
LCALL D10MS
MOV A,P1
ANL A,#03H
XRL A,#03H
JZ NOKEY1
MOV A,P1
ANL A,#03H
CJNE A,#02H,NK1
MOV KVALUE,#0FFH
LJMP DK1A
NK1: CJNE A,#01H,DK1A
MOV KVALUE,#10H
DK1A: MOV A,P1
ANL A,#03H
XRL A,#03H
JNZ DK1A
;*********LIE-2***************
NOKEY1: RET
;********END************
LEDTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH