|
|||||||||||
| 技術(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 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 于 2006/1/14 21:29:00 發(fā)布:
網(wǎng)上 網(wǎng)上不是有很多這方面的討論了嗎? |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |