//Convierte señal analógica en RA0
//voltaje de referencia 5V
// Santiago Villafuerte
// 13oct2006
#include "18f452.h"
#device adc=10 //Usa resolución de 10 bits
#use delay(clock=4000000)
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect,nodebug
#use rs232(baud=9600, xmit=PIN_c6, rcv=PIN_c7)
void main (void)
{
int16 medicion; //directo del adc
float vopto; //conversión de voltajes
set_tris_a (0xff); //a es todo entrada
setup_adc (adc_clock_div_32); //Enciende ADC
setup_adc_ports (RA0_RA1_RA3_ANALOG); //REF=VDD
set_adc_channel (0); //Elige canal a medir RA0
while(1)
{
delay_ms(1000);
medicion=read_adc(); //Hace conversión AD
delay_us(20);
vopto=(float)(medicion*5)/1024; //convierte de binario a voltaje
printf("Voltaje medido: %1.4f \n",vopto
); //Saca texto por RS232 }
}