Parece que no tiene un oscilador interno capaz de generar su propio reloj, pero si verifica la página 146 de PIC16F87XA muestra cómo se puede usar un oscilador RC si el costo en lugar del número de pines de E / S es un problema. La sección del oscilador PIC Mid-range Family Guide incluye las siguientes recomendaciones:
Para valores REXT inferiores a 2.2kΩ, la operación del oscilador puede volverse inestable o detenerse
completamente. Para valores REXT muy altos (por ejemplo, 1 MΩ), el oscilador se vuelve sensible al ruido, la humedad y las fugas. Por lo tanto, recomendamos mantener REXT entre 3 kΩ y 100 kΩ.
Aunque el oscilador funcionará sin un condensador externo (CEXT = 0 pF), recomendamos usar valores superiores a 20 pF por razones de ruido y estabilidad. Con una capacitancia externa nula o pequeña, la frecuencia de oscilación puede variar enormemente debido a los cambios en las capacitancias externas, como la capacitancia de traza de PCB y la capacitancia de la trama del cable del paquete.
Si bien el diseño se basa en un oscilador de relajación, encontré varias referencias a Microchip que no se comprometen con una fórmula de determinación de tiempo exacta. Sin embargo, en la página 200 de la hoja de datos encontrará un gráfico de frecuencias típicas para varias combinaciones de resistencia / condensador. Si está funcionando a 5 V, parece que 20pF y una resistencia de 5,1 kΩ debería estar cerca de la marca.
Supongo que está utilizando un chip que ya tiene a mano, pero los dispositivos más modernos incluyen opciones de reloj interno que son mucho más precisas y dejan los pines de E / S disponibles para otros usos. Si realmente no necesita tanta velocidad, también podría considerar su funcionamiento como una velocidad de reloj más baja, ya que 4MHz es la velocidad más alta recomendada y las tolerancias de los componentes pueden sobrepasar ese límite.