que tal amigos, tengo un problema con un micro 16F877, no me esta funcionando el conversos A/D aca les dejo el codigo del programa para ver si detectan algun error:
#include <16f877.h>
#device ADC=10 //10 bits en el ADC
#use delay (clock=20000000) //Modo del oscilador
#fuses XT,NOWDT,NOPROTECT,BROWNOUT,NOLVP,PUT //Modo del oscilador
setup_adc_ports(RA0_RA1_RA2_RA3_RA4); // A0 A1 A2 A3 A4
setup_adc(adc_clock_internal);
#include <lcd.c>
void main()
{
// Variables del main
unsigned long temp;
float celcius;
unsigned long bat;
float volt;
lcd_init(); // mandatory
set_tris_a (0b11111111); //Ra7-Ra6-Ra5-Ra4-Ra3-Ra2-Ra1-Ra0
set_tris_b (0b00000000); //Rb7-Rb6-Rb5-Rb4-Rb3-Rb2-Rb1-Rb0
while(TRUE)
{
//Definiciones del hardware
lcd_putc("inicializando..."
;
delay_ms(2000);
medicion:
set_adc_channel(0); //canal AN0 para temperatura
delay_ms(50);
temp=read_adc(); // mide la temperatura
celcius=temp/1333.5; //si uso el ao es 1333.3
delay_ms(200);
set_adc_channel(3); //canal AN3 para bateria
delay_ms(50);
bat=read_adc(); // mide el voltage de la bateria
volt=bat/4400.05;
lcd_gotoxy(1,1);
printf(lcd_putc,"Temp in %2.1fc Volt %2.1fv",celcius,volt);
goto medicion;
}
}