新聞中心

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

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

        作者: 時(shí)間:2011-03-08 來(lái)源:網(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)閉
        主站蜘蛛池模板: 吴忠市| 美姑县| 乌拉特中旗| 大同市| 开化县| 开阳县| 博客| 喀喇沁旗| 崇州市| 丹棱县| 湘阴县| 利川市| 孟津县| 利辛县| 白山市| 宽城| 石景山区| 房产| 阳新县| 卓资县| 宝兴县| 巴彦淖尔市| 天津市| 尼玛县| 大石桥市| 宁陕县| 旌德县| 耒阳市| 鄯善县| 海林市| 光泽县| 威远县| 高台县| 盘锦市| 许昌县| 枣庄市| 井研县| 新密市| 琼海市| 陆河县| 随州市|