SecLine BIT 0
ScanLine EQU 41H
Sec EQU 42H
Min EQU 43H
Hour EQU 44H
Month EQU 45H
Date EQU 46H
MINUITEKEY BIT P3.4
HOURKEY BIT P3.5
D1 EQU 47H
D2 EQU 48H
ORG 0000H
AJMP START
ORG 000BH
AJMP TIMER0
ORG 001BH
AJMP TIMER1
START: MOV SP,#60H
MOV DPTR,#TABLE
MOV R0,#30H
MOV 30H,#00
MOV 31H,#00
MOV 32H,#00
MOV 33H,#00
MOV ScanLine,#11110111B
SETB SecLine
MOV Hour,#00H
MOV Sec,#00H
MOV Min,#00H
SETB EA
SETB ET0
SETB ET1
MOV TMOD,#00100001B
MOV TH0,#0ECH
MOV TL0,#78H
MOV TH1,#6
MOV TL1,#6
SETB TR0
SETB TR1
MOV R4,#200
MOV R5,#10
MOV R6,#2
ACALL CONV
CHECK_MINUITE:
JB MINUITEKEY,CHECK_HOUR
MOV A,Min
ADD A,#1
DA A
MOV Min,A
CJNE A,#60H,G1
MOV Min,#0
G1: ACALL CONV
ACALL DELAY
JNB MINUITEKEY,G1
CHECK_HOUR:
JB HOURKEY,CHECK_MINUITE
MOV A,Hour
ADD A,#1
DA A
MOV Hour,A
CJNE A,#24H,G2
MOV Hour,#0
G2: ACALL CONV
ACALL DELAY
JNB HOURKEY,G2
AJMP CHECK_MINUITE
LOOP: SJMP LOOP
TIMER0: PUSH ACC
CLR TR0
MOV TH0,#0F4H
MOV TL0,#78H
MOV A,@R0
MOVC A,@A+DPTR
JB SecLine,KEEP
MOV R3,ScanLine
CJNE R3,#11111101B,KEEP
ANL A,#01111111B
KEEP: MOV P0,A
INC R0
MOV A,ScanLine
MOV P2,A
RR A
MOV ScanLine,A
CJNE A,#10111111B,EXIT0
MOV R0,#30H
MOV ScanLine,#11110111B
EXIT0: SETB TR0
POP ACC
RETI
EXIT1:
ACALL CONV
TIMER1: PUSH ACC
CLR TR1
DJNZ R4,S2
MOV R4,#200
DJNZ R5,S2
MOV R5,#10
CPL SecLine
DJNZ R6,S2
MOV R6,#2
MOV A,Sec
ADD A,#1
DA A
MOV Sec,A
CJNE A,#60H,S2
MOV Sec,#0
MOV A,Min
ADD A,#1
DA A
MOV Min,A
CJNE A,#60H,S1
MOV Min,#0
MOV A,Hour
ADD A,#1
DA A
MOV Hour,A
CJNE A,#24H,S1
MOV Hour,#0
S1: ACALL CONV
S2: SETB TR1
POP ACC
RETI
CONV:
MOV R1,#33H
MOV A,Hour
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,Hour
ANL A,#0FH
MOV @R1,A
DEC R1
MOV A,Min
ANL A,#0F0H
SWAP A
MOV @R1,A
DEC R1
MOV A,Min
ANL A,#0FH
MOV @R1,A
RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
DELAY: MOV D1,#250
DL1: MOV D2,#200
DL2: DJNZ D2,$
DJNZ D1,DL1
RET
END
|