Adc pic16f876a no lee el puerto

Buenas tardes comunidad, tengo un sistema que lee los valores de 3 sensores que están en el puerto A del pic 16f876a, cuando intento leer el canal 2 del puerto, hago la conversión en el programa y al visualizarlo en la LCD no obtengo el valor q en realidad deseo tener.

El programa es es siguiente:

Código:
#include <16F876A.h>
#device adc=10
#use delay(clock=4000000)
#fuses XT,NOWDT
#define use_portb_lcd(true)
#include <lcd.c>

#define fast_io(a);
#define fast_io(c);

#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7, bits=8)

int recibido;
int16 adc1,adc2,adc3;
float volt1,volt2,volt3,kelvin,fahrenheit; 
int envio2,envio3;

#int_RDA
RDA_isr()
{
   recibido=getc();
}

void main()
{

   setup_adc_ports(ALL_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   
   lcd_init();
   port_b_pullups(true);
   
   lcd_putc("\f");
   lcd_gotoxy(1,1);
   printf(lcd_putc,"HAROLD AGUDELO\nGLORIA VILLEGAS");
   delay_ms(3000);
      
   while(1){      
               
      set_adc_channel(0);
      delay_us(20);
      adc1=read_adc();
      volt1=(adc1*5.0)/(1023.0)*100;
      kelvin=(volt1+273);
      fahrenheit=(volt1*1.8)+32;
      lcd_putc("\f");
      lcd_gotoxy(3,1);
      printf(lcd_putc,"TEMPERATURA");
      lcd_gotoxy(1,2);
      printf(lcd_putc,"%1.0gC",volt1);
      lcd_gotoxy(7,2);
      printf(lcd_putc,"%1.0gK",kelvin);
      lcd_gotoxy(12,2);
      printf(lcd_putc,"%1.0gF",fahrenheit);
      
      //envio1=volt1;
      //putc(envio1);
      //delay_ms(100);
      
      delay_ms(4000);
      lcd_putc("\f");
      lcd_gotoxy(1,1);
      printf(lcd_putc,"HUMEDAD RELATIVA");
            
      set_adc_channel(1);
      delay_us(20);
      adc2=read_adc();
      volt2=(adc2*5.0)/(1023.0)*20.02;      
      lcd_gotoxy(6,2);
      printf(lcd_putc,"%2.2g",volt2);
      lcd_send_byte(1,0x25);//envio el simbolo %
      
      envio2=volt2;
      putc(envio2);
      delay_ms(100);
      
      delay_ms(4000);
      lcd_putc("\f");
      lcd_gotoxy(3,1);
      printf(lcd_putc,"LUZ AMBIENTE");
            
      set_adc_channel(2);
      delay_us(20);
      adc3=read_adc();
      volt3=(adc3*5.0)/(1023.0)*200;
      lcd_gotoxy(6,2);
      printf(lcd_putc,"%2.2g Lx",volt3);
            
      envio3=volt3;
      putc(envio3);
      delay_ms(100);
      
      delay_ms(4000);
     
   }

   // TODO: USER CODE!!

}

Gracias por su colaboración
 
Última edición por un moderador:
Atrás
Arriba