Frage zu Binär und i2c bus?
Warum werden die ersten zwei bzw ersten drei mit x ersetzt? Und wie kommt man dann auf die 14 bzw 12?
3 Antworten
Hey, du scheinst ein paar gehörige Lücken in den Grundlagen der Digitaltechnik zu haben, bei all deinen Fragen. Das solltest du nachholen.
X sind sogenannte "Don't Care"s.
Das heisst, dass der Wert dieses Bits in dem Moment oder dieser Anwendung keine Rolle spielt.
Zu deinem Fall:
Die Zahlen sind offenbar im BCD-Code für Tag und Monat codiert (jede Ziffer wird einzeln codiert z.B.: 1 = 0001, 4 = 0100) .
- Monat 12 = Da ein Jahr nur 12 Monate hat, kann die erste Ziffer des Monats nur 0 oder 1 sein, deshalb sind die vordersten drei Bits egal und werden nicht ausgewertet
- Da ein Monat maximal 31 Tage hat, kann die erste Ziffer höchstens 3 sein, was binär 11 wäre; deshalb werden die vordersten zwei Bits nicht ausgewertet und sind egal.
Sieh im Datenblatt nach was in den Registern steht.
Bei Adresse 5 sind die ersten 2 Bit das Jahr dad ist dir für den Tag egal daher beachte die einfach nicht.
Die nächsten beiden Stellen also 01 sind die Zener also 1 und die nächsten 4 Stellen (0100) die Einer also 4
Somit ergibt es Tag 14
Nein es sind 2 Bit für das Jahr, 2 Bit für die Zenerstelle und 4 Bit für den Tag.
Also es ist zwar BCD aber das Jahr hat nur 2 Bit und nicht 4 und die Zenerstelle hat auch nur 2 Bit und nicht 4.
Technisch könntest du es aber natürlich so umsetzen wie du sagst. Aber allgemein werden X nicht einfach durch 0 ersetzt sondern gar nicht verwendet.
Wenn du es in Hardware machst bedeutet es, dass diese Ausgänge nirgendwo angeschlossen wären.
Der Speicherbereich bietet einfach 4 Bits an dieser Stelle bzw. 8 Bit als gesamtes, doch genutzt wird nicht der gesamte Speicherbereich. Das MSB und MSB -1 würde man bei einer vernünftigen Programmierung durchaus mit Nullen füllen beim Initialisieren, wenngleich die Funktion zur Konstruktion des Datums die Werte dort eh nicht berücksichtigen würde.
X heißt, der konkrete Wert an dieser Stelle ist egal. Es kann eine 1 oder 0 sein und du musst das Ergebnis ignorieren.
Also der Chip dürfte dir als Tag auch 11010100 zurückliefern, es bleibt trotzdem Tag 14.
also BCD Code, nachdem man ein paar MSB (da wo ein X ist) durch Nullen ersetzt hat?