;
;					ESEMPIO 2.12
;
;				Autore: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Esempio per simulazione e/o MicroPIC Trainer
;
;Il Display a 7 segmenti del MicroPIC Trainer. Decodificatore hex. a 7 segmenti.
;
;Mediante i quattro interruttori RA0-RA3 si introduce un valore esadecimale di 4 bits
;che deve essere visualizzato sul display del MicroPIC Trainer
	
		List	p=16F84		;Tipo di processore
		include	"P16F84.INC"	;Definizioni di registri interni
                    
		org	0x00		;Vettore di Reset
		goto	Inizio

		org	0x05		;Salva il vettore di interrupt

;**********************************************************************************
;Tabella: Questa procedura converte il codice binario presente nei 4 bits di minor peso
;del reg. W nel suo equivalente a 7 segmenti. Il codice a 7 segmenti ritorna anche
;nel reg. W

Tabella:	addwf	PCL,F		;Spostamento sulla tabella
		retlw	b'00111111'	;Cifra 0
		retlw	b'00000110'	;Cifra 1
		retlw	b'01011011'	;Cifra 2
		retlw	b'01001111'	;Cifra 3
		retlw	b'01100110'	;Cifra 4
		retlw	b'01101101'	;Cifra 5
		retlw	b'01111101'	;Cifra 6
		retlw	b'00000111'	;Cifra 7
		retlw	b'01111111'	;Cifra 8
		retlw	b'01100111'	;Cifra 9
		retlw	b'01110111'	;Cifra	A
		retlw	b'01111100'	;Cifra b
		retlw	b'00111001'	;Cifra	C
		retlw	b'01011110'	;Cifra d
		retlw	b'01111001'	;Cifra	E
		retlw	b'01110001'	;Cifra	F

Inizio	        clrf 	PORTB		;Cancella i latch di uscita
		bsf	STATUS,RP0	;Seleziona banco 1
		clrf	TRISB		;Porta B si configura come uscita
		movlw	b'00011111'		
		movwf	TRISA		;Porta A si configura come entrata		
		bcf	STATUS,RP0	;Seleziona banco 0			                                                                         

Loop		clrwdt			;Aggiornare il WDT
		movf	PORTA,W
		andlw	b'00001111'	;Leggi il codice di RA0-RA3
		call	Tabella		;Converti in 7 segmenti
		movwf	PORTB		;Visualizza sul display
		goto 	Loop

		end			;Fine del programma principale

