Forum: Mikrocontroller und Digitale Elektronik In Hex zählen!?


von Steffen Neuser (Gast)


Lesenswert?

Hallo,

ich möchte in einem Prgramm eine Variable bei einem Tastendruck
raufzählen von 0-60, im Hex-Code, also 0x00 - 0x59 und wenn dann weiter
die Taste gedrückt wird, soll wieder bei 0x00 angefangen werden.

Tastendruckabfrage usw. ist nicht das Problem, mein Problem besteht in
dem Hochzählen im Hex-Code. Kann mir jemand erklären, wie man das
realisieren könnte?

Ich hatte mi mal gedacht ein Array, alle Daten von 0 - 59 in hex da
reinschreiben und dann die ID des Arrrays bei jedem Tastendruck
erhöhen.
Ist aber sicher nicht die beste Lösung oder?

Wäre klasse, wenn mir dabei jemand weiter helfen könnte.

Gruß
Steffen

von Uwe Nagel (Gast)


Lesenswert?

Du addierst immer 1 und wenn die letzte Stelle A geworden ist addierst
du einfach nochmal 6 dazu.

In C:

x++;
if( (x & 0x0f)==0x0a ) x+=6;

von Ronny (Gast)


Lesenswert?

Wieso nicht normal Zählen und den Wert in der Ausgaberoutine in einen
entsprechenden String umwandeln?printf bietet dafür sogar schon
Formatierungsroutinen an (falls du in C programmierst und genug Flash
hast).

Alternativ kann man auch gleich den String halten und das letzte
Zeichen jeweils um 1 erhöhen.wird das Zeichen grösser '9' wird in das
Zeichen ein 'A' geschrieben,wird das Zeichen grösser 'F' wird eine
'0' hineingeschrieben und die ganze Sache für das andere Zeichen
wiederholt.

Nebenbei: Du kennst den Unterschied zwischen einem String und einer
binären Zahl?

von Karl heinz B. (kbucheg)


Lesenswert?

In mir keimt der Verdacht du möchtest eigentlich in BCD
zählen (BDC = Binary Coded Decimal)

Also:
  0x00, 0x01, 0x02, ... 0x08, 0x09, 0x10, 0x11, ... 0x18, 0x19, 0x20
...

Ansonsten macht deine Frage nämlich absolut keinen Sinn. Dein
µC rechnet weder in hex, noch dezimal sondern einfach nur
binär.
Wenn man zu 0b00001001 (=9 oder 0x09) eins dazuzählt, dann kommt
0b00001010 ( =10 oder 0x0A) raus.

Wenn meine Vermutung von oben stimmt, dann willst du aber
haben, dass

   0x09 + 0x01 = 0x10

in binär

   0b00001001 + 0b0000001 = 0b00010000

oder in dezimal:

   9 + 1 = 16

D.h. du testest das untere Nibbel, ob es 0x09 ist. Wenn
es das ist, dann musst du bei einer Addition von 1 noch
zusätzlich 6 dazuzählen.

Reicht dir das zum Verständnis, oder brauchst du es noch genauer?

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Packed-BCD?

von Steffen Neuser (Gast)


Lesenswert?

Hallo,

ich meinte es so wie Karl Heinz Buchegger es verstanden hat. Habe mich
da wohl nicht wirklich klar ausgedrückt.


Vielen Dank.

Gruß
Steffen

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.