www.mikrocontroller.net

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


Autor: Steffen Neuser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Uwe Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Packed-BCD?

Autor: Steffen Neuser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.