Hallo Leute,
Kann es sein das die Werte in den Variablen gespeichert werden und nicht bei jedem Aufruf auf "0" gesetzt werden?
Ich jetzt ein Problem bei einem "LCD Menü".
Es geht um "Enc_Counter" dieser scheint seinen "Zählwert" die ganze Zeit zu behalten. Somit kann ich nicht "flexibel" im Menü "hin & her" Scrollen...
Kann es sein das die Werte in den Variablen gespeichert werden und nicht bei jedem Aufruf auf "0" gesetzt werden?
Ich jetzt ein Problem bei einem "LCD Menü".
Es geht um "Enc_Counter" dieser scheint seinen "Zählwert" die ganze Zeit zu behalten. Somit kann ich nicht "flexibel" im Menü "hin & her" Scrollen...
Code:
uint8_t read_Encoder(uint8_t PinPORT, uint8_t BinaryNumber)
{
static uint8_t Enc_State_new, Enc_State_old, Enc_Counter;
Enc_State_new = (PinPORT & BinaryNumber);
if ((Enc_State_new != Enc_State_old))
{
if (Enc_State_new == 0x01)
{
if (Enc_State_old == 0x00)
{
Enc_Counter++;
}
else
{
if ((Enc_Counter & 0xFE))
{
Enc_Counter--;
}
}
}
if (Enc_State_new == 0x03)
{
if (Enc_State_old == 0x01)
{
Enc_Counter++;
}
else
{
if ((Enc_Counter & 0xFE))
{
Enc_Counter--;
}
}
}
if (Enc_State_new == 0x02)
{
if (Enc_State_old == 0x03)
{
Enc_Counter++;
}
else
{
if ((Enc_Counter & 0xFE))
{
Enc_Counter--;
}
}
}
if (Enc_State_new == 0x00)
{
if (Enc_State_old == 0x02)
{
Enc_Counter++;
}
else
{
if ((Enc_Counter & 0xFE))
{
Enc_Counter--;
}
}
}
}
Enc_State_old = Enc_State_new;
if (Enc_Counter == 0)
{
Enc_Counter = 1;
}
return(Enc_Counter);
}