Die Funktionen
else if(tmp == _LANG_MENU_dat)
{
set_Date(tmp);
Date(tmp);
}
Werden nun automatisch aufgerufen, also alles was man oben definiert in der Liste definiert wird aufgerufen. Wozu dient denn die Funktion set_Date(tmp) und wieso wird an die Funktionen tmp übergeben, tmp ist ja nur ein Zahlenwert.
Ich sehe gerade wieder das deine Buttons in der Start Funktion sind die nur einmal ausgeführt wird. Du kannst dir das wie ein Setup vorstellen das nur bei der Initialisierung geladen wird.
void FUNC_dat(void)
{
CTR_start_func();
if (menu_button_down == 1 && pos == 0) //set day-
{
setTime(hour(),minute(),second(),day()-menu_button_down,month(),year());
menu_button_down=0;
// lcd.setCursor(3,1);lcd.blink();
}
....rest des codes
CTR_start_func muss einmal aufgerufen werden, da hier dann festgelegt wird, welche Funktion nach dem Tastendruck und dem ersten Durchlauf wieder aufgerufen wird. Daher kann ich diese Funktion auch nicht weg optimieren. Zum anderen kannst du die Funktion mit if(!CTR_start_func()) { verwenden, wenn du selber noch Werte einmalig definieren willst. Ansonsten kann man immer CTR_start_func(); verwenden.
So, ich kann erst morgen Abend weiter Verbesserungen liefern.