Mathias S. schrieb:
> Hallo!
>
> Ich bin gerade etwas verwirrt im Bezug auf die Timekeeper Registers des
> DS1307.
>
> Das Register sieht folgend aus:
>
> Adress Bit7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
> 01h | 0 | | 10 Minutes | | Minutes |
>
>
> Wie soll ich das verstehen? Können die Bits 0-3 (Minutes) den Wert 0-9
> oder 0-15 annehmen? Und die Bits 6-4 müssen mal 10 genommen werden, oder
> ist es einfach eine stinknormale binäre Codierung?
Das ist BCD
Stell dir die Zahl als Hex-Zahl vor
0x10 sind 10 Minuten
0x18 sind 18 Minuten
0x45 sind 45 Minuten
auf die Art muss man nicht lange rumrechnen, wenn man nur auf eine
Ausgabe ausgeben will. Das Byte in seine beiden Nibble zerlegen. Zu
jedem Nibble noch '0' addieren und ab gehts an das Terminal.
Wenn du rechnen musst:
wieder in die Nibbles zerlegen.
Minuten = HighNibble * 10 + LowNibble;