<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > CRC校驗碼在單片機中的程序?qū)崿F(xiàn)及其冗余碼表的求取

          CRC校驗碼在單片機中的程序?qū)崿F(xiàn)及其冗余碼表的求取

          作者: 時間:2012-02-15 來源:網(wǎng)絡 收藏

          4 碼的查表方法

          上面的中,每次計算一組3字節(jié)的余項需要進行8次循環(huán)操作,每次循環(huán)包括2字節(jié)的數(shù)據(jù)移動,和3次異或操作。對于時間要求嚴格的 數(shù)據(jù)采樣場合,速度可能跟不上。這時可以把對1字節(jié)通信數(shù)據(jù)的所有取值(共256個)求得碼做成一個余項表,用查表的方法來代替余項的循環(huán)求取過程。

          設一普通3字節(jié)碼為Tabc=[a b c],把它分解為一特殊的后2字節(jié)為零的3字節(jié)序列Ta00=[a 00],和一個2字節(jié)序列Tbc=[b c],可以由多項式表

          10.jpg

          其中Qa00為整數(shù)的商式,Ra00和Tbc都是最高次不超過15的余項,它們的和就是Tabc(x)的余項。每次取信息碼的3字節(jié)序列Tabc,先查表得出其中Ta00(x)的余項Ra00(x),這是一個2字節(jié)的多項式,把它和余下的2字節(jié)序列Tbc進行異或操作,得到新的3字節(jié)序列的高2字節(jié),然后取信息碼的下一字節(jié)附于其后構成新的3字節(jié)序列再分解為Ta00和,循環(huán)查表計算。運用這種方法可以很快求出多字節(jié)信息碼Mk的CRC冗余碼。

          建立16位CRC的檢驗共需要2×256個字節(jié)。對于80C51系列的來說,存儲器ROM一般都有4KB以上的空間,容量上可以滿足要求。

          下面給出CRC的求取

          11.jpg

          12.jpg

          每種規(guī)則校驗碼的最高位都為1,為編程方便,將其最高位去掉,把校驗碼的位數(shù)湊成是一個字節(jié)的整數(shù)倍。CRC—CCITT的校驗式為G(x)=x16+x12+x5+1,去掉高位后,校驗碼為0001000000100001(1021H)。取一個用來比較的16位數(shù)CRC—BYTE=8000H,逐次比較信息碼的最高位是否為1,是則將1記錄在暫存單元CRC—Temp的最低位,如果是0,則低位左移入0,每次暫存單元和信息單元循環(huán)左移,相當于把信息字節(jié)的數(shù)據(jù)逐位從左移入暫存單元中。當暫存單元的最高位變?yōu)?,說明已移入了16位數(shù)據(jù),然后把暫存單元再左移一次,和16位校驗碼做異或操作,也就相當于進行模2除。因為暫存單元被移出的最高位1和校驗碼被舍去的最高位1異或,其結果必然為零,也就等于進行了17位異或操作。把所得的余式存放在暫存單元中,接著循環(huán),直到將信息碼和補充在尾部的零字節(jié)都操作結束,把最后的余式復給CRC—Variable輸出,完成對一個余項式的處理。

          這種方法的好處是很容易對8位或者32位的校驗式求取余項表進行擴展,只需將CRC—MODEL改為8位或32位的校驗式模型,比較字節(jié)CRC— BYTE改為80H和800000H,追加末尾0字節(jié)LAST—BYTE改為1和4個,然后再把對應于16位數(shù)據(jù)變量CRC—Variable的 unsigned short型,改為un-signed char或unsigned long就可以了。

          13.jpg

          5 結束語

          利用CRC程序可以計算出各種標準下的CRC校驗冗余。在容量允許的情況下,可以利用查表進行CRC校驗。在對時間要求不高、對存儲容量要求嚴格的場合,可以直接利用循環(huán)計算來求得余項。編程使用8051系列匯編語言,可以最少和高效的指令代碼。該程序算法也可應用于 M68HC和PIC17等系列單片機上。

          參考文獻
          [1]Joe Campbell著.徐國定,廖衛(wèi)東譯.串行通訊C程序員指南[M].北京:清華大學出版社.1990.
          [2]韓炬.CRC算法實現(xiàn)[J].煤炭科學技術,2000,(2):11-15.

          51單片機相關文章:51單片機教程


          單片機相關文章:單片機教程


          單片機相關文章:單片機視頻教程


          單片機相關文章:單片機工作原理


          數(shù)字通信相關文章:數(shù)字通信原理



          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();