.INCLUDE "m8535def.inc"

.DEF RegMin = R16
.DEF RegSec = R17
.DEF Temp0 =  R18
.DEF Temp1 =  R19
.DEF Temp2 =  R20
.DEF Tbase =  R21
.DEF DispSelect = R22

.EQU Ido = 250			;Timer1 250Hz=4mS   (XTAL = 4MHz )

.EQU DispPort = PortA
.EQU DispCont = PortC
.EQU KeyIn    = DispCont
.EQU 	Disp0 = 0
.EQU 	Disp1 = 1
.EQU 	Disp2 = 2
.EQU 	Disp3 = 3


.CSEG 
.ORG 0000
RJMP Reset
.ORG OC1Aaddr
RJMP Timer






Reset:					LDI Temp0, low(RamEND)
						OUT SPL, Temp0
						LDI	Temp0, high(RamEND)
						OUT SPH, Temp0
						LDI Temp0, 0b11111111
						OUT DDRA, Temp0	;PortA = Kimenet
						LDI Temp0, 0b00001111
						OUT DDRC, Temp0 ;PortC alsó 4bit = Kimenet, Felső 4bit bemenet
						LDI Temp0, 0
						OUT DispPort, Temp0	;Kijelző inaktív
						OUT DispCont, Temp0

						LDI RegSec, $00
						LDI RegMin, $00

						LDI Temp0,0b00000000
						OUT TCCR1A, Temp0
						LDI	Temp0,0b00001011
						OUT TCCR1B, Temp0
						LDI Temp0, high(Ido)
						OUT OCR1AH, Temp0
						LDI Temp0, low(Ido)
						OUT OCR1AL, Temp0
						LDI Tbase, 250
						LDI DispSelect, 0
						LDI Temp0, 0b00010000
						OUT TIMSK, Temp0
					
						SEI		

;--------------------------------------------------------------------------------

Loop: 					NOP
						NOP
						RJMP Loop
						



;================================================================================
;                  OC1Aaddr Megszakítás kiszolgálásának rutinja
;================================================================================

Timer:						DEC Tbase
							BRNE Display
							LDI Tbase, 250						
;-----------------------------MásodPerc------------------------------------------
							SUBI RegSec, 1
							BRHS MinuszHat01
							RJMP Display
MinuszHat01:				SUBI RegSec, $06
							CPI RegSec, $F9
							BRNE Display
							LDI RegSec, $59
;-----------------------------------Perc------------------------------------------
							SUBI RegMin, 1
							BRHS MinuszHat02
							RJMP Display
MinuszHat02:				SUBI RegMin, $06
							CPI RegMin, $F9
							BRNE Display
							LDI RegMin, $59

;---------------------------------------------------------------------------------

Display:					INC DispSelect
							CPI DispSelect, 5
							BRNE Disp01
							LDI DispSelect,1

Disp01:				    	CPI DispSelect,1
							BRNE Disp02
							CBI DispCont, Disp3
							MOV Temp1,RegSec
							ANDI Temp1,0b00001111
							RCALL Beolvas
							OUT DispPort, R0
							SBI DispCont, Disp0
							RJMP Finish

Disp02:						CPI DispSelect,2
							BRNE Disp03
							CBI DispCont,Disp0
							MOV Temp1,RegSec
							ANDI Temp1,0b11110000
							SWAP Temp1
							RCALL Beolvas
							OUT DispPort, R0
							SBI DispCont, Disp1
							RJMP Finish

Disp03:						CPI DispSelect,3
							BRNE Disp04
							CBI DispCont, Disp1
							MOV Temp1,RegMin
							ANDI Temp1,0b00001111
							RCALL Beolvas
							MOV Temp2, R0
							ORI Temp2,0b10000000
							MOV R0, Temp2
							OUT DispPort, R0
							SBI DispCont, Disp2
							RJMP Finish

Disp04:						CPI DispSelect,4
							BRNE Finish
							CBI DispCont,Disp2
							MOV Temp1,RegMin
							ANDI Temp1,0b11110000
							SWAP Temp1
							RCALL Beolvas
							OUT DispPort, R0
							SBI DispCont, Disp3
Finish:						RETI
						
;===============================================================================

Beolvas:					LDI ZL, low  (2*Tab)
							LDI ZH, high (2*Tab)
							CLC
							LDI	Temp2,0
							ADD ZL, Temp1
							ADC	ZH,	Temp2
							LPM
							RET

;---------------------------------------------------------------------------------

Tab:

.DB 0b01110111,0b01000001	;0,1
.DB 0b00111011,0b01101011	;2,3
.DB 0b01001101,0b01101110	;4,5
.DB 0b01111110,0b01000011	;6,7
.DB 0b01111111,0b01101111	;8,9
