pon el esquematico real y el codigo y ahi si vemos que podria estar pasando
la imagen del esquematico la adjunte y
el codigo es en c y es el siguiente:
////////////////////////////////////////////////////////
// //
// //
// //
////////////////////////////////////////////////////////
#include<16F877A.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#include<lcd.c>
#use fast_io(A)
/////////////////////////////////////////////////////////////////////
int16 valor, Voltaje, K, Vdif;
int8 dig1,dig2,dig3,aux;
/////////////////////////////////////////////////////////////////////
void iniConversorAD(){
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0);
set_tris_A(0xFF);
set_adc_channel(0);
delay_us(10);
}
void IniPantallaLCD(){ //se visualiza la pantlla inicial con vp vrms y vdc
lcd_init();
lcd_putc("\f");
lcd_putc(" MEDICIONES");
lcd_putc("\n INDUSTRIALES");
delay_ms(2000);
lcd_putc("\f");
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("Inicializando:");
lcd_gotoxy(1,2);
lcd_putc("...........");
delay_ms(1000);
lcd_putc("\f");
//visualizacion del lcd
}
void Descompone(int16 Dato){ //Convertir dato a 3 digitos
Dig1= Dato/100;
aux = Dato%100;
Dig2= aux/10;
Dig3= aux%10;
Dig1+= '0'; // Suma cero ascci
Dig2+= '0'; // para correcta visualizacion
Dig3+= '0'; // en el lcd
}
void ProcesarSenal(){ //procesar la señal lectura que tiene puerto a
int32 K32;
K= read_adc();
delay_ms(10);
K32=K;
Voltaje=14640*K32/10000;
}
void vdiferen(){
vdif=Voltaje;
Descompone(vdif);
}
void Visualiza(){ //Rutina para la visualizacion
//en el. Cada voltaje en la
//respectiva posicion
vdiferen();
lcd_gotoxy(1,1);
lcd_putc("V. DIFERENCIAL:");
lcd_gotoxy(4,2);
lcd_putc(Dig1);
lcd_putc(".");
lcd_putc(Dig2);
lcd_putc(Dig3);
}
void main(){
iniconversorAD();
IniPantallaLCD();
while(true){
delay_ms(50);
Procesarsenal();
Visualiza();
delay_ms(1000);
}
}