CADdy
28.04.2013, 17:31
Hallo allemiteinander,
für eine Uhr möchte ich eine Datumsanzeige machen, die alle 10s für 3s das Datum anzeigt. Da es sich um ein achtstelliges, einzeiliges LCD-Modul handelt, kann ich Zeit und Datum nicht gleichzeitig darstellen. Mit meiner Abfrage funktioniert das auch einwandfrei, allerdings bin ich der Meinung, dass die If-Abrage irgendwie einfacher machbar sein sollte:
if (((soft_seconds >= 7) & (soft_seconds <= 9)) | ((soft_seconds >= 17) & (soft_seconds <= 19)) | ((soft_seconds >= 27) & (soft_seconds <= 29)) | ((soft_seconds >= 37) & (soft_seconds <= 39)) | ((soft_seconds >= 47) & (soft_seconds <= 49)) | ((soft_seconds >= 57) & (soft_seconds <= 59)))
{
sprintf(buffer, "%02d.%02d.%02d", date_D, date_M, date_Y);
lcd_puts(buffer);
}
Ich bin jetzt nicht der Held in Sachen C und funktionieren tuts ja auch, mich würde aber schon interessieren, ob das auch kürzer geht. Ich habe schon rumprobiert und z.B. den Inhalt von
soft_seconds in char zu wandeln, den linken Teil abzuschneiden und dann für den Vergleich zu verwenden. Das ist aber noch aufwändiger und hat auch nicht geklappt.
Für einen Tipp würde ich mich freuen.
Servus
Peter
für eine Uhr möchte ich eine Datumsanzeige machen, die alle 10s für 3s das Datum anzeigt. Da es sich um ein achtstelliges, einzeiliges LCD-Modul handelt, kann ich Zeit und Datum nicht gleichzeitig darstellen. Mit meiner Abfrage funktioniert das auch einwandfrei, allerdings bin ich der Meinung, dass die If-Abrage irgendwie einfacher machbar sein sollte:
if (((soft_seconds >= 7) & (soft_seconds <= 9)) | ((soft_seconds >= 17) & (soft_seconds <= 19)) | ((soft_seconds >= 27) & (soft_seconds <= 29)) | ((soft_seconds >= 37) & (soft_seconds <= 39)) | ((soft_seconds >= 47) & (soft_seconds <= 49)) | ((soft_seconds >= 57) & (soft_seconds <= 59)))
{
sprintf(buffer, "%02d.%02d.%02d", date_D, date_M, date_Y);
lcd_puts(buffer);
}
Ich bin jetzt nicht der Held in Sachen C und funktionieren tuts ja auch, mich würde aber schon interessieren, ob das auch kürzer geht. Ich habe schon rumprobiert und z.B. den Inhalt von
soft_seconds in char zu wandeln, den linken Teil abzuschneiden und dann für den Vergleich zu verwenden. Das ist aber noch aufwändiger und hat auch nicht geklappt.
Für einen Tipp würde ich mich freuen.
Servus
Peter