;CANCELLO AUTOMATICO
;INPUTS:
;RB0	TELECOMANDO
;RB1	FINECORSA APERTURA
;RB2	FINECORSA CHIUSURA
;RB3	FOTOCELLULA
;RB4	COSTA PNEUMATICA
;RB5	TERMICO MOTORE
;OUTPUTS:
;RA0	TELERUTTORE MOTORE IN APERTURA
;RA1	TELERUTTORE MOTORE IN CHIUSURA
;RA2	LAMPADA LAMPEGGIANTE
	
PROCESSOR	16F84
ORG	0           
BSF 	3,5 	
CLRF	5			;porta A: tutte uscite
MOVLW	0xFF		;porta B: tutti ingressi
MOVWF	6
BCF 	3,5			
CLRF	0C
CLRF	0D
CLRF	5
CLRF	6
NOP

STATO1:				;CANCELLO CHIUSO
CLRF	5			;FERMA IL MOTORE E SPEGNE IL LAMPEGGIATORE
TEST_RB0:
BTFSS	6,0			;VEDE SE VIENE AZIONATO IL TELECOMANDO
GOTO TEST_RB0

STATO2:				;CANCELLO IN APERTURA
BSF		5,0
BCF		5,1			;AZIONA IL MOTORE IN APERTURA
BSF		5,2			;ACCENDE IL LAMPEGGIATORE
TEST_RB1:
BTFSS	6,1			;ASPETTA IL FINECORSA APERTURA
GOTO TEST_RB1

STATO3:				;CANCELLO APERTO E FERMO
CLRF	5			;FERMA IL MOTORE E SPEGNE IL LAMPEGGIATORE
GOTO	TEMPO_CANC_APERTO

STATO4				;CHIUSURA
BSF		5,1			;AZIONA IL MOTORE IN CHIUSURA
BSF		5,2			;ACCENDE IL LAMPEGGIATORE
TEST_RB2:
BTFSC		6,2		;ASPETTA IL FINECORSA CHIUSURA
GOTO STATO1
BTFSC		6,3		;VEDE SE INTERVIENE LA FOTOCELLULA
GOTO STATO2		
BTFSC		6,4		;VEDE SE INTERVIENE LA COSTA PNEUMATICA
GOTO STATO2
GOTO TEST_RB2

TEMPO_CANC_APERTO:
MOVLW	6
MOVWF	0D
DELAYLOOP:			
DECFSZ	0D,1
GOTO	DELAYLOOP
return

END

