Good afternoon again,
When try to simulate with Proteus at 4MHz with the pic16F877, i get the following error:
[PIC16 ADC] PC=0x000E. ADC conversion clock period [5e-07] is possibly invalid for device clock frecuency
But if i change value for clock at proteus to 1MHz, the error dissapear, I think it should works at 4MHz also.
Code:
Capdat
banksel ADCON0
movlw b'01000001' ; fosc 8, RA0 analogico
movwf ADCON0
; Incializacion convertidor AD. Justificado a la izquierda, todos los PORTA como entrada analogica
banksel ADCON1
movlw b'00001110' ;Justificado a la izquierda, canal 0, modulo habilitado
movwf ADCON1
call Demora_20us ; Esperamos el tiempo de adquisicion necesario
; Comenzamos la conversion AD
banksel ADCON0
bsf ADCON0,2
; Esperamos que acabe la conversion
espera
btfsc ADCON0,2
goto espera
; Guardamos el valor despues de la conversion en la variable ls_adc.
banksel ADRESH
movf ADRESH,0 ; Despues de finalizar la conversion AD el valor en ADRESH se guarda en el Reg W
; y el valor en ADRESL se omite, esa precision no es necesaria.
banksel ls_adc
movwf ls_adc ; valor en W Reg. se escribe en la variable ls_adc
RETURN
Demora_20us
movlw 0x05
movwf Contador ; iniciamos contador
Repeticion
decfsz Contador,1 ; Decrementa Contador en 1
goto Repeticion ; Si no es cero repetimos el ciclo
RETURN
Can anybody help me?
Thank you.
When try to simulate with Proteus at 4MHz with the pic16F877, i get the following error:
[PIC16 ADC] PC=0x000E. ADC conversion clock period [5e-07] is possibly invalid for device clock frecuency
But if i change value for clock at proteus to 1MHz, the error dissapear, I think it should works at 4MHz also.
Code:
Capdat
banksel ADCON0
movlw b'01000001' ; fosc 8, RA0 analogico
movwf ADCON0
; Incializacion convertidor AD. Justificado a la izquierda, todos los PORTA como entrada analogica
banksel ADCON1
movlw b'00001110' ;Justificado a la izquierda, canal 0, modulo habilitado
movwf ADCON1
call Demora_20us ; Esperamos el tiempo de adquisicion necesario
; Comenzamos la conversion AD
banksel ADCON0
bsf ADCON0,2
; Esperamos que acabe la conversion
espera
btfsc ADCON0,2
goto espera
; Guardamos el valor despues de la conversion en la variable ls_adc.
banksel ADRESH
movf ADRESH,0 ; Despues de finalizar la conversion AD el valor en ADRESH se guarda en el Reg W
; y el valor en ADRESL se omite, esa precision no es necesaria.
banksel ls_adc
movwf ls_adc ; valor en W Reg. se escribe en la variable ls_adc
RETURN
Demora_20us
movlw 0x05
movwf Contador ; iniciamos contador
Repeticion
decfsz Contador,1 ; Decrementa Contador en 1
goto Repeticion ; Si no es cero repetimos el ciclo
RETURN
Can anybody help me?
Thank you.