;
;					ESEMPIO 2.6
;
;				Autore: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Esempio per simulazione e/o MicroPIC Trainer
;
;Macchina per trapanatura

;Azionando ll tasto "I" (RA0) la testa inizia un abbassamento rapido di avvicinamento,
;attivando il motore di discesa rapida "BR"(RB3). Arrivando al sensore "b" (RA2), si attiva 
;il relé "M" (RB1) che fa girare il motore della punta del trapano e avviene un abbassamento lento per 
;la trapanatura del pezzo "BL" (RB4). Quando si attiva il sensore "c" (RA3) si constata 
;che il pezzo è stato trapanato. Inizia una salita rapida della testa "SR" (RB0) nel tempo
;in cui il relé "M" (RB1) di giro resta attivato. Quando si raggiunge la fine del percorso "a" 
;(RA1), si arresta la salita rapida "SR"(RB0), il relé di giro "M" (RB1) e si attiva un
;segnale acustico "A" (RA2) di avviso. Il ciclo inizia premendo un'altra volta "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,3		;Attiva abbassamento rapido "BR".

Aspetta_b	clrwdt			;Aggiorna il WDT
		btfss	PORTA,2		;Controlla il sensore "b"
		goto	Aspetta_b	;Disattivato, aspetta.
		bcf	PORTB,3		;"b" attivato, abbassamento rapido in OFF
		bsf	PORTB,4		;Abbassamento lento "BL" in ON
		bsf	PORTB,1		;Motore "M" in ON

Aspetta_c	clrwdt			;Aggiorna il WDT
		btfss	PORTA,3		;Controlla il sensore "c"
		goto	Aspetta_c	;Disattivato, aspetta.
		bcf	PORTB,4		;"c" attivato, abbassamento lento in OFF
		bsf	PORTB,0		;Salita rapida "SR" in ON
					
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
		bcf	PORTB,0		;Salita rapida in OFF
		bcf	PORTB,1		;Motore in OFF
		goto	Loop

		end			;Fine del programma principale
