#include <4620_ej1_7_2.h>

byte estado=0,contador=0,contador_verde=0,contador_pulsos=0; // estado = 0 significa encender y apagar cada 1 segundo.
long cuenta=300;

boolean estado_led=0;

#int_TIMER1
void  TIMER1_isr(void) // interrumpe cada 65,5mS
{

   contador_verde++;

   if (contador_verde>=5)
   {
      output_toggle (PIN_D2);
      contador_verde=0;
      
   }
}

void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF|ADC_TAD_MUL_0);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab

   while(1)
   {
   
      if (input(PIN_A0)==1)
      {
         delay_ms(100);
         
         if (input(PIN_A0)==1)
         {
            contador_pulsos=0;
            output_high (PIN_D2);
            disable_interrupts(INT_TIMER1);
            contador_pulsos++;
            
            cuenta=300;
            
            while (cuenta>0)
            {
               delay_ms(10);
               if (input(PIN_A0)==1)
               {
                  delay_ms(100);
                  if (input(PIN_A0)==1)
                  {
                     contador_pulsos++;
                     cuenta=300;    
                     //output_high (PIN_B1);
                     //delay_ms(100);
                     //output_low (PIN_B1);
                     delay_ms(100);
                  }

               }
               
               cuenta--;
                        
            }
            
                        
            while (contador_pulsos>0)
            {
               output_high (PIN_B0);
               delay_ms(500);
               output_low (PIN_B0);
               delay_ms(500);
               contador_pulsos--;
            }
            
            enable_interrupts(INT_TIMER1);
            output_low (PIN_D2);
            
            
         }
         
      }
      
      
      
      delay_ms(200);
   }

}
