Hola, creo saber cúal es tu problema.
Configuras ANSEL pero desde donde lo haces ANSEL no está, me explico:
ANSEL se encuentra en el banco 1 y tu lo tratas de direccionar en el banco 0 (cero por default).
Aunque le digas al µicro que escriba en ANSEL pero no te encuentras en su banco no lo hará.
Es correcto colocar ceros en ANSEL para hacer de esa terminal una entrada/salida digital (si colocas 1 será entrada analógica).
Pero después no le haces nada al TRISA, el cual también lo debes tomar en cuenta. ANSEL no es para desactivar comparadores.
Te hacía mención a la hoja de datos porque en la sección de I/O ports te dice paso a paso lo que debes hacer; entiendo que eres principiante pero deberías poner cuidado en eso: si utilizas un aparato, lees las instrucciones primero para saber cómo funciona.
Posiblemente estés en una clase de µicros, deberías preguntarle a tu profesor; si es tu pasatiempo, dedícale mas tiempo.
El comentario no es para molestar ni para criticar, solo es eso, un comentario, tómalo como sugerencia, y hablando de ellas:
en la carpeta de Microchip, en la subcarpeta de MPASM SUITE, vienen todos
"fusibles de configuración" que es lo que el programa tiene al principio. Al programa le falta colocar el fusible para quitar /MCRL y dejar RA5 como I/O.
Otro comentario:
En la misma carpeta, pero ahora en MPASM SUITE/TEMPLATE/CODE vienen
"formatos" para hacer programas, utilízalos para que tu código se vea mejor (presentación).
Empecé haciendo un programilla para uno de mis proyectillos que su nucleo era el 16f84a, el problema es el de siempre... ahora que estoy le pongo... y le pongo... y... me quedo sin memoria. El problema es que esta hecho en ensamblador, y me lo he currado... (dentro de mi poco nivel).
Extraño que te acabes la memoria de ese micro, sería la tercera vez que observo que se acaba la memoria de programa en ensamblador de un µicro.
No se qué signifique
currado pero supongo ha de ser algo como acabado o vencido