;
;					EJEMPLO 2.6
;
;				Autor: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Ejemplo para simulación y/o MicroPIC Trainer
;
;Máquina de taladrado

;Al accionar el pulsador "I" (RA0) el cabezal realiza un descenso rápido de aproximación,
;activando el motor de bajada rápida "BR"(RB3). Al llegar al sensor "b" (RA2), se activa 
;el relé "M" (RB1) que hace girar el motor de la broca y se realiza un descenso lento para 
;el taladrado de la pieza "BL" (RB4). Cuando se activa el sensor "c" (RA3) se considera 
;que la pieza está taladrada. Se inicia una subida rápida del cabezal "SR" (RB0) al tiempo
;que el relé "M" (RB1) de giro sigue activado. Cuando se alcanza el final de carrera "a" 
;(RA1), se detiene la subida rápida "SR"(RB0), el relé de giro "M" (RB1) y se activa una 
;señal acústica "A" (RA2) de aviso. El ciclo comienza con una nueva pulsación de "I" (RA0).
	
		List	p=16F84		;Tipo de procesador
		include	"P16F84.INC"	;Definiciones de registros internos

		org	0x00		;Vector de Reset
		goto	Inicio

		org	0x05		;Salva el vector de interrupción

Inicio	        clrf 	PORTB		;Borra los latch de salida
		bsf	STATUS,RP0	;Selecciona banco 1
		clrf	TRISB		;Puerta B se configura como salida
		movlw	b'00011111'		
		movwf	TRISA		;Puerta A se configura como entrada
		bcf	STATUS,RP0	;Selecciona banco 0			

Loop:		clrwdt			;Refrescar el WDT
		btfss	PORTA,0		;Chequea si está activado "I"
		goto	Loop		;No, secuencia detenida.
		bcf	PORTB,2		;Si, inicia secuencia, acústico en OFF
		bsf	PORTB,3		;Activa bajada rápida "BR".

Espera_b	clrwdt			;Refresca el WDT
		btfss	PORTA,2		;Chequea el sensor "b"
		goto	Espera_b	;Desactivado, espera.
		bcf	PORTB,3		;"b" activado, bajada rápida en OFF
		bsf	PORTB,4		;Bajada lenta "BL" en ON
		bsf	PORTB,1		;Motor "M" en ON

Espera_c	clrwdt			;Refresca el WDT
		btfss	PORTA,3		;Chequea el sensor "c"
		goto	Espera_c	;Desactivado, espera.
		bcf	PORTB,4		;"c" activado, bajada lenta en OFF
		bsf	PORTB,0		;Subida rápida "SR" en ON
					
Espera_a	clrwdt			;Refresca el WDT
		btfss	PORTA,1		;Chequea el sensor "a"
		goto	Espera_a	;Desactivado, espera
		bsf	PORTB,2		;"a" activado, acústico en ON
		bcf	PORTB,0		;Subida rápida en OFF
		bcf	PORTB,1		;Motor en OFF
		goto	Loop

		end			;Fin del programa fuente
