打印

求助!!!CRC校验算法

[复制链接]
1429|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
beiwei23du|  楼主 | 2009-4-20 16:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CRC, ov, RF, fm, go
下面是我参考的一个CRC生成子程序,有以下几点不太明白
1:生成多项式是什么?看起来像X15+X10+X3,生成多项式可以随意改吗?

2:为什么计算的过程中采用右移并检测C,只有C=1才和多项式异或?
3:程序开头    movf    loca0,w
        addwf   fsr,f
        clrf    indf
        incf    fsr,f
        clrf    indf
的意义是把要发送的数据右移16位吗?

 ;=====================================================================
;crc生成子程序crcgenerator
;功能: 将一串二进制数据加上crc校验码
;入口参数:
;    fsr是待编码的数据首地址
;    loca0是待编码的数据的字节数(不包括crc)
;返回参数:
;    loca1是crc低字节(先发送)
;    loca2是crc高字节(后发送)
;====================================================================
crcgenerator:
        movf    loca0,w
        addwf   fsr,f
        clrf    indf
        incf    fsr,f
        clrf    indf
        decf    fsr,f
        movf    loca0,w
        subwf   fsr,f

        bcf    status,c
        rlf    loca0,f
        rlf    loca0,f
        rlf    loca0,f        ;数据区预留crc的位置并清零


        movf    indf, w         ;loca1, loca2, loca3暂存连续的三个字节
        movwf   loca1
        incf    fsr, f
        movf    indf, w
        movwf   loca2
        incf    fsr, f
        movf    indf, w
        movwf   loca3
        movlw   8
        movwf   loca4

crcloop1:
        rrf     loca3, f
        rrf     loca2, f
        rrf     loca1, f
        btfss   status, c   ;检测c标志
        goto    crccont1
        movlw   084h        ;b'10000100'
        xorwf   loca2, f
        movlw   08h         ;b'00001000'
        xorwf   loca1, f
crccont1:
        decfsz  loca4, f
        goto    crccont2
        movlw   8
        movwf   loca4
        incf    fsr, f
        movf    indf, w
        movwf   loca3
crccont2:
        decfsz  loca0, f
        goto    crcloop1

        decf    fsr, f      ;调整fsr至正确值
        decf    fsr, f
        return
沙发
beiwei23du|  楼主 | 2009-4-20 16:52 | 只看该作者

很冷清啊,自己顶一下

使用特权

评论回复
板凳
beiwei23du|  楼主 | 2009-4-21 10:13 | 只看该作者

人气不旺啊!!!是太简单了吗?

使用特权

评论回复
地板
yewuyi| | 2009-4-21 15:54 | 只看该作者

有标准的多项式,当然,你也可以自己定。

但标准的多项式一般都是经过了数学推导,证明那是误码概率最低的,自己定多项式一般是为了加密,如果是为了互连互通,自己定多项式肯定是不归路。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

167

帖子

1

粉丝