.include "m328pdef.inc"
.def CINCOSEG = r17
.cseg
.org 0
jmp main
.org 0x16
jmp interTimer


main:	ldi r16,0x1f
		out ddrb,r16  ; configuro PB0-4 como salidas (M0-M4)

		clr r16
		out ddrd,r16  ; configuro PD como entradas (sensores S0-3) y pulsador

		ldi r16,0xf
		out ddrc,r16  ; configuro PC0-3 como salidas (display)

		ldi r16,high(15625)
		sts ocr1ah,r16
		ldi r16,low(15625)
		sts ocr1al,r16    ; fijo VMAX para que se cuente hasta 1sg con freq 4Mhz/256

		ldi r16,0
		sts tcnt1h,r16
		sts tcnt1l,r16  ; temp. a 0
		ldi r16,2
		sts timsk1, r16
		sei
		clr CINCOSEG

nocomienzo: sbic pind,6
			jmp nocomienzo  ; hasta que no se pulse no empieza
		
			sbi portb,0		; arranco M0 y saco 0 por el display
			ldi r16,0
			out portc,r16   

esperom0: 	sbis pind,2
			jmp esperom0   ; pregunto por el sensor para saber cuando acaba M0

			cbi portb,0	    ; apago M0
			sbi portb,1		; arranco M1 y saco 1 por el display
			ldi r16,1
			out portc,r16

esperom1: 	sbis pind,3
			jmp esperom1   ; pregunto por el sensor para saber cuando acaba M1

			cbi portb,1	    ; apago M1
			sbi portb,2		; arranco M2 y saco 2 por el display
			ldi r16,2
			out portc,r16

esperom2: 	sbis pind,4
			jmp esperom2   ; pregunto por el sensor para saber cuando acaba M2

			cbi portb,2	    ; apago M2
			sbi portb,3		; arranco M3 y saco 3 por el display
			ldi r16,3
			out portc,r16

esperom3: 	sbis pind,5
			jmp esperom3   ; pregunto por el sensor para saber cuando acaba M3

			cbi portb,3	    ; apago M3
			sbi portb,4		; arranco M4 y saco 4 por el display
			ldi r16,4
			out portc,r16


			ldi r16,0b00001100;  activo el contador
			sts tccr1b,r16

			clr CINCOSEG
			clr r20

esperom4: 	cpi CINCOSEG,1   ; CINCOSEG es modificada por la rutina interTimer
			brne esperom4
			
			cbi portb,4   ; apago M4
			ldi r16,0b00001100;  desactivo el contador
			jmp nocomienzo  ; dispuesto para otro proceso cuando se pulse


interTimer: in r16,sreg
			push r16

			inc r20        ; cada vez que hay interrupción (cada sg) se incrementa r20
			cpi r20,5	   ; quiero saber si ya han pasado 5sg
			brne finInt
			ldi CINCOSEG,1

	finInt: pop r16
			out sreg,r16
			reti

