#define ENC_CLK   0b00000100
#define ENC_DAT   0b00001000
#define ENC_PIN   PIND
//----------------------------------------------------------------------
int  state;
int old_state = 0;
//----------------------------------------------------------------------
int encoder()
{ 
  if ( !(ENC_PIN & ENC_CLK) )
  {
    if ( ENC_PIN & ENC_DAT)   
    { 
      state++;
    }
    if ( !(ENC_PIN & ENC_DAT) )
    { 
      state--;
    }
    while(!(ENC_PIN & ENC_CLK))
    {
      
    }
  }
  return state;
}
//----------------------------------------------------------------------
void encoder_Initialization() 
{
  DDRD  = 0b00000010; 
  PORTD = 0b00001110; 
}
//----------------------------------------------------------------------
int get_encoder_value() 
{
  encoder();
  if(old_state != state)
  {
    old_state = encoder();
  }
  return state;
}
//----------------------------------------------------------------------