;DETECTOR DE PROXIMIDAD emite con un led infrarrojo un 
;haz de luz que al reflejarse con algun objeto, rebota 
;al detector de luz infrarroja, la tarjeta detector de
;proximidad que contiene estos dispositivos se conecta 
;a una tarjeta Evolupic Bootloader 16f88 en el conector 
;para LCD.
;cada jumper tiene una función distinta
;S1 FUNCION ACTIVA EL RELE SOLAMENTE SI DETECTA
;PROXIMIDAD Y LO DESACTIVA SI NO LA DETECTA
;S2 FUNCION TIMER ACTIVA RELE DURANTE 10 SEGUNDOS SI
;DETECTA PROXIMIDAD
;S3 FUNCION TOGGLE: ACTIVA Y DESACTIVA EL RELE CADA VEZ
;QUE DETECTA PROXIMIDAD
;EL JUMPER ACTIVO DEBE DE POSICIONARSE EN EL LADO MAS
;CERCANO AL BORDE DE LA TARJETA, CON LOS OTROS DOS
;JUMPERS EN EL LADO CONTRARIO.
;CADA VEZ QUE SE CAMBIA LA POSICION DE UN JUMPER
;SE DEBE DAR RESET AL EDUPIC O EVOLUPIC.

processor 16f88
	include	  <p16f88.inc>

#DEFINE	BANCO0	BCF	STATUS,5
#DEFINE	BANCO1	BSF	STATUS,5

CONT	EQU 	20H
L	EQU	21H
M	EQU	22H
PI	EQU	23H
EVE	EQU	24H
PENDON	EQU	25H
CLAVE	EQU	26H

	ORG 0
	CLRF PCLATH
	GOTO WEB

	ORG 03H
WEB	BANCO0
	bcf	RCSTA,SPEN	;DESHABILITA UART
INICIO	BANCO1
	movlw	7
	movwf	CMCON
	clrf	CVRCON
	clrf	ANSEL
	movlw	0x04	
	movwf	TRISA	;salida RA0,1 ; entrada RA2 	
	movlw	0x0e	;entradas RB3,2,1
	movwf	TRISB
	bcf	OPTION_REG,7	;pulls up habilitados
	BANCO0
VUELTA	BSF	PORTA,1	;led I.R. apagado
	call 	MOMENTO	
	MOVLW	0X4
	MOVWF	EVE
TRENES	movlw	D'5'
	movwf	CONT
	CALL 	MOMENTO	
PULSOS	bcf	PORTA,1	;enciende led
	call	PICO	;
	bsf	PORTA,1	;apaga led
	call	PICO
	decfsz	CONT	;envia 5 pulsos
	goto	PULSOS
	BTFSC	PORTA,2	;verifica entrada de R.I.R.
	GOTO	DECI
	DECFSZ	EVE
	GOTO	TRENES
SELEC	movfw	PORTB	;ve los puentes
	movwf	CLAVE	;puenteado es cero
	bcf	STATUS,C	
	rrf	CLAVE,f	;para que sean los menos significativos
	comf	CLAVE	;los hace uno
	movfw	CLAVE
	andlw	0X7	;solo los pines con puentes
	movwf	CLAVE
VALIDA	bcf	STATUS,Z  ;solo hay tres combinaciones
	sublw	0x1	;que son validas
	btfsc	STATUS,Z
	goto	ESUNO
	movfw	CLAVE
	sublw	0x2
	btfsc	STATUS,Z
	goto	ESDOS
	movfw	CLAVE
	sublw	0x4
	btfsc	STATUS,Z
	goto	ESCUAT
	goto	VUELTA	;otra combinacion no es válida
ESUNO	bsf	PORTA,0	;activa Rel.
	goto	PAU1
ESDOS	bsf	PORTA,0
	goto	PAU2
DECI	btfsc	CLAVE,2
	goto	VUELTA
DESACTI	bcf	PORTA,0
	call	MOMENTO
	goto	INICIO
PAU1	call	PAUSA1
	goto	INICIO
PAU2	call	PAUSA2
	goto	INICIO
ESCUAT	BTFSC	PENDON,3
	GOTO	APAGA
	bsf	PENDON,3
	BSF	PORTA,0
MISMO	call	PAUSA1
	goto	VUELTA
APAGA	BCF	PENDON,3
	BCF	PORTA,0
	goto	MISMO
PICO	movlw	0x06	;20 us
	movwf	PI
PE	decfsz	PI,f
	goto	PE
	return
MOMENTO	movlw	0x3	;2.263 ms
	movwf	M
MOM 	movlw	0xFA
	movwf	L
MOL	decfsz	L
	goto	MOL
	decfsz	M,f
	goto	MOM
	return
PAUSA1	movlw	0x3	;588.299 ms
	movwf	L
PAL1	movlw	0xFF
	movwf	M
PAM1	MOVLW	0XFF
	MOVWF	PI
PAN1	DECFSZ	PI,F
	GOTO	PAN1
	decfsz	M,F
	goto	PAM1
	decfsz	L,f
	goto	PAL1
	return
PAUSA2	movlw	0x37	;10.785 ..s
	movwf	L
PAL2	movlw	0xFF
	movwf	M
PAM2	MOVLW	0XFF
	MOVWF	PI
PAN2	DECFSZ	PI,F
	GOTO	PAN2
	decfsz	M,F
	goto	PAM2
	decfsz	L,f
	goto	PAL2
	return
	end
			
