;
;					ESEMPIO 2.3
;
;				Autore: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Esempio per simulazione e/o MicroPIC Trainer
;
;Programma combinazionale
;                                                                         
;Secondo lo stato degli interruttori RA0 e RA1, attivare i leds RB0-RB7 connessi alla
;porta B, seguendo la tabella della verità:
;
;	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 di processore
		include	"P16F84.INC"	;Definizioni di registri interni

		org	0x00		;Vettore di Reset
		goto	Inizio

		org	0x05		;Salva il vettore di interrupt

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
		btfsc	PORTA,0		;Controlla lo stato di RA0
		goto	RA0_è_1		;E' a "1"
		btfsc	PORTA,1		;E' a "0". Controlla lo stato di RA1
		goto	Sono_a_10
		movlw	b'10101010'
		movwf	PORTB		;Sono a 00. Uscita dalla sequenza 		
		goto	Loop

Sono_a_10	movlw	b'00001111'
		movwf	PORTB		;Sono a 10. Uscita dalla sequenza 
		goto	Loop

RA0_è_1		btfsc	PORTA,1		;Controlla lo stato di RA1
		goto	Sono_a_11	;E' a "1"
		movlw	b'01010101'
		movwf	PORTB		;Sono a 01. Uscita dalla sequenza 
		goto	Loop
					
Sono_a_11	movlw	b'11110000'
		movwf	PORTB		;Sono a 11. Uscita dalla sequenza 
		goto	Loop

		end			;Fine del programma principale
