;ESEN3C genera una onda cuadrada
;usa oscilador interno y Low Voltage Programming Enable OFF
;tres opciones de funcionamiento mediante jumpers
;
;DETECTOR DE PROXIMIDAD
;PUNTO FLOTANTE S.A.
;Autor: Raul Rosales

processor 16F628
include <p16f628.inc>
__config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF

#DEFINE	BANCO0	BCF	STATUS,5
#DEFINE	BANCO1	BSF	STATUS,5

CONT	EQU 	20H
L	EQU	21H
M	EQU	22H
P	EQU	23H
EVE	EQU	24H
PENDON	EQU	25H
CUMULO	EQU	26H
ESTABLO	EQU	27H
PAU	EQU	28H

	ORG 00H
	GOTO	INICIO	
	ORG	0X4
CAMBIO	CALL	MOMENTO
	bcf	INTCON,1	;quitar bandera INTF
	BSF	INTCON,7 ;habilitacion global GIE
	MOVWF	CUMULO	;se guarda el acumulador en un registro		
	MOVF	STATUS,W ;el status tambien se va a guardar 
	BANCO0		;se asegura que esta en banco cero
	MOVWF	ESTABLO	;aqui se guarda el estatus
	btfss	PORTB,4
	GOTO	FARO	;1a opcion, enciende ~ 1 seg
	BTFSS	PORTB,5
	GOTO	VELA	;2a opcion, enciende ~ 10 seg			
ALTERNA	BCF	PENDON,0
	MOVLW	0X3	;3a opcion, enciende o apaga alternado
	MOVWF	PAU
	CLRF	PENDON
	bsf	PENDON,3
	GOTO	ACABA
FARO	CLRF	PENDON
	MOVLW	0X3
	MOVWF	PAU
	BSF	PENDON,1
	GOTO	ACABA
VELA	CLRF	PENDON
	MOVLW	0X37
	MOVWF	PAU
	BSF	PENDON,2
	GOTO	ACABA
ACABA	MOVF	ESTABLO,W
	MOVWF	STATUS
	SWAPF	CUMULO,F
	SWAPF	CUMULO,W
	RETFIE		
INICIO	BANCO1
	movlw	0xFD	;RB1 salida, RB0,4,5 y 6 entradas
	movwf	TRISB
	bcf	OPTION_REG,7 ;para Pull Up en puerto B
	bsf	PCON,3	;para OSCF a 4 MHz
	movlw	0xFE	;RA0 salida, RA2 entrada
	movwf	TRISA
	BANCO0
	MOVLW	0X3
	MOVWF	PAU
	BSF	PENDON,3
	MOVLW	0X90
	MOVWF	INTCON
LUZ	BSF	PORTB,1	;enciende L.I.R.
	call 	MOMENTO	
	MOVLW	0X4
	MOVWF	EVE
TRENES	movlw	0X5
	movwf	CONT
	CALL 	MOMENTO	
PULSOS	bcf	PORTB,1
	call	PICO
	bsf	PORTB,1
	call	PICO
	decfsz	CONT
	goto	PULSOS
	BTFSS	PORTA,4
	GOTO	PASA
	BTFSS	PENDON,3
	GOTO	DESACTI
	GOTO	LUZ
PASA	DECFSZ	EVE
	GOTO	TRENES
VIBRA	btfsc	PENDON,0
	GOTO	DESACTI
	BTFSC	PENDON,1	
	GOTO	ACTIVA	;1a opcion
	btfsc	PENDON,2
	GOTO	ACTIVA	;2a opcion
	BTFSS	PENDON,3 ;3a opcion
	GOTO	APAGA
	BTFSC	PENDON,4
	GOTO	APAGA
	bsf	PENDON,4
	BSF	PORTA,0
MISMO	call	PAUSA
	goto	LUZ
APAGA	BCF	PENDON,4
	BCF	PORTA,0
	goto	MISMO
ACTIVA	bsf	PORTA,0
	call	PAUSA
	goto	LUZ	
DESACTI	bcf	PORTA,0
	call	MOMENTO
	goto	LUZ
PICO	movlw	0x06
	movwf	P
PE	decfsz	P,f
	goto	PE
	return
MOMENTO	movlw	0x3
	movwf	M
MOM 	movlw	0xFA
	movwf	L
MOL	decfsz	L
	goto	MOL
	decfsz	M,f
	goto	MOM
	return
PAUSA	movfw	PAU
	movwf	L
PAL	movlw	0xFF
	movwf	M
PAM	MOVLW	0XFF
	MOVWF	P
PAN	DECFSZ	P,F
	GOTO	PAN
	decfsz	M,F
	goto	PAM
	decfsz	L,f
	goto	PAL
	return
	end
			
