#include <16F877.h>
#device adc=8
#fuses NOWDT,HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay(clock=20000000)

#define sw_up pin_b1   // SWITCH UP
#define sw_down pin_b2  // SWITCH DOWN


   INT8 COUNT,A,B;
   INT8 NUM[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
   VOID HEX_BCD(INT8 VAL);

void main()
{


   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

 OUTPUT_LOW(PIN_E1);
 OUTPUT_LOW(PIN_E2);

COUNT=0; 
   WHILE(1)
   {
   //===========================PUSH SW_UP===============
   IF(!INPUT(SW_UP))
   { IF(COUNT<99)COUNT++;
     HEX_BCD(COUNT);

     OUTPUT_D(NUM[B]);
     //=====================ENABLE CLOCK
     OUTPUT_HIGH(PIN_E1);
     DELAY_MS(10);
     OUTPUT_LOW(PIN_E1);
     //================================

      OUTPUT_D(NUM[A]);
      //==============================
     OUTPUT_HIGH(PIN_E2);
     DELAY_MS(10);
     OUTPUT_LOW(PIN_E2);
     //===============================
     
     
    
     DELAY_MS(300);
   }  
   //===========================PUSH SW_DOWN================

      IF(!INPUT(SW_DOWN))
     {IF(COUNT>0)COUNT--;
     HEX_BCD(COUNT);

     OUTPUT_D(NUM[B]);
     //=====================ENABLE CLOCK
     OUTPUT_HIGH(PIN_E1);
     DELAY_MS(10);
     OUTPUT_LOW(PIN_E1);
     //================================

      OUTPUT_D(NUM[A]);
      //==============================
     OUTPUT_HIGH(PIN_E2);
     DELAY_MS(10);
     OUTPUT_LOW(PIN_E2);
     //===============================
     
     
     
     
     DELAY_MS(300);
     }   
     

   }

}
VOID HEX_BCD(INT8 VAL)
{A=0;B=0;
  WHILE(VAL>=10)
  {
   A++;
   VAL-=10;
  }

   B=VAL;
}
