Hay muchas cosas que podrían estar equivocadas entre el oscilador y, sin embargo, usted midió la demora que obtuvo. Primero, haga lo mismo con el buen oscilador de 4MHz y asegúrese de obtener la medida esperada. Luego intente con la configuración del oscilador sospechoso y vea lo que obtiene.
De todos modos, no estaría usando C y alguna posible rutina de retardo sospechoso para medir la frecuencia del oscilador. De vez en cuando quiero comprobar que el oscilador esté configurado como se espera, especialmente en los PIC con PLL y divisores complicados. Lo que normalmente hago es un bucle de escritura que alterna un pin de puerto en cada iteración, algo como:
loop
btg portb, 0
bra loop
Ese bucle toma 3 ciclos de instrucción por iteración, por lo que 6 ciclos de instrucción por período de salida y 24 ciclos de oscilador por período de salida. Ahora mire la onda cuadrada con un alcance o un medidor de frecuencia y multiplique por 24 para obtener la frecuencia del oscilador PIC después de aplicar cualquier PLL y divisores.