www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hier ein Beispiel einer CRC-16 Prüfung


Autor: bundy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier eine CRC-16 Prüfung aus einem 32 Bit Datenwort 0x3d23f034
im Old School Assembler

Gegencheck mit CRC-Calculator von
https://www.ghsi.de/component/option,com_wrapper/Itemid,151/
war erfolgreich ;)

GPOLYNOM = w6
CRC = w3
DATA = w4
COUNT = w5
RESULT = w0

_test_crc:
  MOV #0x8005,GPOLYNOM
  MOV #0x3d23,CRC      ;Testdaten 3d23f034
  MOV #0xf034,DATA
  MOV #0x10,COUNT      ;Anzahl Bit-Shifts (DATA.Length)
  CALL _calculate_crc    ;Berechne CRC..
  MOV #0x0000,DATA    ;GPOLYNOM.Length - 1 an Testdaten als 0 anhängen
  MOV #0x0f,COUNT      ;GPOLYNOM.Length - 1
  CALL _calculate_crc    ;Berechne CRC..
  XOR CRC,GPOLYNOM,CRC  ;Restwert / GPOLYNOM => CRC
  MOV #0x1,RESULT      ;Rückgabewert der Prüfung auf true setzen
  MOV #0x6eef,w6      ;Zu erwartende CRC-Summe aus den Testdaten
   CPSEQ w6,CRC      ;CRC korrekt?
  MOV #0x0,RESULT      ;NEIN ! Rückgabewert auf false setzen
RETURN  

_calculate_crc:
  BTSC CRC,#0xf      ;High-Bit von CRC gesetzt?  
   XOR CRC,GPOLYNOM,CRC          ;Ja! CRC / GPOLYNOM = CRC
  RLC DATA,DATA      ;DATA << 1
  RLC CRC,CRC       ;CRC << 1 (DATA Bit)
  DEC COUNT,COUNT      ;
  CP0 COUNT        ;
  BRA NZ,_calculate_crc  ;Datenpaket durch?
RETURN
  
.end


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.