www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2 Byte zu 1 ???


Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi zusammen,

ich habe zur Zeit folgendes Problem...
ich lese Daten über den UART ein und speichere diese im SRAM.
Ich bekomme bei der Übertragung eine CRC Summe welche ich nun
vergleichen möchte.

Die Checksumme, welche übertragen wird, besteht aus zwei Byte
z.B. 'F7' dies ist in 2 Bytes abgelegt.

Im Assembler hätte ich diese beiden Bytes nun in einem Register.

Also die beiden BYTES  'F7' in ein Register speichern welches dann
den WERT F7 enthält.

Wie macht man sowas? Für jeden Tip währe ich sehr dankbar.

MfG AVRli

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast also "F" und "7" als Ascii?
Das ist nicht schwer:
Du nimmst das höherwertige Zeichen ("F"), ziehst das Ascii-Offset ab,
und swap das low ins high-nibble. Dann das niederwertige ("7") und
damit das Gleiche veranstalten, nur ohne den swap. Die beiden
Ergebnisse addieren - fertig.
Das Ascii-Offset kriegst Du folgendermaßen raus:

byte = byte - $30  (Offset für "0")
wenn byte >9 dann byte = byte - 7 (zusätzliches Offset der
                                   Buchstaben A-F abziehen)

Nun ist in byte die Zahl, also bei "F" kommt eine 15 heraus.

Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi thkais,

ja danke für die Hilfe... das klappt so wie Du geschrieben hattest.
Gut finde ich das Du die Befehle nicht verraten hast denn da lernt man
nicht.
Ich bin absoluter Newbie in Sachen ATMEL's
Ich programmiere ausschließlich in ASM... mit AVR Studio...
Hier mal mein ASM Code...
Kann man den noch verbessern? Oder vereinfachen?
Würde mich auch noch über Tips in der Richtung freuen.

;--- CRC lesen ---
  ld wrI,X+         ; 'F' steht im SRAM
  subi wrI,48
  cpi wrI,10
  brlo CALC_CRC1
  subi wrI,7
CALC_CRC1:
  mov crcRead,wrI
  swap crcRead
  ld wrI,X+         ; '7' steht im SRAM
  subi wrI,48
  cpi wrI,10
  brlo CALC_CRC2
  subi wrI,7
CALC_CRC2:
  add crcRead,wrI


MfG AVRli

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit den Befehlen war ja auch so gedacht ;-)
Ich finde gut, daß Du Dich durchgebissen und es nach dem kleinen Schubs
von mir hinbekommen hast.

Du könntest noch die Umrechung als Subroutine schreiben, dann würde
alles ein wenig kürzer (aber ein bisserl langsamer).

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.