;Por Carlos Fernando Jiménez (corregido TODOPIC)
	LIST  P=16F84A
	#INCLUDE "p16f84A.inc"
	ERRORLEVEL      -302, -307 	;(NO FIGURAN LOS ERRORES DE CAMBIO DE PAGINA)

PUERTAB EQU 0X06
PUERTAA EQU 0X05
ESTADO EQU 0X03
OPTION1 EQU 0X01
INTC EQU 0X0B
CONTADOR EQU 0X0C
PCL EQU 0X02
W1 EQU 0X0D
aux equ 0x0e
	goto INICIO
	ORG 4
	goto INTERR

INICIO MOVLW 0X0b
	MOVWF CONTADOR
	bsf ESTADO,5 ;BANCO1
	movlw b'00000000'
	movwf PUERTAB ;PUERTA B COMO SALIDA
	movlw b'11111111'
	movwf PUERTAA ;PUERTA A COMO ENTRADA y salida
BUCLE bcf ESTADO,5 ;BANCO0
	btfsc PUERTAA,1 ;Esperamos que sea exitado el sensor
	GOTO BUCLE
OK DECFSZ CONTADOR,F
	GOTO SALTO
	movlw D'10'
	movwf CONTADOR
SALTO movfw CONTADOR
	subLw D'10'
	bcf ESTADO,5 ;BANCO0
	call DISPLAY ;Buscamos el código para el display
	xorlw b'11111111' ;Disaplay de ánodo común (debemos invertir todo)
	movwf PUERTAB ;Escribimos el display
	BSF ESTADO,5 ;BANCO1
	movlw b'11010111'
	movwf OPTION1
	bcf ESTADO,5
	movlw .5
	movwf OPTION1 ;cargamos el timer
	movlw b'10100000' ;INTERRUPCION DE TIMER PERMITIDA
	movwf INTC
	movlw .1
	movwf W1
espera btfsc W1,0
	goto espera

pito movlw .200 ;pito
	movwf aux
	BSF ESTADO,5 ;BANCO1
	movlw b'11010111'
	movwf OPTION1
	bcf ESTADO,5
pito1 movlw 0xfe
	movwf OPTION1 ;cargamos el timer
	movlw b'10100000' ;INTERRUPCION DE TIMER PERMITIDA
	movwf INTC

	movlw .1
	movwf W1
espera3 btfsc W1,0
	goto espera3
	bcf ESTADO,5
	movfw PUERTAB
	xorlw b'10000000'
	movwf PUERTAB
	DECFSZ aux,f
	goto pito1
	movwf PUERTAB
	andlw b'01111111' ;apagar el parlante
	movwf PUERTAB

BUCLE1 bcf ESTADO,5 ;BANCO0
	btfss PUERTAA,1 ;Esperamos que se quite el objeto del sensor
	GOTO BUCLE1
	bcf ESTADO,5 ;Eliminación del rebote
	movlw .5
	movwf OPTION1 ;cargamos el timer
	movlw b'10100000' ;INTERRUPCION DE TIMER PERMITIDA
	movwf INTC
	movlw .1
	movwf W1
espera1 btfsc W1,0
	goto espera1
	goto BUCLE

INTERR

salto1

	movlw b'10100000'
	movwf INTC
	movlw 0
	MOVWF W1
	RETFIE

DISPLAY addwf PCL,F
	retlw 0x3f
	retlw 0x06
	retlw 0x5b
	retlw 0x4f
	retlw 0x66
	retlw 0x6d
	retlw 0x7d
	retlw 0x07
	retlw 0xff
	retlw 0xef
	end