Hola, creo que deberías simular el programa en proteus, a mí me pasaba lo mismo con un teclado matricial, en el cual al presionar un numero el numero era mostrado a través de un display 7 segmentos, pero a veces presionaba el 5 digamos, y salía el 8, mi problema eran realmente 2, primero me faltaba cerrar un corchete, el compilador no medio aviso de esto pero cuando lo estaba revisando me di cuenta, el otro error fue que estaba creando variables con la instrucción "int" y además asignaba una dirección de memoria con "#byte=", esto me provocaba que al crear la variables con "int" estas se posicionaban en la memoria que tenía asignada con "#Byte" lo cual provocaba un caos en el funcionamiento del pic. Te recomiendo que lo simules y estés verificando el valor de las variables y tu programa línea por línea, esto te ayudara a descifrar cual es el problema, por último, si en la práctica, ya con tu circuito armado mides en la entrada que estas utilizando 5V el pic leerá 5V a menos que este dañado o algo parecido, por lo cual creo que el problema está en el programa. Mas sin embargo dices que llevas bastante programando(asi que no deberia ser problema de programacion), los circuitos básicos(si se pueden llamar asi) para las entradas de un pic son las resistencias pull-up o pull-down dependiendo de nuestras necesidades y preferencias, pero me imagino que también ya lo sabias. La verdad creo k es problema de programación pero no puedo estar seguro de nada sin más información. Hasta pronto y suerte.