;licznik pracuje w trybie nr 1 czyli zlicza na 16 bitach
;licznik liczy 9216 taktow co spowoduje ze bedzie to trwalo 10ms
;nastepnie te 10 ms powtazam 100 razy co daje mi w efekcie 1s
;10000us *11,0592Mhz/12 = 9216 taktow do zliczenia
;do licznika laduje wiec 10000h-0DC00h = 9216d
EXTERN INIT_LCD
EXTERN DISPLAY
EXTERN KEYBOARD
TLO EQU 8AH
THO EQU 8CH
ORG 1000H
MOV R3,#100 ;DO PETLI CZASU
ORL 89H,#00000001 ;TMOD
MOV R1,#30H ;ADRES KODU KLAWISZA
MOV 8AH,#00 ;10MS ,TLO
MOV 8CH,#0DCH ;THO
LCALL INIT_LCD
MOV 31H,#30H ;************ zero godz
MOV 32H,#30H ;************ zero godz
MOV 33H,#3AH ;************ dwukropek
MOV 34H,#30H ;************ zero min
MOV 35H,#30H ;************ zero min
MOV 36H,#3AH ;************ dwukropek
MOV 37H,#30H ;************ zero sek
MOV 38H,#30H ;************ zero sek
CLR 7FH
CLR 8DH
SETB 8CH ;PUSZCZENIE
ACALL WYSW
POCZ: JNB 8DH,DAL
CLR 8DH
MOV A,8CH ;PRZEPELNIENIE LICZNIKA
ADD A,#0DCH
MOV 8CH,A
DJNZ R3,POCZ
MOV R3,#100
MOV A,#39H ;SEKUNDY W GORE
CJNE A,38H,SU1
MOV A,#35H
CJNE A,37H,SU2
MOV 38H,#30H
MOV 37H,#30H
SJMP M1UP
SU1: INC 38H
SJMP KON
SU2: INC 37H
MOV 38H,#30H
SJMP KON
M1UP: MOV A,#39H ;MINUTY W GORE
CJNE A,35H,M1U1
MOV A,#35H
CJNE A,34H,M1U2
MOV 35H,#30H
MOV 34H,#30H
LJMP GUP ;GODZINY W GORE
M1U1: INC 35H
SJMP KON
M1U2: INC 34H
MOV 35H,#30H
KON: ACALL WYSW
DAL: LCALL KEYBOARD ;SPRAWDZANIE KALWIATURY
JNB 7FH,POCZ
MOV R4,#0FFH
ST: MOV R2,#0FFH ;OPOZNIENIE(STYKI)
DJNZ R2,$
DJNZ R4,ST
CJNE @R1,#0,SK1
LJMP ZER
SK1: CJNE @R1,#1,SK2
LJMP MDO
SK2: CJNE @R1,#5,SK3
LJMP MUP
SK3: CJNE @R1,#2,SK4
LJMP GDO
SK4: CJNE @R1,#6,POCZ
LJMP GUP
ZER: MOV 37H,#30H ;PROCEDURA ZEROWANIA SEKUND
MOV 38H,#30H
ACALL WYSW
LJMP OPU
MDO: MOV A,#30H ;MINUTY W DOL
CJNE A,35H,MD1
CJNE A,34H,MD2
MOV 35H,#39H
MOV 34H,#35H
SJMP MDE
MD1: DEC 35H
SJMP MDE
MD2: DEC 34H
MOV 35H,#39H
MDE: ACALL WYSW
LJMP OPU
MUP: MOV A,#39H ;MINUTY W GORE
CJNE A,35H,MU1
MOV A,#35H
CJNE A,34H,MU2
MOV 35H,#30H
MOV 34H,#30H
SJMP MUE
MU1: INC 35H
SJMP MDE
MU2: INC 34H
MOV 35H,#30H
MUE: ACALL WYSW
LJMP OPU
GDO: MOV A,#30H ;GODZINY W DOL
CJNE A,32H,GD1
CJNE A,31H,GD2
MOV 32H,#33H
MOV 31H,#32H
SJMP MDE
GD1: DEC 32H
SJMP MDE
GD2: DEC 31H
MOV 32H,#39H
GDE: ACALL WYSW
LJMP OPU
GUP: MOV A,#32H ;GODZINY U GORE
CJNE A,31H,GU1
MOV A,#33H
CJNE A,32H,GU2
MOV 31H,#30H
MOV 32H,#30H
SJMP GUE
GU1: MOV A,#39H
CJNE A,32H,GU2
INC 31H
MOV 32H,#30H
SJMP GUE
GU2: INC 32H
GUE: ACALL WYSW
LJMP OPU
WYSW: LCALL DISPLAY
LCALL DISPLAY
LCALL DISPLAY
LCALL DISPLAY
LCALL DISPLAY
LCALL DISPLAY
LCALL DISPLAY
LCALL DISPLAY
RET
OPU: CLR 7FH
LCALL KEYBOARD
MOV R4,#0FFH
ST1: MOV R2,#0FFH ;OPOZNIENIE(STYKI)
DJNZ R2,$
DJNZ R4,ST1
JB 7FH,OPU
LJMP POCZ
END