#include <16f877a.h>
#device adc=10
#fuses hs,nowdt
#use delay(clock=20M)
#define lcd_rs_pin pin_b0
#define lcd_rw_pin pin_b1
#define lcd_enable_pin pin_b2
#define lcd_data4 pin_b4
#define lcd_data5 pin_b5
#define lcd_data6 pin_b6
#define lcd_data7 pin_b7
#include <lcd.c>


void main()
{
   int16 left;
   float l;
   int16 right;
   float r;
   int16 m;
   float mpx;
   int16 dif;
   setup_adc_ports(ALL_ANALOG);
   setup_adc(adc_clock_internal);
   lcd_init();
   //Simbolo para la representacion de nivel
   lcd_send_byte(0,0x40);  //se escribe en la cgram(0), en la direccion 0x40
   lcd_send_byte(1,0x15);  //10101
   lcd_send_byte(1,0x15);  //10101
   lcd_send_byte(1,0x15);  //10101
   lcd_send_byte(1,0x15);  //10101
   lcd_send_byte(1,0x15);  //10101
   lcd_send_byte(1,0x15);  //10101
   lcd_send_byte(1,0x15);  //10101
   lcd_send_byte(1,0x15);  //10101
   
   
   
   while(true)
   {
      set_adc_channel(0);
      delay_us(20);
      lcd_gotoxy(1,1);
      left=read_adc();
      l=left;
      delay_us(50);
      // tiempo de esperar para cambiar de canal
      set_adc_channel(1);
      delay_us(50);
      right=read_adc();
      r=right;
      delay_us(50);
      // tiempo de espera para cambiar canal 
      set_adc_channel(2);
      delay_us(50);
      m=read_adc();
      mpx=m;
      delay_us(50);
      printf(lcd_putc,"L");
      lcd_gotoxy(1,2);
      printf(lcd_putc,"R");
      lcd_gotoxy(8,1);
      printf(lcd_putc,"L");
      lcd_gotoxy(16,1);
      printf(lcd_putc,"R");
      lcd_gotoxy(8,2);
      printf(lcd_putc,"MPX");
      dif=l-r;
      if (l>0 && l<=59)          // 1 barra
         {
         lcd_gotoxy(2,1);
         lcd_send_byte(1,0);
         }
      if(l>=60 && l<=117)    // 2 barras
         {
         lcd_gotoxy(2,1);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         }
      if(l>=118 && l<=177)   // 3 barras
         {
         lcd_gotoxy(2,1);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         }
      if(l>=178 && l<=236)  // 4 barras
         {
         lcd_gotoxy(2,1);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         }
      if(l>=237 && l<=296)  // 5 barras
         {
         lcd_gotoxy(2,1);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         }
      if(l>=297 && l<=355)  // 6 barras
         {
         lcd_gotoxy(2,1);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         }
      if (r>0 && r<=59)          // 1 barra
         {
         lcd_gotoxy(2,2);
         lcd_send_byte(1,0);
         }
      if(r>=60 && r<=117)    // 2 barras
         {
         lcd_gotoxy(2,2);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         }
      if(r>=118 && r<=177)   // 3 barras
         {
         lcd_gotoxy(2,2);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         }
      if(r>=178 && r<=236)  // 4 barras
         {
         lcd_gotoxy(2,2);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         }
      if(r>=237 && r<=296)  // 5 barras
         {
         lcd_gotoxy(2,2);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         }
      if(r>=297 && r<=355)  // 6 barras
         {
         lcd_gotoxy(2,2);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         lcd_send_byte(1,0);
         }
         
       
       if (l==r)           // comparacion si son iguales
       {
       lcd_gotoxy(12,1);
       lcd_send_byte(1,0);    // barra en el medio, son iguales
       }
       else
       {
         if (l>r)
            {
               if ((l<=355 && l>=297) | (l<=178 && l>=120))
               {
               lcd_gotoxy(12,1);
               lcd_send_byte(1,0);
               lcd_send_byte(1,0);
               lcd_send_byte(1,0);
               lcd_send_byte(1,0);
               }
               if ((l<=296 && l>=238) | (l<=119 && l>=61))
               {
               lcd_gotoxy(12,1);
               lcd_send_byte(1,0);
               lcd_send_byte(1,0);
               }
               if ((l<=237 && l>=178) | (l<=60 && l>0))
               {
               lcd_gotoxy(12,1);
               lcd_send_byte(1,0);
               }
            }
          else if (r>l)
            {
               if ((r<=355 && r>=297) | (r<=178 && r>=120))
               {
               lcd_gotoxy(9,1);
               lcd_send_byte(1,0);
               lcd_send_byte(1,0);
               lcd_send_byte(1,0);
               lcd_send_byte(1,0);
               }
               if ((r<=296 && r>=238) | (r<=119 && r>=61))
               {
               lcd_gotoxy(10,1);
               lcd_send_byte(1,0);
               lcd_send_byte(1,0);
               lcd_send_byte(1,0);
               }
               if ((r<=237 && l>=178) | (r<=60 && r>0))
               {
               lcd_gotoxy(12,1);
               lcd_send_byte(1,0);
               lcd_send_byte(1,0);
            }
       }
   }
   }
}