PIC 16F1503 - cambiar la frecuencia del oscilador interno

Mis bits de configuración son los siguientes:

#include <P16F1503.inc> 
__CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BOREN_OFF & _CLKOUTEN_OFF
__CONFIG _CONFIG2, _WRT_OFF & _STVREN_OFF & _LVP_OFF

La parte relevante del código que estoy usando para cambiar la frecuencia es esta:

banksel OSCCON
movlw   b'01101000'     ; Int. osc. 4 MHz
movwf   OSCCON
btfss   OSCSTAT, HFIOFR ; Is internal oscillator running?
goto    $-1             ; No, loop one line back...
btfss   OSCSTAT, HFIOFS ; Is internal oscillator stable?
goto    $-1             ; No, loop one line back...

Lamentablemente, mi herramienta de depuración es solo un simulador. El problema es que la ejecución nunca llega al punto de interrupción en la línea 192:

ingrese la descripción de la imagen aquí

Entonces, ¿esto significa que el oscilador interno nunca se estabiliza?

Estoy usando:

  • IDE: MPLAB X IDE v1.20
  • Compilador: MPASM v5.45

¿Qué estoy haciendo mal?

Puede ser que el simulador no simule el bit HFIOFS. Hay un par de cosas que no hace.
Genial... ¡Eso tiene sentido!

Respuestas (1)

Si está utilizando el simulador, debe comentar esas dos pruebas para que el oscilador funcione o esté estable. Como no tiene ningún hardware en ejecución, las pruebas siempre fallarán. Deberían estar bien si usa un depurador como PICkit 2/3 o ICD 3.

Entonces, ¿los bits de configuración y el código que publiqué parecen estar bien?
Se ve bien, usé algo así con el 16F1503.