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
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.
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
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.