PIC单片机实现CRC的小程序

来源:本站
导读:目前正在解读《PIC单片机实现CRC的小程序》的相关信息,《PIC单片机实现CRC的小程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PIC单片机实现CRC的小程序》的详细说明。
简介:PIC单片机实现Dallas的iButton通讯时,编了段产生和校验CRC的子程序。

#include<P16CE625.INC>

;-------------------------------

cblock0x20

datBuff:8;assign8bytedatabuffer

bit_cnt;bitcounting

CRC_COUNT;numberofbytesforCRC

CRC_RESULT;CRCresulr

crc_temp;temporarydatabufferduringCRC

endc

;-------------------------------

#defineskp0btfsc

#defineskp1btfss

;===============================

org0x000

movlw.7

movwfCRC_COUNT

movlwdatBuff

movwfFSR;FSRpointtodatabuffer

callCRC_CHECK

movwfdatBuff+7

goto$

;===============================

;CHECKTHECRCFOR?BYTESDATA

;ForthepolynomialofX^8+X^5+X^4+1

;DerivedfromDallas'siButtonstandard

;Beforecalling,FSR=databuffer

;CRC_COUNT=numberofbytesforCRC

CRC_CHECK;~~~~~~~~~~~~~~~

clrfCRC_RESULT;initializetheCRCbuffer

_crc_00

movlw.8;numberofbitsforonebyte

movwfbit_cnt;setbitcounter

movfINDF,w;getonedatabyte

movwfcrc_temp;copytotemporarylocation

_crc_01

rrfcrc_temp,f;getLSBinC

skpc;isthisLSB=1?

goto_crc_02;goifLSB=0

movlw0x01;doifLSB=1

xorwfCRC_RESULT,f

_crc_02

rrfCRC_RESULT,w;getLSBofCRC

skpc;testLSB

goto_crc_03;goifLSB=0

movlw0x18;doifLSB=1

xorwfCRC_RESULT,f;polynomialimplementation

_crc_03

rrfCRC_RESULT,w;wholebyterightrotate

rrfCRC_RESULT,f

decfszbit_cnt,f;bitcounting

goto_crc_01;goonuntilaa8bitsdone

incfFSR,f;pointerupdatetonextbyte

decfszCRC_COUNT,f;bytecounting

goto_crc_00;goonuntilallbytedone

movfCRC_RESULT,w;getCRC,ZsetifCRC=0

return;returnwithCRCinW

END

提醒:《PIC单片机实现CRC的小程序》最后刷新时间 2024-03-14 01:07:42,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PIC单片机实现CRC的小程序》该内容的真实性请自行鉴别。