;
;					ESEMPIO 2.5
;
;				Autore: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Esempio per simulazione e/o MicroPIC Trainer
;
;Programma combinazionale. Simulazione del controllo di una macchina di tornitura
;
;La sequenza viene avviata premendo "I" (RA0) che attiva il cilindro "V" (RB0). Questo 
;avanzando spinge il pezzo a tornire e aziona il sensore "b" (RA2) attivando il relé del motore
;"M" (RB1). Inizia la tornitura. Durante l'avanzamneto si raggiunge il sensore "c" (RA3) che 
;disattiva il cilindro "V" (RB0) attivando la retrocessione dello stesso. Ripassando 
;per "b" (RA2), si disconnette "M" (RB1). Quando si raggiunge la fine del percorso "a" (RA1)
;si attiva un segnale acustico "A" RB2) affinché l'operatore ritiri il pezzo, ne collochi uno 
;nuovo e, inizi un nuovo ciclo, premendo "I" (RA0).
	
		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
		btfss	PORTA,0		;Controlla se è attivato "I"
		goto	Loop		;No, sequenza arrestata.
		bcf	PORTB,2		;Sì, inizia sequenza, segnale acustico in OFF
		bsf	PORTB,0		;Attiva cilindro "V", avanza.

Aspetta_b_1	clrwdt			;Aggiorna il WDT
		btfss	PORTA,2		;Controlla il sensore "b"
		goto	Aspetta_b_1	;Disattivato, aspetta.
		bsf	PORTB,1		;"b" attivato, motore "M" in ON
Aspetta_c	clrwdt			;Aggiorna il WDT
		btfss	PORTA,3		;Controlla il sensore "c"
		goto	Aspetta_c	;Disattivato, aspetta.
		bcf	PORTB,0		;"c" attivato, cilindro "V" in OFF, retrocesso
					
Aspetta_b_2	clrwdt			;Aggiorna il WDT
		btfss	PORTA,2		;Controlla il sensore "b"
		goto	Aspetta_b_2	;Disattivato, aspetta
		bcf	PORTB,1		;"b" attivato, motore "M" in OFF
				
Aspetta_a	clrwdt			;Aggiorna il WDT
		btfss	PORTA,1		;Controlla il sensore "a"
		goto	Aspetta_a	;Disattivato, aspetta
		bsf	PORTB,2		;"a" attivato, segnale acustico in ON
		goto	Loop

		end			;Fine del programma principale
