primero una preguntilla ...
¿en que lenguaje has hecho el programa?
Si te funciona en el proteus y en la protoboard no, seguro que es un problema del circuito, o de la configuración del reloj.
Y un consejo cuando uses protoboard ...
Parece una chorrada, pero yo, cuando monto por primera vez un circuito en una protoboard, antes de empezar a hacer pruebas, lo primero que cargo en el pic es un programa que llamo "simple" que consiste en un sencillo bucle que va aumentando el valor del PortB con el retardo conveniente, de tal forma que con un simple LED y una resistencia puedes ir comprobando que el micro tiene actividad. Obviamente, en el pin 0 la intermitencia será por un tiempo X, el pin 1, tiempo 2x, el pin2, tiempo 4x, y así sucesivamente ...
Otra cosa que debes comprobar es si el chip que has comprado admite la velocidad que le estás poniendo. Del 16F84 hay varias versiones; 4Mhz y 10 Mhz. Si puedes, para rizar el rizo de la prueba que he puesto arriba, compra un cristal de 1Mhz y prueba con él ...
Respecto a los condensadores, aunque MICROCHIP te hace una recomendación, que ahora mismo no recuerdo cual es, en realidad, sin ellos también funciona. Yo siempre uso de 27 pF, pero creo que es un valor aproximado ya que solo valen para estabilizar al cristal de cuarzo.