Buenos dias a todos. Tengo un problema con el ADC del pic16f877a.
-En proteus cada canal es independiente del otro y por tanto salen los valores binarios por los respectivos puertos.
CANAL 0 --> El valor convertido lo mando al PORTB
CANAL 1 --> El valor convertido lo mando al PORTC
-En circuito montado cuando vario un potenciometro afecta al otro canal.
por ejemplo si pongo el canal0 a GND y el canal1 a 5v salida por el portc es F0h. Eso esta mal ya que debe salir FFh.
Aqui les dejo mi assembler y mi simulacion en proteus. Gracias de antemano.
;****************************
; BY JOEL HUAMAN HUARCAYA
;****************************
;****************************************************************
; PROGRAMA DE CONVIERTE LA SEÑAL ANALOGA DEL CANAL 0 Y CANAL 1
; Y MUESTRA LOS VALORES POR EL PORTB Y PORTC
;****************************************************************
__CONFIG _WDT_OFF&_PWRTE_ON&_HS_OSC&_LVP_OFF&_CP_OFF
LIST P=16F877A
INCLUDE <P16F877A.INC>
INCLUDE <MACROPIC.INC>
CBLOCK 0x20
VOLT
CORRIENTE
ENDC
ORG 0
;--------CONFIGURANDO CANALES DE --------------------------------------------
BANCO 1
clrf TRISC
clrf TRISB
MOV TRISA,0XFF
bsf TRISE,2
BANCO 0
;--------BORRANDO REGISTROS-------------------------------------------------
clrf PORTB
clrf PORTC
call INICIO_ADC ;inicia convertidor
infinito
CANAL 0 ;se selecciona el canal 0
bsf ADCON0,0 ;enciende el convertidor
call muestra_ADC_8 ;en w se obtiene el valor de conversion
movwf VOLT
movwf PORTB
call ret50ms
CANAL 1 ;selecciona el canal 1
bsf ADCON0,0
call muestra_ADC_8 ;en w se obtiene el valor de conversion
movwf CORRIENTE
movwf PORTC
call ret50ms
goto infinito
INCLUDE <conv_ad.ASM>
INCLUDE <RETARDO.ASM>
END