KEY1 BIT P1.0
KEY2 BIT P1.1
KEY3 BIT P1.2
CLK BIT P1.3
LOAD BIT P1.4
DIN BIT P1.5
SECOND DATA 30H
MINUTE DATA 31H
HOUR DATA 32H
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIMER0
MAIN: MOV SP,#60H
MOV TMOD,#01H
MOV TH0,#0B1H
MOV TL0,#0E0H
SETB ET0
SETB EA
MOV R2,#50
SETB TR0
MOV SECOND,#00H
MOV MINUTE,#00H
MOV HOUR,08H
MOV A,HOUR
ANL A,#0F0H
SWAP A
MOV 79H,A
MOV A,HOUR
ANL A,#0FH
MOV 7AH,A
MOV A,MINUTE
ANL A,#0F0H
SWAP A
MOV 7BH,A
MOV A,MINUTE
ANL A,#0FH
MOV 7CH,A
MOV A,SECOND
ANL A,#0F0H
SWAP A
MOV 7DH,A
MOV A,SECOND
ANL A,#0FH
MOV 7EH,A
MOV R3,#00H
ACALL INI7219
LOOP: ACALL KEY
ACALL DISPLAY
AJMP LOOP
INI7219: MOV 50H,#0FH
MOV 51H,#00H
MOV R0,#50H
ACALL SEND7219
MOV 50H,#0CH
MOV 51H,#01H
MOV R0,#50H
ACALL SEND7219
MOV 50H,#0BH
MOV 51,#05H
MOV R0,#50H
ACALL SEND7219
MOV 50H,#0AH
MOV 51H,#09H
MOV R0,#50H
ACALL SEND7219
MOV 50H,#09H
MOV 51H,#0FFH
MOV R0,#50H
ACALL SEND7219
RET
DISPLAY:MOV 50H,#01H
MOV 51H,79H
MOV R0,#50H
ACALL SEND7219
MOV 50H,#02H
MOV 51H,7AH
MOV R0,#50H
ACALL SEND7219
MOV 50H,#03H
MOV 51H,7BH
MOV R0,#50H
ACALL SEND7219
MOV 50H,#04H
MOV 51H,7CH
MOV R0,#50H
ACALL SEND7219
MOV 50H,#05H
MOV 51H,7DH
MOV R0,#50H
ACALL SEND7219
MOV 50H,#06H
MOV 51H,7EH
MOV R0,#50H
ACALL SEND7219
RET
SEND7219:CLR LOAD
MOV R4,#02H
CLR C
LOP1: MOV R1,#08H
MOV A,@R0
LOP2: RLC A
MOV DIN,C
SETB CLK
CLR CLK
DJNZ R1,LOP2
INC R0
DJNZ R4,LOP1
SETB LOAD
RET
KEY: JNB KEY1,KK1
JB KEY1,$
INC R3
CJNE R3,#04H,JMPKK3
MOV R3,#00H
JMPKK3: AJMP KK3
KK1: JNB KEY2,KK2
JB KEY2,$
MOV A,R3
RL A
MOV DPTR,#KJMP1
JMP @A+DPTR
KJMP1: AJMP DISCLK
AJMP SINC
AJMP MINC
AJMP HINC
SINC: MOV A,SECOND
ADD A,#01H
DA A
MOV SECOND,A
CJNE A,#60H,DISS1
MOV SECOND,#00H
DISS1: AJMP DISS
MINC: MOV A,MINUTE
ADD A,#01H
DA A
MOV MINUTE,A
CJNE A,#60H,DISM1
MOV MINUTE,00H
DISM1: AJMP DISM
HINC: MOV A,HOUR
ADD A,#01H
DA A
MOV HOUR,A
CJNE A,#24H,DISH1
DISH1: AJMP DISH
KK2: JNB KEY3,KK3
JB KEY3,$
MOV A,R3
RL A
MOV DPTR,#KJMP2
JMP @A+DPTR
KJMP2: AJMP DISCLK
AJMP SDEC
AJMP MDEC
AJMP HDEC
SDEC: MOV A,#9AH
CLR C
SUBB A,#01H
ADD A,SECOND
DA A
MOV SECOND,A
CJNE A,#00H,DISS2
MOV SECOND,#59H
DISS2: AJMP DISS
MDEC: MOV A,#9AH
CLR C
SUBB A,#01H
ADD A,MINUTE
DA A
MOV MINUTE,A
CJNE A,#0,DISM2
MOV MINUTE,#59H
DISM2: AJMP DISM
HDEC: MOV A,#9AH
CLR C
SUBB A,#01H
ADD A,HOUR
DA A
MOV HOUR,A
CJNE A,#99H,DISH2
MOV HOUR,#23H
DISH2: AJMP DISH
KK3: MOV A,R3
RL A
MOV DPTR,#KJMP3
JMP @A+DPTR
KJMP3: AJMP DISCLK
AJMP DISS
AJMP DISM
AJMP DISH
DISCLK: MOV R0,#79H
MOV R1,#HOUR
MOV R4,#03H
CFLOOP: MOV A,@R1
SWAP A
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,@R1
ANL A,#0FH
MOV @R0,A
INC R0
DEC R1
DJNZ R4,CFLOOP
SETB TR0
RET
DISS: CLR TR0
MOV A,SECOND
SWAP A
ANL A,#0FH
MOV 7DH,A
MOV A,SECOND
ANL A,#0FH
MOV 7EH,A
MOV 79H,#0FH
MOV 7AH,#0FH
MOV 7BH,#0FH
MOV 7CH,#0FH
AJMP KK5
DISM: CLR TR0
MOV A,MINUTE
SWAP A
ANL A,#0FH
MOV 7BH,A
MOV A,MINUTE
ANL A,#0FH
MOV 7CH,A
MOV 79H,#0FH
MOV 7AH,#0FH
MOV 7DH,#0FH
MOV 7EH,#0FH
AJMP KK5
DISH: CLR TR0
MOV A,HOUR
SWAP A
ANL A,#0FH
MOV 79H,A
MOV A,HOUR
ANL A,#0FH
MOV 7AH,A
MOV 7BH,#0FH
MOV 7CH,#0FH
MOV 7DH,#0FH
MOV 7EH,#0FH
KK5: RET
TIMER0: PUSH ACC
PUSH PSW
MOV TH0,#0B1H
MOV TL0,#0E0H
DJNZ R2,NEXT
MOV R2,#50
MOV A,SECOND
ADD A,#01H
DA A
MOV SECOND,A
CJNE A,#60H,NEXT
S1: MOV SECOND,#00H
MOV A,MINUTE
ADD A,#01H
DA A
MOV MINUTE,A
CJNE A,#60H,NEXT
S2: MOV MINUTE,#00H
MOV A,HOUR
ADD A,#01H
DA A
MOV HOUR,A
CJNE A,#24H,NEXT
MOV HOUR,#00H
NEXT: POP PSW
POP ACC
RETI
END
|