PIC单片机CRC校验程序

出处:xwj 发布于:2008-08-19 10:08:00

  用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



  

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

相关技术资料
广告
上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!