Hola chemate2000!
Por lo que dices, si el programa te funciona a veces, y otras veces no te funciona, hay que descartar problemas eléctricos de contáctos defectuosos o malas soldaduras. Tampoco parece probable que estén mal configurados los fuses del micro. En tema del oscilador interno de los pics, por red RC, es que efectivamente son muy inestables, y encima en el caso de este pic en concreto no existe un parámetro de calibración del oscilador de forma interna, por código. Desde luego prueba, si es posible, a sustiruir el oscilador interno por un cristal de cuarzo, es sencillo de incorporar y tendrás más estabilidad en los ciclos. Ya nos contarás.
Por otro lado quiero preguntarte una cosa: ¿has puesto un circuito de reset externo? te lo digo porque a veces, aunque tengas habilitado el fuse de "power on reset", hay micros que tardan mucho en arrancar (a veces ni arrancan, los capullos), y esto se soluciona poniendo un reset externo que aumente el pulso del reset.
Ah! y otra cosa que también puede estar pasándote, chemate, mira a ver qué gestión haces con el perro guardian, porque si lo tienes activado y luego no te encargas de liberarlo (clrwdt, en ensamblador), el micro hace cosas raras, incluso puede no arrancar o resetearse cuando le da la gana.
Bueno, ya nos dirás, vale?