;
;					EJEMPLO 2.12
;
;				Autor: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Ejemplo para simulación y/o MicroPIC Trainer
;
;El Display de 7 segmentos de la MicroPIC Trainer. Decodificador hex. a 7 segmentos.
;
;Mediante los cuatro interruptores RA0-RA3 se introduce un valor hexadecimal de 4 bits
;que debe visualizarse sobre el display de la MicroPIC Trainer
	
		List	p=16F84		;Tipo de procesador
		include	"P16F84.INC"	;Definiciones de registros internos
                    
		org	0x00		;Vector de Reset
		goto	Inicio

		org	0x05		;Salva el vector de interrupción

;**********************************************************************************
;Tabla: Esta rutina convierte el código binario presente en los 4 bits de menos peso
;del reg. W en su equivalente a 7 segmentos. El código 7 segmentos retorna también
;en el reg. W

Tabla:		addwf	PCL,F		;Desplazamiento sobre la tabla
		retlw	b'00111111'	;Dígito 0
		retlw	b'00000110'	;Dígito 1
		retlw	b'01011011'	;Dígito 2
		retlw	b'01001111'	;Dígito 3
		retlw	b'01100110'	;Dígito 4
		retlw	b'01101101'	;Dígito 5
		retlw	b'01111101'	;Dígito 6
		retlw	b'00000111'	;Dígito 7
		retlw	b'01111111'	;Dígito 8
		retlw	b'01100111'	;Dígito 9
		retlw	b'01110111'	;Dígito	A
		retlw	b'01111100'	;Dígito b
		retlw	b'00111001'	;Dígito	C
		retlw	b'01011110'	;Dígito d
		retlw	b'01111001'	;Dígito	E
		retlw	b'01110001'	;Dígito	F

Inicio	        clrf 	PORTB		;Borra los latch de salida
		bsf	STATUS,RP0	;Selecciona banco 1
		clrf	TRISB		;Puerta B se configura como salida
		movlw	b'00011111'		
		movwf	TRISA		;Puerta A se configura como entrada		
		bcf	STATUS,RP0	;Selecciona banco 0			                                                                         

Loop		clrwdt			;Refrescar el WDT
		movf	PORTA,W
		andlw	b'00001111'	;Lee el código de RA0-RA3
		call	Tabla		;Convierte a 7 segmentos
		movwf	PORTB		;Visualiza sobre el display
		goto 	Loop

		end			;Fin del programa fuente

