;
;					EJEMPLO 2.5
;
;				Autor: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Ejemplo para simulación y/o MicroPIC Trainer
;
;Programa combinacional. Simulación del control de una máquina de torneado
;
;La secuencia se inicia al pulsar "I" (RA0) que activa el cilindro "V" (RB0). Este en su
;avance empuja la pieza a tornear y acciona el sensor "b" (RA2) activando el relé del motor
;"M" (RB1). Comienza el torneado. Durante el avance se alcanza el sensor "c" (RA3) que 
;desactiva el cilindro "V" (RB0) iniciándose el retroceso del mismo. Al volver a pasar 
;por "b" (RA2), se desconecta "M" (RB1). Cuando se alcanza el final de carrera "a" (RA1)
;se activa una señal acústica "A" RB2) para que el operario retire la pieza, coloque otra 
;nueva y, se inicie un nuevo ciclo, al pulsar "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,0		;Activa cilindro "V", avance.

Espera_b_1	clrwdt			;Refresca el WDT
		btfss	PORTA,2		;Chequea el sensor "b"
		goto	Espera_b_1	;Desactivado, espera.
		bsf	PORTB,1		;"b" activado, motor "M" en ON
Espera_c	clrwdt			;Refresca el WDT
		btfss	PORTA,3		;Chequea el sensor "c"
		goto	Espera_c	;Desactivado, espera.
		bcf	PORTB,0		;"c" activado, cilindro "V" en OFF, retroceso
					
Espera_b_2	clrwdt			;Refresca el WDT
		btfss	PORTA,2		;Chequea el sensor "b"
		goto	Espera_b_2	;Desactivado, espera
		bcf	PORTB,1		;"b" activado, motor "M" en OFF
				
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
		goto	Loop

		end			;Fin del programa fuente
