中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        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 來源:網(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)閉