Antirebote con 12f629

Hola, estoy intentando hacer un circxuito antirebote con este pic. El caso es que tiene que cuando recibe un 0 en GP3 tiene que cambiarme la salida de GPIO,2 a 0, cambiar a 1 de nuevo e ignorar los rebotes durante X ms, estoy intentando hacer un retardo pero no me da salido. Adjunto código por si teneis sugerencias. Estoy simulando con el MPLAB. El 12f629 me cuesta por ahora. Muchas gracias por anticipado.

LIST P=12F629
INCLUDE P12F629.INC
ERRORLEVEL -302
__CONFIG _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT

CBLOCK 0X20
;espacio para la declaracion de variables

ENDC
#define salida GPIO,2 ;configuro salida para micro controlador
#define entrada GPIO,3 ;configuro entrad sensor
ORG 00
GOTO CONFIGURA

;espacio para las subrrutinas

CONFIGURA NOP
CLRF GPIO
MOVLW B'00000111' ; 07H Configuro GP1, GP2, GP3 como pines
MOVWF CMCON ; digitales
BANKSEL OSCCAL ;para calibrar el oscilador interno
CALL 3FFH ; Obtengo el valor de calibracion del oscilador
MOVWF OSCCAL
CLRF TRISIO
BANKSEL GPIO
; bsf status, rp0 ;bank 1
movlw b'0001000' ;(x= don't care = does not matter)
movwf TRISIO ;the lowest bit will be an OUTPUT
;bcf status, rp0 ;bank 0


;Programa principal
CICLO

btfss GPIO,3
GOTO RETARDO

ACTIVASALIDA
BSF GPIO,2


RETARDO

GOTO CICLO

END
 
Atrás
Arriba