音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

剛寫的CRC校驗(yàn)(c),討論交流一下

作者:Y.ing 欄目:技術(shù)交流
剛寫的CRC校驗(yàn)(c),討論交流一下
CRC VALUE INPUT VALUE
01100001 0 _______
10111100 0
01011110 0
00101111 1 C
00010111 1 _______
00001011 1
00000101 0
10001110 0 1
01000111 0 _______
10101111
我根據(jù)以上CRC經(jīng)過校驗(yàn)之后的運(yùn)算結(jié)果,(我不知道CRC校驗(yàn)的原理是什么)寫的兩個校驗(yàn)函數(shù),熟悉CRC校驗(yàn)法則的可以幫我看看,一起討論討論。
若A位一個unsigned CHAR,發(fā)現(xiàn)A值與它自己本身經(jīng)過CRC校驗(yàn)之后,A值為0^-^

一個函數(shù)是8位的CRC校驗(yàn),另一個函數(shù)為16位的CRC校驗(yàn)
分別為:CRC8=X8+X5+X4+1和CRC16=X16+X15+X5+1

#define SetBit(var,thisBit) ( var|=(1<<thisBit) )
#define ClrBit(var,thisBit) ( var&=(0xff-(1<<thisBit)) )
#define CompBit(var,thisBit) ( var^=(1<<thisBit))
#define GetBit(var,thisBit) ( var&(1<<thisBit) )

void Crc8Value(U08 *crc,U08 dat)
{
U08 loop;
U08 crcTemp;
BOOL bitTemp;
    for(loop=0; loop<8; loop++)
    {
        crcTemp = *crc;
        (*crc) >>=1;
        bitTemp = (crcTemp&0x01)^(dat&0x01);
        if(bitTemp)
        {
            if(crcTemp&0x08)    ClrBit(*crc,2);
            else                SetBit(*crc,2);
            if(crcTemp&0x10)    ClrBit(*crc,3);
            else                SetBit(*crc,3);
            (*crc) |= 0x80;
        }
        else
        {
            if(crcTemp&0x08)    SetBit(*crc,2);
            else                ClrBit(*crc,2);
            if(crcTemp&0x10)    SetBit(*crc,3);
            else                ClrBit(*crc,3);
            (*crc) &= 0x7f;
        }

        dat >>= 1;
    }
}


void Crc16Value(U16 *crc,U08 dat)
{
U08 loop;
U16 crcTemp;
BOOL bitTemp;
    for(loop=0; loop<8; loop++)
    {
        crcTemp = *crc;
        (*crc) >>=1;
        bitTemp = (crcTemp&0x01)^(dat&0x01);
        if(bitTemp)
        {
            if(crcTemp&0x0002)    *crc &= 0xfffe;
            else                *crc |= 0x0001;
            if(crcTemp&0x4000)    *crc &= 0xdfff;
            else                *crc |= 0x2000;
            (*crc) |= 0x8000;
        }
        else
        {
            if(crcTemp&0x0002)    *crc |= 0x0001;
            else                *crc &= 0xfffe;
            if(crcTemp&0x4000)    *crc |= 0x2000;
            else                *crc &= 0xdfff;
            (*crc) &= 0x7fff;
        }

        dat >>= 1;
    }
}

2樓: >>參與討論
oran
網(wǎng)上
網(wǎng)上不是有很多這方面的討論了嗎?

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
怎么這個電路不工作啊
求助貼片二極管
實(shí)在是找不到固態(tài)繼電器S5C-225LV,我想用可控硅了.
用哪種傳感器好?
求電子方面專業(yè)英語資料
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號