********************************************************************
1er codigo
Aca muestrea graba los datos en la eeprom y cuando termina de grabar
los transmite via RS232 a la PC
********************************************************************
#include <16F877A.h>
#device adc=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#define CRYSTAL 20000000
#use delay(clock=CRYSTAL)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

#define EEPROM_SDA PIN_C4 
#define EEPROM_SCL PIN_C3 
#include <24512.c> //libreria eeprom 24LC256
#include <floatee.c>

int16 q;
float p;
int16 address=0;


void main()
{
   disable_interrupts(global);
   
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);
   delay_us(25);

    do
      {    
          q=read_adc();
          p=5.0*q/1024.0; 
            
         WRITE_FLOAT_EXT_EEPROM(address,p);        //Guarda 4 bytes del FLOAT
         
         address=address+4;
         
         if(address==1000){
         delay_ms(8);
         q=read_adc();
         p=5.0*q/1024.0; 
         WRITE_FLOAT_EXT_EEPROM(address,p);
         break;}

        delay_us(8000);   // supuestamente retraso (es la mejor manera en q me muestreo)
         
   }while(TRUE);
   
   address=0;
   while(TRUE){
               printf("\n\r%f\n ",READ_FLOAT_EXT_EEPROM(address) );
               address=address+4;
              if(address==1000) {
               printf("\n\r%f\n ",READ_FLOAT_EXT_EEPROM(address) );
               break;}
               delay_us(10);
               }
  for(;;){;}
}


**********************************************************************
2do codigo
Aca muestrea y automaticamente transmite los datos via RS232 a la PC
Aca use el modulo CCP en modo comparador
**********************************************************************

#include <16F877A.h>
#device adc=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#define CRYSTAL 20000000
#use delay(clock=CRYSTAL)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

int16 q;
float p;
   
#INT_AD
   void ad_int(){
   q=read_adc(ADC_READ_ONLY);
   ccp_2=60536;	//Para que a la hora del calculo de una toma de 1ms osea muestrea a 1Khz para detectar interferencias de 500Hz como maximo		
   }


void main()
{
   disable_interrupts(global);
   
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);
   delay_us(25);
   setup_ccp2(CCP_COMPARE_RESET_TIMER);
   setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
 
   set_timer1(0);
   ccp_2=60536; 
   enable_interrupts(INT_AD);
   enable_interrupts(global);
   
    do
       {    
        q=read_adc();
        p=5.0*q/1024.0;      
        prinft("%f",p);        
   }while(TRUE);
   
}