La respuesta es muy sencilla:
Al no tener conectada ningun tipo de resistencia a la entrada del pic, esta se queda en un nivel que está flotante y por tanto por cuestiones de ruido, interferencias, etc puede existir culaquier valor ( que ademas puede ser muy cambiante por momentos) a la entrada del pic. Por este motivo es conveniente siempre fijar las entadas a un valor determinado, bien como lo has conexionado tu o vien al reves: la resistencia a + y cuando cierras el pulsador que el pic lea un 0V. Esto es cuestion de la progamacion que hays o vayas a realizar.
HAy algunos pics(esto se ve en los datsheet) que al tener varios puertos A, B, C........ en concreto uno de ellos el B tiene internamente ya unas resistencias unidas a+5V pero para que realicen su funcion hay que habilitarlas por software.
Otra cosa que es importante, en tu programa no era el caso pues tenias retados de 0,5sg o mas, que es conveniente bien colocar un retardo por software o bien por hardware( condensador) para eliminar el efecto de rebote que siepre se producen en los contactos de cualquier elemento mecanico vease: pulsador, interruptor, rele,...... Este efecto rebote que el pic pueda leer un estado que no sea el mas conveniente ya que su velocidad de instruccion es de 1microsegundo, por lo tanto puede leer varias veces el estado del pulsador antes de que el contacto sea haya estabilizado y provoque que tu programa funcione erroneamente. Un valor aceptable seria de unos 20msg.
Fermin