Es posible que el problema esté en que está activado el fuse LVP del 16F877A ...
En su Datasheet podemos leer en la sección dedicada al PORTB:
Three pins of PORTB are multiplexed with the Low Voltage Programming function: RB3/PGM, RB6/PGC and RB7/PGD.
Tres pines del PORTB están multiplexados con la función de Programación a Bajo Voltaje: RB3/PGM, RB6/PGC and RB7/PGD.
Y en la sección de Special Features:
The LVP bit defaults to on (‘1’) from the factory. If Low Voltage Programming mode is not used, the LVP bit can be programmed to a '0' and RB3/PGM becomes a digital I/O pin.
El bit LVP esta activado por defecto ('1') de fábrica. Si el modo de Programación a Bajo Voltaje no es usado el bit LVP puede ser programado a '0' y entonces RB3/PGM actuará como un pin digital Entrada/Salida.