Que tal DominusDRR,
En realidad es un valor fijo. en realidad es una instrucción la que se coloca en la última dirección de la memoria de programa.
Esa instrucción es un RETLW XX, en donde RETLW es el valor 34H y los dos últimos dígitos con el valor de la calibración para ese microcontrolador en específico. Puedes ver la hoja de datos para una mejor comprensión de lo que digo.
Es importante ese valor de los contrario, cuando el micro arranca, su oscilador interno tomará el valor del RESET para el registro OSCCAL y eso provocará que no sepas cual es la frecuncia de operación del microcontrolador, y si tienes un código basado en el tiempo del oscilador interno, entonces tendrás problemas. De ahí la razón de que debasrealizar la siguiente rutina al mero inicio de tu código:
BSF STATUS, RP0 ;Bank 1
CALL 3FFh ;Get the cal value
MOVWF OSCCAL ;Calibrate
BCF STATUS, RP0 ;Bank 0
Esto está claramente definido en la página 58 del datasheet.
Si bien el oscilador no es preciso, pero al menos en temperatura ambiente sabrías que está operando con una tolerancia del 1%.
elreypic.