CRC16校驗(yàn)C語(yǔ)言程序源碼-(附完整的可執(zhí)行的C語(yǔ)言代碼)_第1頁(yè)
CRC16校驗(yàn)C語(yǔ)言程序源碼-(附完整的可執(zhí)行的C語(yǔ)言代碼)_第2頁(yè)
CRC16校驗(yàn)C語(yǔ)言程序源碼-(附完整的可執(zhí)行的C語(yǔ)言代碼)_第3頁(yè)
CRC16校驗(yàn)C語(yǔ)言程序源碼-(附完整的可執(zhí)行的C語(yǔ)言代碼)_第4頁(yè)
CRC16校驗(yàn)C語(yǔ)言程序源碼-(附完整的可執(zhí)行的C語(yǔ)言代碼)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上CRC16校驗(yàn)C語(yǔ)言程序源碼 (附完整的可執(zhí)行的C語(yǔ)言代碼)/CRC16校驗(yàn)在通訊中應(yīng)用廣泛,這里不對(duì)其理論進(jìn)行討論,只對(duì)常見(jiàn)的2種/實(shí)現(xiàn)方法進(jìn)行測(cè)試。方法一:查表法(256長(zhǎng)度的校驗(yàn)表) 速度快,準(zhǔn)確,但是對(duì)于單片機(jī)設(shè)備存儲(chǔ)占用大,且校驗(yàn)表長(zhǎng)度大,輸入時(shí)容易出現(xiàn)錯(cuò)誤。/ - POPULAR POLYNOMIALS -/ CCITT:      x16 + x12 + x5 + x0           

2、60;     (0x1021)/ CRC-16:     x16 + x15 + x2 + x0                 (0x8005)#define         CRC_16_POLYNOMIALS      0

3、x8005const BYTE chCRCHTalbe =            / CRC 高位字節(jié)值表0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x

4、01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,

5、0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1,

6、 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x0

7、0, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0

8、x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40;const BYTE chCRCLTalbe =          / CRC 低位字節(jié)值表0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7,0x05, 0xC5, 0xC4

9、, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E,0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9,0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC,0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x

10、30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32,0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D,0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38,0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF,0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5,

11、0x27, 0xE7, 0xE6, 0x26,0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1,0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4,0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB,0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A

12、, 0xBA,0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0,0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97,0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E,0x5A, 0x9

13、A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89,0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83,0x41, 0x81, 0x80, 0x40;WORD CRC16_1(BYTE* pchMsg, WORD wDataLen)     &#

14、160;  BYTE chCRCHi = 0xFF; / 高CRC字節(jié)初始化        BYTE chCRCLo = 0xFF; / 低CRC字節(jié)初始化        WORD wIndex;            / CRC循環(huán)中的索引        while

15、(wDataLen-)                        / 計(jì)算CRC                wIndex = chCRCLo *pchMsg+ ;     

16、           chCRCLo = chCRCHi chCRCHTalbewIndex;                 chCRCHi = chCRCLTalbewIndex ;              

17、60; return (chCRCHi << 8) | chCRCLo) ;方法一:列表法(簡(jiǎn)單表)const WORD wCRCTalbeAbs =0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401, 0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400, ;WORD CRC16_2(BYTE* pchMsg, WORD wDataLen)        WORD w

18、CRC = 0xFFFF;        WORD i;        BYTE chChar;        for (i = 0; i < wDataLen; i+)                  

19、0;     chChar = *pchMsg+;                wCRC = wCRCTalbeAbs(chChar wCRC) & 15 (wCRC >> 4);                wCRC = wCRCTa

20、lbeAbs(chChar >> 4) wCRC) & 15 (wCRC >> 4);                return wCRC;方法二:定義法 根據(jù)CRC16/MODBUS原理直接計(jì)算,算法簡(jiǎn)單但對(duì)單片機(jī)計(jì)算壓力大。WORD CRC16_3(BYTE* pchMsg, WORD wDataLen)        BYTE i, chChar;

21、        WORD wCRC = 0xFFFF;        while (wDataLen-)                        chChar = *pchMsg+;    &#

22、160;           chChar = ByteInvert(chChar);                wCRC = (WORD) chChar) << 8);             

23、0;  for (i = 0; i < 8; i+)                                        if (wCRC & 0x8000)  &#

24、160;                             wCRC = (wCRC << 1) CRC_16_POLYNOMIALS;              

25、;          else                                wCRC <<= 1;      

26、                          wCRC = WordInvert(wCRC);        return wCRC;/試驗(yàn)數(shù)據(jù):/      采用Metrowerks CodeWarrior在DSP56F80x平臺(tái)上,對(duì)這3種

27、方法/進(jìn)行了性能測(cè)試。/ -/  代碼大小(字)    額外存儲(chǔ)空間(字)        執(zhí)行時(shí)間(周期數(shù))/ -/ 方法1   32        512   540/ 方法2   57          &

28、#160;16             1120/ 方法3   142*      0             4598/附一個(gè)完整的C語(yǔ)言代碼#include <stdio.h>void InvertUint8(unsigned char *dBuf,unsigned char *srcBuf) int i;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論