Eso no es un error, es una advertencia (un warning). Lo que te quiere decir es que no has tomado el valor de calibración de fábrica y colocado en el registro OSCCAL.
Ese microcontrolador en la última dirección de programa, contiene un MOVLW XX (donde XX es el valor de calibración para el oscilador interno). Entonces cada vez que reseteas el microcontrolador, el contador de porgrama se va a esa última direcció y carga el registro W con el valor de calibració, entonces lo que tienes que hacer es mover ese valor de W al registro OSCCAL para que este funcione a la frecuencia correcta, de otro modo el oscilador interno estará operanado en cualquier otra frecuencia, menos la que has definido (4 u 8 MHz). No me he puesto a analizar el codigo generado en C, pero debería generarlo automáticamente cuando defines el oscilador interno.
Una cosa que debes tener en cuenta es que esa instrucción al final de la memoria de programa (MOVLW XX), se puede borrar cuando aplicas un ERASE, y perderás ese valor, de ahí que es importante que leas el microcontrolador la primerísima vez, antes de descargar el archivo hex, para que lo tengas anotando. Ese valor XX nunca es igual en dos PIC16F506, es decir, ese valor XX es diferente para cada PIC.
Si el código ya te está funcionando, entonces lo que está pasando es que el T0CKI del registro OPTION está afectando la operación del puerto RC5, y por eso tienes que poner ese bit del T0CKI en 0 para que te funcione correctamente el pin del puerto RC5.
En ensamblador se hace así:
MOVLW 0DFh
OPTION
El compilador permite agregar instrucciones en ensamblador.
elreypic.
elreypic.