Codigo:
#include <16F876.h>
#device adc=10 // Conversión con 10 bits
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, WRT
#use delay (clock=4000000)
#include <LCD.c>
void main( void )
{
long valor;
float const resoluc= 5.0/1024.0; // Conversión es con 10 bits
float voltios;
int n;
float const tablavoltios[32]={1.40,1.45,1.50,1.55,1.60,1.65,1.70,1.75,1.80,1.85,1.90,1.95,
2.00,2.05,2.10,2.15,2.20,2.25,2.30,2.35,2.40,2.45,2.50,2.55,
2.60,2.65,2.70,2.75,2.80,2.85,2.90};
float const tablaPetrol[32]={10.08,10.23,10.38,10.53,10.69,10.86,11.03,11.20,11.38,11.57,
11.76,11.96,12.17,12.38,12.60,12.83,13.07,13.31,13.57,13.84,
14.11,14.40,14.70,15.25,15.84,16.48,17.18,17.93,18.76,19.66,
20.66};
setup_adc_ports ( RA0_ANALOG ); // Entrada analógica por RA0
setup_adc ( ADC_CLOCK_INTERNAL ); // Reloj interno para el ADC
set_adc_channel ( 0 ); // Canal 0 para convertir
lcd_init();
while ( 1 )
{
valor = read_adc();
lcd_gotoxy(1,1);
voltios= valor * resoluc;
for(n=0;n<32;n++)
{
if(voltios>=tablavoltios[n]&&voltios<tablavoltios[n+1])
{
lcd_gotoxy(1,1);
printf ( lcd_putc, "Voltios = %1.2f",voltios);
lcd_gotoxy(1,2);
printf ( lcd_putc, "Petrol = %1.2f", tablaPetrol[n] );
}
}
delay_ms(200); // Convierte cada 200ms
}
}