Hola. Estoy teniendo un problema con el convertidor AD y es que luego de la primera muestra que toma, me empieza a mandar 0 de resultado. La primera muestra la toma bien, pero luego muestra 0 de resultado y por mas que reviso el ciclo no veo el porque :S. El circuito mide la temperatura con un LM35 y amplifica el voltaje resultante con un OPAMP. El muestreo se hace cada 2 segundos. Aqui les dejo el codigo del ciclo a ver si alguien sabe que esta mal. Agradeceria mucho su ayuda; llevo dias y no encuentro el problema.
Previamente estan ajustados el ADCON1 y ADCON0 con el cambio de banco respectivo. Lo coloco asi para acortar:
movlw 0x8E; AN0 unica entrada analógica, ajustado a la derecha
movwf ADCON1
movlw 0x81
movwf ADCON0
Temp bcf AUX_T,2
movlw .30 ; Para el muestreo cada 2 seg
movwf AUX_1
bsf ADCON0,2
btfss PIR1,ADIF
goto $-1
bcf PIR1,ADIF
bsf STATUS,RP0
movf ADRESL,0
bcf STATUS,RP0
movwf DatoA_L
movf ADRESH,0
movwf DatoA_H
call Multi
call Bin_BCD
return
Multi movlw .16
movwf Contad
clrf DatoD_H
clrf DatoD_L
Mul_Loop rrf DatoB_H,F
rrf DatoB_L,F
btfss STATUS,C
goto No_suma
movf DatoA_L,W
addwf DatoD_L,F
btfsc STATUS,C
incf DatoD_H,F
movf DatoA_H,W
addwf DatoD_H,F
No_suma rrf DatoD_H,F
rrf DatoD_L,F
rrf DatoC_H,F
rrf DatoC_L,F
decfsz Contad,F
goto Mul_Loop
return
Bin_BCD call ClrDig
movlw .24
movwf BitCnt
Ciclo1 rlf DatoC_L
rlf DatoC_H
rlf DatoD_L
movlw BCD1
movwf FSR
movlw .6
movwf DigCnt
Ciclo2 rlf INDF
movlw 0xF6
addwf INDF,0
skpnc
movwf INDF
incf FSR
decfsz DigCnt
goto Ciclo2
decfsz BitCnt
goto Ciclo1
return