;***************************************************************************************
;Programma che accende e spegna un diodo led
;in funzione dello stato dell'interruttore
;numero 2 della porta A
;
;Realizzato da;		Daniele Loddo
;
;Data:				8/04/2003
;***************************************************************************************


				list p=16f84				;Tipo di processore usato
				

;Zona delle etichette

STATUS			EQU	0x03					;Registro di stato
PORTA			EQU	0x05					;Registro porta A
PORTB			EQU	0x06					;Registro porta B
RP0				EQU	0x05				;Flag RP0 per il banco

				org	0				;Vettore di reset
				GOTO	INIZIO				;Va all'etichetta INIZIO
				org	5				;Salta il vettore di reset
				
				
;Inizio del programma

INIZIO			BSF		STATUS, RP0			;Vado al banco 1 della RAM
				CLRF	PORTB				;Porto a zero tutti i bit della porta B
									;settando le porte B tutte come uscite
				movlw	b'00000100'			;Carico il valore binario 00000100 nel registro di lavoro
				movwf	PORTA				;poi lo sposto nella porta A settando l'interruttore 3
									;come ingresso
				bcf	STATUS, RP0			;Torno al banco zero
				CLRF	PORTB				;Azzero eventuali bit residui sulla porta B
				
;Inizio del ciclo

CICLO			btfss	PORTA,2					;Controllo se il bit 2 della porta A è settato
				goto	SPEGNERE			;Se non è a zero va alla routine SPEGNERE
				goto	ACCENDERE			;Se è settato va alla routine ACCENDERE
				
;ROUTINE

ACCENDERE		bsf		PORTB,0				;Setto il bit zero a uno accendendo il led
				goto	CICLO				;Torno all'etichetta ciclo
				
SPEGNERE		bcf		PORTB,0				;Resetto il bit zero e spengo il diodo led
				goto	CICLO				;Torno all'etichetta ciclo
				
				END					;Fine del programma
