#include <18F8722.h>
#device ADC=10
#device *=16
#FUSES NOWDT //No Watch Dog Timer
#FUSES MCLR //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOLVP //No low voltage programing, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
float Volt_AC_F1,Volt_AC_F2,volt_DC_12,valor_lm35,temp_lm35,ADC_CTE_DC_12,CTE_DC_12;
unsigned int16 ADC_F1,ADC_F2,ADC_CD_12;
int16 filtro_medida_movil(void)
{
int j=0,k=0,x,t,w;
int Muestras = 20;
set_adc_channel(0);
for(j=0; j<Muestras;j++)
{ ADC_F1+= read_adc(); delay_us(20); }
ADC_F1 /= Muestras+1;
Volt_AC_F1 = ADC_F1*0.48875855327468230694037145650049;
set_adc_channel(1);
for(k=0; k<Muestras;k++)
{ ADC_F2+= read_adc(); delay_us(20); }
ADC_F2 /= Muestras+1;
Volt_AC_F2 = ADC_F2*0.48875855327468230694037145650049;
set_adc_channel(2);
for(x=0; x<Muestras;x++)
{ ADC_CD_12+= read_adc(); delay_us(20); }
ADC_CD_12 /= Muestras+1;
volt_DC_12 = ADC_CD_12*0.04887585532746823069403714565005;
set_adc_channel(3);
for(t=0; t<Muestras;t++)
{ valor_lm35+= read_adc(); delay_us(20); }
valor_lm35 /= Muestras+1;
temp_lm35 = valor_lm35*0.48875855327468230694037145650049;
set_adc_channel(5);
for(w=0; w<Muestras;w++)
{ ADC_CTE_DC_12+= read_adc(); delay_us(20); }
ADC_CTE_DC_12 /= Muestras+1;
CTE_DC_12 = ADC_CTE_DC_12*0.06109481915933528836754643206256;
return((int16)(Volt_AC_F2,Volt_AC_F1,volt_DC_12,temp_lm35,CTE_DC_12));
}