El problema NO está en el oscilador, sino en que varios registros, como ANCONX a pesar de ser parte de los SFR no forman parte de ACCESS BANK, por esa razón, para inicializar los registros del ADC necesitas estar en el banco 0x0F00 de la RAM interna del PIC...
;****************************************************************************************************************
; Configuración de otros módulos que interfieren con el funcionamiento de los puertos...
;****************************************************************************************************************
movlb d'15' ; Algunos registros (SFR) NO forman parte de ACCESS, aunque estén en el banco #15...
;****************************************************************************************************************
; Comparadores: OFF
;****************************************************************************************************************
movlw d'3' ; Deshabilito los comparadores...
movwf CM1CON ; Comparator disabled, Internally connected, output not inverted, iterrupt disabled,
movwf CM2CON ; Non-inverting input connects to the internal CVREF voltaje
movwf CM3CON ; Inverting input of comparator connects to VBG
;****************************************************************************************************************
; Entradas analógicas...
;****************************************************************************************************************
movlw b'00001010' ; AN1 y AN3 entradas analógicas, las demas entradas serán digitales...
movwf ANCON0 ; Las demas serán entradas digitales...
clrf ANCON1 ; Entradas digitales (AN08 a AN15)
movlw b'00001010' ; AN19 [3] (RG1) => Analog, AN17 [1] (RG3) => Analog
movwf ANCON2 ; Entradas digitales (AN16 a AN23)
;****************************************************************************************************************
clrf BSR ; Al banco 0...
movlw b'11000000' ; Configuro las fuentes de referencia del módulo ADC
movwf ADCON1 ; TRIGSEL [7:6] = RTCC, REF_P [5:4] = AVDD, REF_N [3] AVSS, CHSN [2:0] = Chn 0 (GND)
movlw b'00001110' ; Configuro el modo en el que estará trabajando el ADC... (2 TAD)
movwf ADCON2 ; Justificado a la izquierda (ADRESH => 8 MSB), X TAD, FOSC / 64
bcf IPR1,ADIP ; La interrupción del ADC será de baja prioridad...
Como podrás notar, se hace el cambio de banco usando la instrucción MOVLB d'15'
En este otro ejemplo podrás ver como usar el reloj interno del PIC, a 16 mhz, con PLL para obtener 64 Mhz...
movlw b'11110000' ; IDLE on Sleep, 16 mhz clock
movwf OSCCON ; Oscon calibrado, ahora...
btfss OSCCON,HFIOFS ; El oscilador se ha estabilizado?
bra $-2 ; aun no, esperando...
nop ; NOP para terminar de estabilizar el reloj
btfss RCON,POR ; La fuente de alimentación acaba de ser activada?
call delay_10ms ; Si, haré un delay de 40 ms en lo que se estabiliza la fuente de alimentación...
; movlw b'01000000' ; PLL Enabled, This PIC clock = 64 Mhz
movwf OSCTUNE ; Se necesito un valor de +5 para calibrar el reloj a 16 MHZ... (Para este PIC)
Para que funcione bien, checa los settings que uso:
LIST P=PIC18F67K22 ; list directive to define processor
#INCLUDE <P18F67K22.INC> ; processor specific variable definitions
errorlevel -202 ; suppress message 202 from list file
errorlevel -311 ; suppress message 311 from list file
;****************************************************************************************************************
;Configuration bits
;****************************************************************************************************************
CONFIG RETEN = OFF, INTOSCSEL = LOW, SOSCSEL = DIG, XINST = OFF
CONFIG FOSC = INTIO1, PLLCFG = ON, FCMEN = OFF, IESO = OFF
CONFIG PWRTEN = ON, BOREN = OFF, BORV = 3, BORPWR = LOW
CONFIG WDTEN = OFF, WDTPS = 1, RTCOSC = SOSCREF
CONFIG CCP2MX = PORTC, MSSPMSK = MSK7, MCLRE = OFF, STVREN = ON
CONFIG BBSIZ = BB1K, DEBUG = OFF, CP0 = ON, CP1 = ON, CP2 = ON
CONFIG CP3 = ON, CP4 = ON, CP5 = ON, CP6 = ON
CONFIG CP7 = ON, CPB = ON, CPD = ON, WRT0 = OFF, WRT1 = OFF
CONFIG WRT2 = OFF, WRT3 = OFF, WRT4 = OFF, WRT5 = OFF, WRT6 = OFF
CONFIG WRT7 = OFF, WRTB = OFF, WRTC = ON, WRTD = OFF
CONFIG EBRT0 = OFF, EBRT1 = OFF, EBRT2 = OFF, EBRT3 = OFF
CONFIG EBRT4 = OFF, EBRT5 = OFF, EBRT6 = OFF, EBRT7 = OFF
CONFIG EBRTB = OFF