
       
         #include <18F4550.h>      
         #device ADC=10
         #priority int_ad 
         #fuses xt,MCLR,NOSTVREN,NOLVP,NODEBUG,PROTECT,NOSTVREN,NOCPB,NOWRT,NOWRTC
         #use delay(clock=4000000)                                                 // frecuencia CPU (Hz)
         #include "lcd4x20.c"
         
         #byte porta = 0xF80                                         // Dirección del puerto A para la familia 18Fxx5x.
         #byte portb = 0xF81                                         
         #byte portc = 0xf82
         #byte portd = 0xf83
         #byte porte = 0xf84
         
         float ADC_Values[CANT_CANALES];
         const int8 ADC_Channels[CANT_CANALES] = {0,1,2,3,5};
         const float ADC_Coef[CANT_CANALES] = {0.48875855327468230694037145650049,0.48875855327468230694037145650049,0.48875855327468230694037145650049,0.48875855327468230694037145650049,0.06109481915933528836754643206256};
 
 
          void filtro_promediado(float * ADC_Val, const int8 * ADC_Chan, const float * ADC_Cof, int8 Asize)
         {
 
         int8 i,j;
         for(i=0; i < Asize ; i++)
         {
            set_adc_channel(ADC_Chan[i]);
            delay_us(20);
            for(j=0; j<MUESTRAS;j++) { 
                  ADC_Val[i] = read_adc(); 
            }
            ADC_Val[i] /= MUESTRAS;
            ADC_Val[i] *= ADC_Cof[i];
         }
         }
         
         void main(void)
         {
         setup_adc_ports(ALL_ANALOG);
         setup_adc(ADC_CLOCK_INTERNAL);
         enable_interrupts(INT_AD);                                  // Habilitación Interrupción AD
         enable_interrupts(global);                                  // Habilitación Interrupción global
         Read_ADC(ADC_START_ONLY);                                  // Iniciamos el AD por interrupcion
         lcd_init();

         while(true)   
         {
         
         
         }                                   
         }   


