
#include <16f876a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use standard_io(b)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

int  adc_luminosidad=0x00;
int  adc_temperatura=0x00;

int  grados_temperatura=0;

char Keypress=' ';

#int_rda
void rda_isr() {

   Keypress=0x00;
   if(kbhit()){
      Keypress=getc();
   }
}


void toma_adc_y_transmite(void){

   // Lectura del canal 0 -> AN0 LDR
   set_adc_channel(0);
   delay_ms(1);
   adc_luminosidad=read_adc();
   delay_ms(1);
   
   // Lectura del canal 1 -> AN1 LM35a
   set_adc_channel(1);
   delay_ms(1);
   adc_temperatura=read_adc();
   delay_ms(1);

   grados_temperatura = (int) ((adc_temperatura * 391) / 1000);

   printf(" L = %u T = %u (adc= %u)\n",adc_luminosidad,grados_temperatura,adc_temperatura);
}

void main() {

   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports(RA0_RA1_ANALOG_RA3_REF);
   output_low(PIN_B5);

   enable_interrupts(int_rda);
   enable_interrupts(global);


   printf("\n\ AD - LM35a - Monitor\n\n");

   do {

      if(Keypress!=0x00){

         switch(Keypress){
         
            case 't': toma_adc_y_transmite();
                      break;
            case '0': output_low(PIN_B5);
                      printf(" 0 - Calentador OFF\n");
                      break;
            case '1': output_high(PIN_B5);
                      printf(" 1 - Calentador ON\n");
                      break;
         }

         Keypress=0x00;
      }


   } while (TRUE);

}


