PIC單片機(jī)CRC校驗(yàn)程序
發(fā)布時(shí)間:2008/8/19 0:00:00 訪問(wèn)次數(shù):1396
用pic單片機(jī)和dallas的ibutton通訊時(shí),編了段產(chǎn)生和校驗(yàn)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 wend
欲知詳情,請(qǐng)登錄維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
用pic單片機(jī)和dallas的ibutton通訊時(shí),編了段產(chǎn)生和校驗(yàn)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 wend
欲知詳情,請(qǐng)登錄維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
熱門點(diǎn)擊
- 用于ATmega128的軟件UART范例程序
- 單片機(jī)驅(qū)動(dòng)蜂鳴器原理與設(shè)計(jì)
- 51單片機(jī)8*8點(diǎn)陣LED顯示原理及程序
- PIC單片機(jī)CRC校驗(yàn)程序
- 80C51原始IP核內(nèi)部RAM的擴(kuò)展方案
- 單片機(jī)的圖形化編程方法探討
- 用AT89S51單片機(jī)來(lái)制作的手動(dòng)計(jì)數(shù)器
- Proteus在單片機(jī)系統(tǒng)設(shè)計(jì)中的應(yīng)用
- TEA5767收音機(jī)模塊的C51控制程序
- pic單片機(jī)的模擬I2C通信
推薦技術(shù)資料
- 硬盤式MP3播放器終級(jí)改
- 一次偶然的機(jī)會(huì)我結(jié)識(shí)了NE0 2511,那是一個(gè)遠(yuǎn)方的... [詳細(xì)]
- 100A全集成電源模塊R
- Teseo-VIC6A GNSS車用精準(zhǔn)定位
- 高效先進(jìn)封裝工藝
- 模數(shù)轉(zhuǎn)換器 (Analog-to-Digit
- 集成模數(shù)轉(zhuǎn)換器(ADC)
- 128 通道20 位電流數(shù)字轉(zhuǎn)換器̴
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究