Hola. Por lo poco que vi, te corrijo esto:
MOVLW B"00000011"
MOVWF TRISA
Lo correcto deberia ser:
MOVLW B"00001111"
MOVWF TRISA
pero has hecho lio...estas son 2 instrucciones que estan en tu programa:
BTFSS PORTA,3
BCF PORTA,3
Eso no puede ser( en teoria si, pero NO


no me quiero desviar del hilo...) BTFSS PORTA,3 es chequear el pin 3 del puertoA, y utiliza cuando a ese pin lo configuraste como entrada.
BCF PORTA,3 pone el pin 3 del puertoA a cero. Se utiliza cuando configuraste a ese pin como SALIDA.
Decidite,al pin lo configuras y utilizas como entrada o salida!


pero solamente una de las dos opciones!


Si bien podes cambiar dinamicamente mediante el programa un pin de entrada como salida y viceversa, NO LO RECOMIENDO si no la tenes muy clara en programacion.
Lo mismo hiciste con el pin 2 del puertoA...
Otra cosa:Esto es redudante:
DESCENDER CALL ESPERA30MS
DECF CONTDES,F
MOVLW 0x00
SUBWF CONTDES,W
BTFSC STATUS,Z
CLRF CONTDES
Lo optimo:
DESCENDER CALL ESPERA30MS
DECF CONTDES,F
Eso es lo mismo...
Exitos.