PIC单片机CRC校验程序

时间:2008-08-19

  用PIC单片机Dallas的iButton通讯时,编了段产生和校验CRC的子程序。
#include <P16CE625.INC>

  ;-------------------------------
  cblock    0x20
  datBuff:8            ;assign 8 byte data buffer
  bit_cnt                ;bit counting
  CRC_COUNT            ;number of bytes for CRC
  CRC_RESULT            ;CRC resulr
  crc_temp            ;temporary data buffer during CRC
  endc

  ;-------------------------------
  #define    skp0    btfsc
  #define    skp1    btfss

  ;===============================
  org    0x000
  movlw    .7
  movwf    CRC_COUNT
  movlw    datBuff
  movwf    FSR        ;FSR point to data buffer
  call    CRC_CHECK
  movwf    datBuff+7
  goto    $

  ;===============================
  ;CHECK THE CRC FOR ? BYTES DATA
  ;For the polynomial of X^8 + X^5 + X^4 + 1
  ;Derived from Dallas's iButton standard
  ;Before calling, FSR       = data buffer
  ;                CRC_COUNT = number of bytes for CRC
  CRC_CHECK    ;~~~~~~~~~~~~~~~
  clrf    CRC_RESULT    ;initialize the CRC buffer
  _crc_00
  movlw    .8        ;number of bits for one byte
  movwf    bit_cnt        ;set bit counter
  movf    INDF,w        ;get one data byte
  movwf    crc_temp    ;copy to temporary location
  _crc_01
  rrf    crc_temp,f    ;get LSB in C
  skpc            ;is this LSB=1?
  goto    _crc_02        ;go if LSB=0
  movlw    0x01        ;do if LSB=1
  xorwf    CRC_RESULT,f
  _crc_02
  rrf    CRC_RESULT,w    ;get LSB of CRC
  skpc            ;test LSB
  goto    _crc_03        ;go if LSB=0
  movlw    0x18        ;do if LSB=1
  xorwf    CRC_RESULT,f    ;polynomial implementation
  _crc_03
  rrf    CRC_RESULT,w    ;whole byte right rotate
  rrf    CRC_RESULT,f
  decfsz    bit_cnt,f    ;bit counting
  goto    _crc_01        ;go on until aa 8 bits done
  incf    FSR,f        ;pointer update to next byte
  decfsz    CRC_COUNT,f    ;byte counting
  goto    _crc_00        ;go on until all byte done
  movf    CRC_RESULT,w    ;get CRC, Z set if CRC=0
  return            ;return with CRC in W END

  欲知详情,请登录维库电子市场网(www.dzsc.com



  
上一篇:基于AT89C52单片机的SD卡的读写设计
下一篇:D类音频前置运算放大器的噪声分析与设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料