-         

Ergebnis 1 bis 7 von 7

Thema: 2x8bit "hex" zu 16bit dezimal

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    06.12.2005
    Ort
    Hamburg
    Alter
    28
    Beiträge
    86

    2x8bit "hex" zu 16bit dezimal

    Anzeige

    Also das ist jezt irgendwie kompliziert ich habe z.B. in einem Register $10 und in einem zweiten $02 stehen jetzt würde ich daraus gerne den 16bit Wert $1002 machen und daraus dann den Dezimalwert 4098 aber wie geht das?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Ein Register einer AVR kann nur 8Bit aufnehmen, mit ausnahme der X,Y,Z Register die dann aus 2 normalen Registern zusammengesetzt sind.

    Was willst Du mit den HEX Werten machen addieren oder subtrahieren oder was.
    Bei solchen Aufgaben werden die 8Bit Register einzeln behandelt z.B.
    du willst den Inhalt der register r0 (low_Byte) und register r1 (high_Byte)
    zum Inhalt der Register r16 und r17 addieren.

    ADD r16,r0
    ADC r17,r1

    Mit ADC wird ein eventuell vorhandenes Carry zur Addition von r17 hinzugefügt.

    Das Ergebnis steht in r16, r17.
    Sollte es bei dieser Addition einen Übertrag gegeben haben ist das Carry Flag gesetzt.

    Die Umwandlung in einen Dezimalwert wurde hier schon öfter mal behandelt und benötigt ein kleines Programm - bemüh mal die Forumssuche.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    06.12.2005
    Ort
    Hamburg
    Alter
    28
    Beiträge
    86
    Ja eigentlich geht es mir vor allem um die Wandlung von z.B. $1B2C in die jeweiligen ASCII stellen von 6956(Dezimal) und dazu habe ich hier nichts gefunden

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Hmm, ich denke man könnte es wie folgt machen.

    1. Umwandlung der 16 Bit Zahl in BCD
    2. Tabelle um die einzelnen Ziffern in den jeweiligen ASCII Code zu überführen.

    Grüße,
    Hanni
    Grundregeln des Forenpostings:
    1. Nutze niemals die Suchfunktion!
    2. Überprüfe niemals die Topics nach Ähnlichkeiten!
    3. Schreibe alles in hellgelb!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    06.12.2005
    Ort
    Hamburg
    Alter
    28
    Beiträge
    86
    Und wie wandle ich in BCD

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Grundregeln des Forenpostings:
    1. Nutze niemals die Suchfunktion!
    2. Überprüfe niemals die Topics nach Ähnlichkeiten!
    3. Schreibe alles in hellgelb!

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Für die Wandlung in BCD brauchst Du in Assembler ein kleines Programm.
    Entweder ziehst Du von der maximal Möglichen Zahl die 10000, 1000, 100, und 10 Stellen ab, lässt in der jeweiligen Funktion einen Zähler mitlaufen der dann den BCD Wert der entsprechenden Stelle angibt.
    Oder Du teilst deinen Wert durch 10 und wertest die Reste aus.
    Vermutlich gibts auch noch andere Lösungsansätze.
    Kürzlich hab ich hier mal im Forum sogar mal einen Codeschnipsel für so etwas gesehen, aber Frag mich jetzt bitte nicht mehr welcher Beitrag das war.

    EDIT! Habs gefunden schau mal hier http://www.roboternetz.de/phpBB2/viewtopic.php?t=22705 rein.

    Eine BCD Zahl in eine ASCII umzuwandeln ist relativ einfach. Zum BCD Wert wird einfach 0x30 dazugeodert
    LDI r16,bcdzahl
    ORI r16,0x30
    Im Register r16 steht jetzt eine Stelle deiner ASCII Zahl.
    Da die Zahlen im ASCII Code bei 0x30 beginnen kriegt man somit BCD Zahlen auf ASCII umgestrickt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •