浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 單 片 機(jī)

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



相關(guān)IC型號(hào)

熱門點(diǎn)擊

 

推薦技術(shù)資料

硬盤式MP3播放器終級(jí)改
    一次偶然的機(jī)會(huì)我結(jié)識(shí)了NE0 2511,那是一個(gè)遠(yuǎn)方的... [詳細(xì)]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13692101218  13751165337
粵ICP備09112631號(hào)-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!