Forum: Mikrocontroller und Digitale Elektronik Umrechnung von ASCII zu Hex


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Matthias (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich habe folgendes Problem. Mein 2313 empfängt 5 ASCII Zeichen vom PC. 
In diesen Zeichen stehen immer Zahlen. Nun soll aus den 5 ASCII Zeichen, 
z.B. 63593 einen 16 Bit Hex Wert gemacht werden. Beim diesem Beispiel 
müsste also F869 herauskommen. Kann mir jemand weiterhelfen.
PS. Ich programmiere in Assembler.

Gruß Matthias

von thkais (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Du brauchst eine Multiplikation * 10, und zwar (16bit-Wert)*Konstante10 
= (16Bit-Wert) und eine 16-Bit Addition.


6*10 = 60   +3 = 63
63*10= 630  +5 = 635
635*10=6350 +9 = 6359
6359*10=63590 + 3 = 63593

Anschließend steht das Ergebnis als Binäre Zahl in zwei Bytes, die 
einfach in Hex umgewandelt werden können.

von Matthias (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Soweit, sogut.
Aber ich hab doch nur 8 bit register. wie teile ich die Zahl denn auf?

Matthias

von crazy horse (Gast)


Bewertung
0 lesenswert
nicht lesenswert
indem du 2 Register zu einer einer Variable zusammenfasst.
.def input_low=r16
.def input_hi=r17

Natürlich mußt du für alle Operationen 16bit-Arithmetik anwenden, du es 
selbstverständlich zu einem Übertrag zwischen den Registern kommen kann. 
Da der AVR keine 16bit-Arithmetik kann, muß das per Software erledigt 
werden, Beispiele für Mul/Div in der Beispieldatei AVR200.asm von Atmel.

Binär/Hex-Umwandlung: das ist eigentlich gar keine, 4Binärziffern 
ergeben eine HEX-Ziffer.
Und die binäre Welt wäre für uns viel leichter zu verstehen, hätten wir 
nur 4 Finger statt 5. Das Dezimalsystem gäbe es nur theoretisch, das 
normale wäre das Oktalsystem, und das passt bekanntlich prima zum 
Binärsystem.

von Matthias (Gast)


Bewertung
0 lesenswert
nicht lesenswert
So, jetzt funktioniert die Sache
Danke!

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.