Forum: Mikrocontroller und Digitale Elektronik Wochentag aus Datum berechnen auf ATMEL AVR


von Christof Rieger (Gast)


Lesenswert?

Hat jemand schon mal so eine Routine in Assembler programmiert. Muß ja
nicht schon wieder das Rad neu erfinden.

Gruß Christof

P.S. Das habe ich eh schon viel zu oft ;-)

von Malte _. (malte) Benutzerseite


Lesenswert?


von Christof Rieger (Gast)


Lesenswert?

Ja, ja die Kunst dem richtigen Suchbegriff einzugeben.

Vielen Dank, werde mir das mal reiziehen

von Christof Rieger (Gast)


Lesenswert?

Das muss doch auch etwas eleganter gehen. Ohne 16-Bit Betrachtung und
durch 7 in einer Schleife teilen bis zum erbrechen. Mir reicht es auch
wenn die Schaltjahrberechnung bis 28.2.2100 funktioniert. Danach sollen
sich andere darum Gedanken machen. Die Sommer/Winterzeit-Umstellung ist
aber noch ein interresanter Aspekt.

von Alex Trusk (Gast)


Lesenswert?


von Christof Rieger (Gast)


Lesenswert?

Alex
Das sieht garnicht schlecht aus. Ich habe auf der Seite einen Link auf
http://de.wikipedia.org/wiki/Wochentagsberechnung gefunden, daraus
müsste sich eine effiziente Tabellen und Berechnungsmetode in Assembler
bauen lassen.

von Profi (Gast)


Lesenswert?

http://www.mikrocontroller.net/forum/read-1-116742.html#127699

Das Programm kann auch die Anzahl der Tage zwischen 2 "Datums"
(Daten) berechnen.
Der Wochentag berechnet sich aus dt2(t,m,j) modulo 7
Das könnte man mit Hilfe von Fixed-Point-Arithmetik gut hinbringen.

Freue mich, bald Deinen Code zu sehen!

von Alex Trusk (Gast)


Lesenswert?

http://de.wikipedia.org/wiki/Zellers_Kongruenz scheint es auch noch zu
geben und kommt ohne lookups aus. muss ja nur einmal pro tag berechnet
werden, bzw ueberhaupt nur einmal und danach hochgezaehlt werden.

von Oliver _. (verleihnix)


Lesenswert?

Moin Moin,

ich war zu fauel dazu und hab den DS 1307 verbaut, der kennt sich auch
mit Schaltjahren aus :-)


mfg
Oliver

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

@Oliver

"... der kennt sich auch mit Schaltjahren aus :-)"


Es könnte ja nicht schaden, mal die Frage zu lesen.

Von Schaltjahren war hier nirgends nicht die Rede.



@Christof,

anbei mal der Wochentag in Assembler


Peter

von Oliver _. (verleihnix)


Lesenswert?

@Peter
Ich hatte ja "auch" geschrieben, dass heißt, dass das eine extra
Funktion zum Wochentag Problem gewesen wäre.

Du hättest aber auch lesen können, er wollte das Rad doch nicht neu
erfinden, der DS1307 ist so ein Rad.

mfg
Oliver

von Peter D. (peda)


Lesenswert?

@Oliver,

"der DS1307 ist so ein Rad."


Ist er eben nicht !

Er kann nicht den Wochentag aus dem Datum berechnen, sondern man muß
den Wochentag extra stellen.
Er zählt nur den Wochentag parallel mit dem Datum hoch.


Peter

von Oliver _. (verleihnix)


Lesenswert?

@Peter

Wo ist das Problem ? Der Code um mal den Tag einzustellen ist sicher
kleiner als ihn zu ermitteln, oder sehe ich das als nicht-Assembler
Experte falsch ?

Ist ja auch Togal, zu meckern gibs immer was ...

mfg
Oliver

von Peter D. (peda)


Lesenswert?

@Oliver,

oben sprachst Du doch von Faulheit und das bedeutet für mich, daß mir
der MC überflüssige Arbeit abnehmen soll.

Und der Threadschreiber sieht das ja auch so, sonst hätte er nicht
danach gefragt.

Ich finde 16 Assemblerbefehle auch nicht so sonderlich aufwendig.



"Ist ja auch Togal, zu meckern gibs immer was ..."

Ich wollte nur klarstellen, daß der DS1307 diese Aufgabe nicht lösen
kann, daher also völlig fehl am Platze ist.


Peter

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.