新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)實(shí)現(xiàn)CRC的小程序

        PIC單片機(jī)實(shí)現(xiàn)CRC的小程序

        作者: 時(shí)間:2011-03-08 來源:網(wǎng)絡(luò) 收藏
        PIC實(shí)現(xiàn)CRC的小程序

        PIC實(shí)現(xiàn)Dallas的iButton通訊時(shí),編了段產(chǎn)生和校驗(yàn)CRC的子程序。
        ;PIC www.pic16.com
        #includeP16CE625.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


        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 东港市| 天峻县| 忻州市| 固镇县| 镇雄县| 调兵山市| 禹州市| 桃园市| 惠水县| 博罗县| 江门市| 龙江县| 龙泉市| 改则县| 连州市| 芮城县| 兴义市| 克东县| 湘乡市| 托里县| 饶阳县| 开平市| 阆中市| 耿马| 额尔古纳市| 禄劝| 玛纳斯县| 枞阳县| 漳平市| 通山县| 始兴县| 江永县| 宣汉县| 宝丰县| 尉氏县| 房山区| 班玛县| 池州市| 沧州市| 贵定县| 乌拉特中旗|