;
;					EJEMPLO 2.3
;
;				Autor: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Ejemplo para simulación y/o MicroPIC Trainer
;
;Programa combinacional
;                                                                         
;Según el estado de los interruptores RA0 y RA1, activar los leds RB0-RB7 conectados a la
;puerta B, conforme a la siguiente tabla de la verdad:
;
;	RA1	RA0		RB7	RB6	RB5	RB4	RB3	RB2	RB1	RB0
;	--	--		--	--	--	--	--	--	--	--
;	0	0		1	0	1	0	1	0	1	0
;	0	1		0	1	0	1	0	1	0	1
;	1	0		0	0	0	0	1	1	1	1
;	1	1		1	1	1	1	0	0	0	0
					
		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

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
		btfsc	PORTA,0		;Chequea el estado de RA0
		goto	RA0_es_1	;Está a "1"
		btfsc	PORTA,1		;Está a "0". Chequea el estado de RA1
		goto	Estan_a_10
		movlw	b'10101010'
		movwf	PORTB		;Están a 00. Salida de la secuencia 		
		goto	Loop

Estan_a_10	movlw	b'00001111'
		movwf	PORTB		;Están a 10. Salida de la secuencia
		goto	Loop

RA0_es_1	btfsc	PORTA,1		;Chequea el estado de RA1
		goto	Estan_a_11	;Está a "1"
		movlw	b'01010101'
		movwf	PORTB		;Están a 01. Salida de la secuencia
		goto	Loop
					
Estan_a_11	movlw	b'11110000'
		movwf	PORTB		;Están a 11. Salida de la secuencia
		goto	Loop

		end			;Fin del programa fuente
