;
;					EJEMPLO 1.7
;
;				Autor: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Ejemplo para simulación
;
;El programa realiza una pemporización de 0.5 segundos. Se supone una frecuencia de trabajo 
;del PIC de 4 MHz, por lo que el TMR0 evoluciona cada 1 uS (4Tosc=1uS ).
;
;Al TMR0 se le carga con 250 - 2 (su complemento, 7) y se selecciona un preescaler de 8. La
;temporización así obtenida es de unos 1990 uS. Si esta se repite 250 veces, se obtiene
;una temporización total en torno a los 500000uS 
		
		List	p=16F84		;Tipo de procesador
		include	"P16F84.INC"	;Definiciones de registros internos

Contador	equ	0x10		;Variable para el contador


		org	0x00		;Vector de Reset
		goto	Inicio

		org	0x05		;Salva el vector de interrupción

Inicio		bsf	STATUS,RP0	;Selecciona banco 1 de datos
		movlw	b'11000010'
		movwf	OPTION_REG	;Configura preescaler de 8 asignado a TMR0
		bcf	STATUS,RP0	;Selecciona banco 0 de datos

		movlw	.250
		movwf	Contador	;Inicia la variable contador
Bucle1		clrf	INTCON		;Desconecta flag del TMR0 e interrupciones
		movlw	.7
		movwf	TMR0		;Carga el TMR0 con complemento de 250

Bucle2		btfss	INTCON,T0IF	;Fin del TMR0 (flag T0IF=1) ??
		goto	Bucle2		;No, esperar
		decfsz	Contador,F	;Si. Repetir tantas veces como indique el contador
		goto	Bucle1

Stop		nop			;Poner breakpoint de parada
		nop

		end			;Fin del programa fuente
