LJMP START ORG 0BH LCALL IRQ_T0 ;TIMER 0 SLUZY DO ZLICZANIA SEKUND I USTAWIANIA GODZINY RETI ORG 1BH LCALL IRQ_T1 ;TIMERT 1 SLUZY DO WYSWIETLANIA GODZINY RETI START: MOV R7,#0 ;GODZINY MOV R6,#0 ;MINUTY MOV R5,#0 ;SEKUNDY MOV R4,#6 ;LICZNIK WYSWIETLACZY MOV R3,#00000001B ;WSKAZNIK AKTUALNEGO WYSWIETLACZA MOV R2,#20 ;LICZNIK PRZEPELNIEN (50MS*20=1S) MOV R1,#30H ;ADRESY 30H,38H MOV R0,#30H ;ADRES KOMOREK W KTORYCH SA DANE DO WYSWIETLENIA MOV 30H,#11001111B ;KOMORKI W KTORYCH MOV 31H,#11111001B ; PRZECHOWYWANE MOV 32H,#11110011B ; BEDA WARTOSCI MOV 33H,#11100111B ; DO WYSWIETLENIA MOV 34H,#11111100B ; NA LED MOV 35H,#11001111B ;MOV TMOD,#21H ;taka kombinacja bedzie po ustawieniu godziny ! MOV TMOD,#15H ;T0 JAKO COUTER MOV TH1,#0 ;CHANGE ! MOV TL1,#0 MOV TH0,#76 MOV TL0,#0 MOV DPTR,#LED_CODE MOV 50H,#10 ;DEV SETB EA SETB ET0 SETB ET1 ;SETB TR0 SETB TR1 SET_TIME: CJNE R3,#00000001B,SET_TIME JNB P3.5,SET_TIME CPL P1.7 LCALL HOLD_KEY SJMP SET_TIME HOLD_KEY: CJNE R3,#00000001B,HOLD_KEY JB P3.5,HOLD_KEY RET LOOP_DEV: LCALL RELOAD MOV A,#2 LCALL DELAY_100MS SJMP LOOP_DEV SJMP $ ;******************************************************************** ;** Poprogram obslugi przerwan IRQ_T0: CLR TR0 MOV TH0,#76 MOV TL0,#0 SETB TR0 PUSH ACC DJNZ R2,EXIT MOV R2,#20 ;ODSWIEZENIE LICZNIKA PRZEPELNIEN INC R5 CJNE R5,#60,EXIT INC R6 MOV R5,#0 CJNE R6,#60,EXIT INC R7 MOV R6,#0 CJNE R7,#24,EXIT MOV R7,#0 MOV R6,#0 MOV R5,#0 EXIT: POP ACC RET IRQ_T1: PUSH ACC PUSH 01H DJNZ 50H,IRQ_QUIT ;DEV MOV 50H,#2 ;DEV LCALL LCD_CLR MOV A,R3 LCALL WRITE_HEX CLR TR1 SETB P1.6 MOV R1,#30H MOV A,R3 MOVX @R1,A RL A MOV R3,A MOV R1,#38H MOV A,@R0 MOVX @R1,A INC R0 DEC R4 MOV A,R4 JNZ IRQ_QUIT MOV R4,#6 MOV R3,#00000001B MOV R0,#30H IRQ_QUIT: CLR P1.6 SETB TR1 POP 01H POP ACC RET ;******************************************************************** ;** Podprogramy uzywane przez program glowny RELOAD: MOV A,R7 MOV B,#10 DIV AB MOVC A,@A+DPTR MOV 35H,A XCH A,B MOVC A,@A+DPTR MOV 34H,A MOV A,R6 MOV B,#10 DIV AB MOVC A,@A+DPTR MOV 33H,A XCH A,B MOVC A,@A+DPTR MOV 32H,A MOV A,R5 MOV B,#10 DIV AB MOVC A,@A+DPTR MOV 31H,A XCH A,B MOVC A,@A+DPTR MOV 30H,A RET LED_CODE: DB 00111111B ;0 DB 00000110B ;1 DB 01011011B ;2 DB 01001111B ;3 DB 01100110B ;4 DB 01101101B ;5 DB 01111101B ;6 DB 00000111B ;7 DB 01111111B ;8 DB 01101111B ;9