;
;					ESEMPIO 1.7
;
;				Autore: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Esempio per simulazione
;
;Il programma realizza una temporizzazione di 0.5 secondi. Si presume una frequenza di lavoro 
;del PIC di 4 MHz, per cui il TMR0 cambia ogni 1 uS (4Tosc=1uS ).
;
;Il TMR0 viene caricato con 250 - 2 (il suo complemento, 7) e si seleziona un prescaler di 8. La
;temporizzazione così ottenuta è di 1990 uS. Se questa si ripete 250 volte, si ottiene
;una temporizzazione totale intorno ai 500000uS 
		
		List	p=16F84		;Tipo di processore
		include	"P16F84.INC"	;Definizioni di registri interni

Contatore	equ	0x10		;Variabile per il contatore


		org	0x00		;Vettore di Reset
		goto	Inizio

		org	0x05		;Salva il vettore di interrupt

Inizio		bsf	STATUS,RP0	;Seleziona banco dati 1 
		movlw	b'11000010'
		movwf	OPTION_REG	;Configura prescaler di 8 assegnato al TMR0
		bcf	STATUS,RP0	;Seleziona banco dati 0  

		movlw	.250
		movwf	Contatore	;Attiva la variabile contatore
Loop1		clrf	INTCON		;Disconnetti flag del TMR0 e interrupt
		movlw	.7
		movwf	TMR0		;Carica il TMR0 con complemento di 250

Loop2		btfss	INTCON,T0IF	;Fine del TMR0 (flag T0IF=1) ??
		goto	Loop2		;No, aspettare
		decfsz	Contatore,F	;Sì. Ripetere tante volte quante ne indica il contatore
		goto	Loop1

Stop		nop			;Metti breakpoint di arresto
		nop

		end			;Fine del programma principale
