;************************************************
;Programma che attende una combinazione
;degli interruttori di ingresso SW1-SW5
;per accendere tutti i led: D1-D8.
;La combinazione da introdurre è 1-0-1-0-1.

	LIST	16F84			;Tipo di dispositivo
	
;Area delle etichette
STATUS	EQU	0x03			;Registro di stato
PORTA	EQU	0x05			;Porta a
PORTB	EQU	0x06			;Porta b
RP0	EQU	0x05
Z	EQU	0x02


	ORG 	0			;VEttore di reset
	GOTO	INIZIO			;Salto all'etichetta INIZIO		
	ORG	5			;Saltiamo il vettore di interrupt

;Inizio programma

INIZIO: BSF	STATUS,RP0		;Mi sposto al banco 1
	CLRF	PORTB			;Setto tutte le porte b come uscite
	MOVLW	b'00011111'		;Muovo il valore binario nel registro w
	MOVWF	PORTA			;Setto gli ingressi da SW1 a SW5
	BCF	STATUS,RP0		;Torno al banco 0
	CLRF	PORTB			;Cancello la porta b

;Ciclo che attende la combinaizone 1-0-1-0-1

CICLO	MOVF	PORTA,W			;Prendo la combinazione degli interruttori e la sposto nel registro w
	ANDLW	b'00011111'		;asocio il valore preso con la maschera 00011111
	XORLW	b'00010101'		;controllo se è uguale alla combinazione
	BTFSS	STATUS,2		;se è uguale salto l'istruzione goto CICLO
	GOTO	CICLO			;altrimenti salto al'etichetta CICLO

	MOVLW	0xff			;Sposto il valore esadecimale 0Xff
	MOVWF	PORTB			;nella porta b accendendo tutti i led

FINE:	GOTO	FINE			;creo un ciclo per fermar il programma 

;Premere il reset
;per tornare ad eseguire il programma

	END		;Fine del programma