rendered paste body 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