HOURS .EQU 20H MINUTES .EQU 21H SECONDS .EQU 22H DAY .EQU 23H MONTH .EQU 24H YEAR .EQU 25H WIDTH .EQU 26H MESSAGE .EQU 2BH .ORG 0H MOV R7,#60H CALL SETDLY MAIN JNT1 GETCODE JF1 CHECKCODE JT0 $ JNT0 $ CALL DISPLAY CALL GETTIME CALL UPDATE DJNZ R7,MAIN CALL SETDLY JMP MAIN GETTIME CLR A MOV R0,A MOVX @R0,A MOV R0,#04H MOVX @R0,A MOV R0,#19H MOVX A,@R0 MOV R1,#SECONDS MOV @R1,A INC R0 MOVX A,@R0 MOV R1,#MINUTES MOV @R1,A INC R0 MOVX A,@R0 MOV R1,#HOURS MOV @R1,A INC R0 MOVX A,@R0 MOV R1,#DAYS MOV @R1,A INC R0 MOVX A,@R0 MOV R1,#MONTHS MOV @R1,A MOV R0,#0BH MOVX A,@R0 MOV R1,#YEARS MOV @R1,A MOV R0,#04H MOV A,#80H MOVX @R0,A RET DELAY MOV R0,#0FFH DEB1 DJNZ R0,DEB1 RET LONGDLY CLR A MOV T,A STRT T LDLP1 JTF LDDONE JMP LDLP1 LDDONE STOP TCNT RET SETDLY CLR A MOV R0,A MOV T,A JT0 $ JNT0 $ STRT T SDLP1 JTF OVRFLW JT0 SDLP1 STOP TCNT CLR C MOV A,T CPL A JB7 SDSKIP INC R0 SDSKIP MOV A,R0 CPL A INC A MOV R0,#WIDTH MOV @R0,A RET OVRFLW INC R0 JMP TIMER RESET MOV R0,#1DH CLR A MOVX @R0,A DEC R0 MOVX @R0,A DEC R0 MOVX @R0,A DEC R0 MOVX @R0,A DEC R0 MOVX @R0,A MOV R0,A MOV A,#40H MOVX @R0,A MOV R0,#02H RL A MOVX @R0,A CLR A DEC R0 MOVX @R0,A DEC R0 MOVX @R0,A MOV R0,#03H MOVX @R0,A CALL LONGDLY MOV R0,A MOV A,#40H MOVX @R0,A INC R0 MOV A,#0AH RET SETNOON MOV R0,#00H MOV A,#40H MOVX @R0,A INC R0 MOV A,#60H MOVX @R0,A CLR A MOV R0,#05H MOVX @R0,A INC R0 MOVX @R0,A INC R0 MOVX @R0,A INC R0 MOV A,#12H MOVX @R0,A INC R0 MOV A,#01H MOVX @R0,A INC R0 MOVX @R0,A INC R0 MOV A,#98H MOVX @R0,A MOV R0,#01H MOV A,#0AH MOVX @R0,A RET .ORG 300H #INCLUDE "CHARSET.ASM" .ORG 400H .BYTE 0,5,10,15,20,25,30,35,40,45 .BYTE 50,55,60,65,70,75,80,85,90,95 .BYTE 100,105,110,115,120,125,130,135,140,145 .BYTE 150,155,160,165,170,175,180,185,190,195 .BYTE 200,205,210,215,220,225,230,235,240,245 .BYTE 250,255 DISPLAY MOV R2,#15H MOV R1,#MESSAGE DISLOOP MOV A,@R1 MOVP A,@A MOV R3,A CALL DIGIT INC R1 DJNZ DISLOOP RET DIGIT MOV R4,#05H DLOOP MOV A,R3 MOVP3 A,@A INC R3 OUTL P1,A CALL DDELAY DJNZ R4,DLOOP CLR A OUTL P1,A CALL DDELAY RET GETCODE DIS TCNTI CLR F0 CLR A MOV T,A JNT1 $ STRT T GCLP1 JTF TIMEOUT JT1 GCLP1 STOP TCNT MOV A,T CLR C RRC A CLR C RRC A CLR C RRC A MOV R0,A CLR C RRC A ADD A,R0 CPL A INC A MOV R3,A CLR F0 CALL GETBYTE JF0 GCJMP CALL GETBYTE JF0 GCJMP CALL GETBYTE JF0 GCJMP MOV R7,A CALL GETBYTE JF0 GCJMP MOV R6,A ; CALL LONGDLY JMP MAIN GCJMP CLR F0 JMP MAIN GETBYTE CLR A MOV R5,#08H GETBIT CLR C RLC A MOV R2,A CLR A MOV T,A JNT1 $ STRT T GBLP1 JTF TIMEOUT JT1 GBLP1 STOP TCNT MOV A,T CLR C ADD A,R3 JNC ZERO INC R2 ZERO MOV A,R2 DJNZ R5,GETBIT RET TIMEOUT CPL F0 RET DDELAY MOV R0,#WIDTH MOV A,@R0 MOV T,A STRT T DDLP1 JTF DDONE JMP DDLP1 DDONE STOP TCNT RET .END