	/* Con una frecuencia de 1Mhz, en 1sg se cuenta hasta 1.000.000,
	en 1 msg hasta 1000, y en 5 msg hasta 5000 => este será el valor de VMAX */
	
	
	
	.include "m168pdef.inc"
	.org	0
	jmp		main
	.org	0x16	
	jmp		IntTimer1

	.org 0x30
main:	ldi	r16, 0x13          ;ldi r16,high(5000)
		sts	ocr1ah,r16
		ldi	r16, 0x88          ;ldi r16,low(5000)
		sts	ocr1al,r16		   ;ocr1a = 5000

		ldi		r16, 0b00001001 ; f = clk y modo CTC
		sts		tccr1b,r16
		
		ldi		r16,0
		sts		tcnt1h,r16
		sts		tcnt1l,r16	; ponemos a cero el temporizador

		ldi		r16,2
		sts		timsk1,r16	;Habilita interrupción modo ctc del temporizador

		sei					;Habilita la generación de interrupciones.

Fin:	rjmp	Fin			;FIN

/*
	RUTINA DE INTERRUPCIÓN
		Tan sólo guarda el registro en pila y lo restaura
		No tiene otra tarea asociada
																 */
;****************************************************************

IntTimer1:	
		in		r16,sreg
		push	r16
	/* en un caso general aquí vendrían otras instrucciones */
FinInt:
		pop		r16
		out		sreg,r16		
		reti




/*****************************************************************
RUTINA DE CONFIGURACIÓN DEL TIMER1
		;Con una frecuencia de 1Mhz, Prescaler 1, modo CTC y 
		;Ocr1a = 5000 obtenemos que el timer se pone a 0 cada 
		; 5000 x 1 us x 1 = 5ms  
		NO OLVIDAR ESCRIBIR PRIMERO EN LA PARTE ALTA 5000 = $1388
		Registros usados:
		-OCCR1AH, OCCR1AL
		-TCCRIB
			-----------------------------------------------------
			| 0  |  0  |  0  |  0  | WGM12 | CS12 | CS11 | CS10 |
			-----------------------------------------------------
				WGM12 =>  1: Modo CTC ; 0: Modo Normal
				CS12:0 => Selección del Prescaler
						   --------------------------------
						   | 0  0  0  |  Parada	          |
						   | 0  0  1  |  clk	          |
						   | 0  1  0  |  clk/8            |
						   | 0  1  1  |  clk/64           |
						   | 1  0  0  |  clk/256          |
						   | 1  0  1  |  clk/1024         |
						   | 1  1  0  |  T1 flanco bajada |
						   | 1  1  1  |  T1 flanco subida |
						   --------------------------------
		- TCNT1H,TCNT1L
		- TIMSK1
			----------------------------------------------------------
			| -  |  -  |  0  |  -  |  -  |  -  |  0  | OCIE1 | TOIE1 |
			----------------------------------------------------------	
				OCIE1: Output compare interrupt enable
						0: Disable
						1: Enable
				TOIE1: Timer overflow interrupt enable
						0: Disable
						1: Enable

	PSEUDOCÓDIGO:
	sub ConfiguraES
		DDRB <- $FF		;Puerto B como salida
		DDRD <- $3      ;Pines 1 y 0 del puerto D como salidas
		OCR1A <- 5000	;Límite de comparación en 5000   
		TCCR1B <- 9 	;Prescaler 1 y modo CTC
		TCNT1 <- 0		;Contador a 0
		TIMSK1 <- 2		;Habilitación de la interrupción por comparación
		I <- 1			;Habilitar interrupción global
		
	fin ConfiguraES
******************************************************************/
	



