Forum: Compiler & IDEs 2 Variablen zusammenhängen


von 123 (Gast)


Lesenswert?

Guten morgen zusammen,

ich arbeite zur Zeit an einem Timer, der seine Uhrzeit aus einem DS1307 
bekommt. (funktioniert)

Nun soll zu einer einstellbaren Zeit, ein Ereignis geschehen. (Vergleich 
von start Zeit, stop Zeit und aktuelle Zeit)

Dazu möchte ich gerne die stunden und minuten zu einer Variablen 
zusammenfügen sprich 12:30 = 1230, um sie dann zu vergleichen.

Ich finde nur nichts wie ich das anstellen könnte.

Wäre jemand so freundlich mich auf den richtigen Weg zu weißen? :)

Programmiersprache = C
Editor = AVR Studio 4
compiler = winavr
Prozessor: Mega 32

von (prx) A. K. (prx)


Lesenswert?

Wenn sie wirklich als dezimal 12 und 30 vorliegen:
Stunde * 100 + Minute, ergibt 1230.

Wahrscheinlich liegen sie aber in BCD vor, also 0x12 und 0x30, dann geht 
das mit 100 nicht, dafür aber so: (Stunde << 8) + Minute, ergibt 0x1230.

von 123 (Gast)


Lesenswert?

sie liegen als dezimal vor. Die werden in der DS1307 routine schon 
umgewandelt von bcd auf dezimal.

Probier ich mal aus und geb dann Rückmeldung. Danke schon mal ;)

von Helfer (Gast)


Lesenswert?

123 schrieb:
> Dazu möchte ich gerne die stunden und minuten zu einer Variablen
> zusammenfügen sprich 12:30 = 1230, um sie dann zu vergleichen.

Das wird fummelig, wenn du plötzlich noch Tagesgrenzen berücksichtigen 
musst. Ich verwende für sowas den Ansatz aus der Unix-Welt, nämlich die 
Sekunden seit einem fiktiven "Urknall" zu zählen (bei Unix ist das der 
1.1.1970). Damit lässt sich dann prima rechnen. Ob du jetzt Sekunden 
seit Zeitpunkt X oder Minuten seit Zeitpunkt Y verwendest ist eigentlich 
egal.

Das nur so als Anregung. HTH. :)

von sam (Gast)


Lesenswert?

wie wärs denn mit sinnvollem Umrechnen in Minuten?
h*60+m
oder sekunden
(h*60+m)+s

von ... (Gast)


Lesenswert?

sam schrieb:
> wie wärs denn mit sinnvollem Umrechnen in Minuten?
> h*60+m
> oder sekunden
> (h*60+m)+s

Wenn schon dann (h*60+m)*60+s

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.