狠狠做深爱婷婷久久一区,欧美日韩国内,久久麻豆精品传媒,久久久一区一区二区,色鬼伦理片,99视频精品久久,久久精品国产久久久久久,久久久伦理电影一区二,磁力天堂河北彩花

新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)和Dallas的iButtON通訊時(shí)的CRC校驗(yàn)子程序

PIC單片機(jī)和Dallas的iButtON通訊時(shí)的CRC校驗(yàn)子程序

作者: 時(shí)間:2014-01-16 來(lái)源:網(wǎng)絡(luò) 收藏

時(shí),編了段產(chǎn)生和校驗(yàn)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 '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



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉
城固县| 达尔| 潜江市| 卢湾区| 昭觉县| 沙湾县| 琼海市| 苍山县| 板桥市| 漳州市| 攀枝花市| 宜城市| 寿光市| 大竹县| 溧阳市| 许昌县| 尼木县| 广水市| 阿拉善左旗| 营山县| 博乐市| 阳东县| 法库县| 定兴县| 视频| 宜城市| 乃东县| 太谷县| 陆丰市| 巴林右旗| 曲靖市| 武乡县| 宝清县| 济宁市| 额尔古纳市| 泽库县| 万盛区| 大丰市| 扎囊县| 阿拉善右旗| 滨海县|