DIY编程器网

标题: PIC单片机CRC校验程序 [打印本页]

作者: liyf    时间: 2012-1-27 14:11
标题: PIC单片机CRC校验程序

                      用PIC单片机和Dallas的iButtON通讯时,编了段产生和校验CRC的子程序。
#include
  ;-------------------------------
  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)
            
作者: ijnyj888    时间: 2012-5-22 13:02
新手不会用,这些要怎么使用/




欢迎光临 DIY编程器网 (http://diybcq.com./) Powered by Discuz! X3.2