- 相關(guān)推薦
CRC校驗最終個人總結(jié)
總結(jié)在一個時期、一個年度、一個階段對學(xué)習(xí)和工作生活等情況加以回顧和分析的一種書面材料,它能幫我們理順知識結(jié)構(gòu),突出重點,突破難點,因此,讓我們寫一份總結(jié)吧?偨Y(jié)怎么寫才不會流于形式呢?下面是小編精心整理的CRC校驗最終個人總結(jié),僅供參考,大家一起來看看吧。
單片機課程總實驗
實現(xiàn)CRC校驗
一、實驗?zāi)康?/p>
⒈通過學(xué)習(xí)CRC原理,驗證,檢錯,掌握其工作原理;
⒉編寫CRC編碼程序;
、晨偨Y(jié)實驗過程,編寫提交實驗報告:方案、編程、調(diào)試、結(jié)果、分析、結(jié)論。
二、實驗要求
用單片機實現(xiàn)CRC校驗碼(10比特數(shù)據(jù)或任意數(shù)據(jù)長度、生成多項式用G(x)=x5+x4+x2+1),校驗碼顯示在單片機實驗系統(tǒng)數(shù)碼管上。
實驗器材:
1、裝有KeilC51開發(fā)工具的PC機一臺
2、TD-PIT/TD-PIT-B實驗裝置一套
三、實驗原理
1.設(shè)置CRC寄存器,并給其賦初始值。
2.將數(shù)據(jù)的第一個8-bit字符與16位CRC寄存器的低8位進行異或,并把結(jié)果存入CRC寄存器。
3.CRC寄存器向右移一位,最高位補零,移出并檢查最低位。
4.如果LSB為0,重復(fù)第三步;若LSB為1,CRC寄存器與多項式碼相異或。
5.重復(fù)第3與第4步直到8次移位全部完成。此時一個8-bit數(shù)據(jù)處理完畢。
6.重復(fù)第2至第5步直到所有數(shù)據(jù)全部處理完成。
7.最終CRC寄存器的內(nèi)容即為CRC值。常用的CRC循環(huán)冗余校驗標(biāo)準(zhǔn)多項式如下:CRC(12位)=X12+X11+X3+X2+X+1CRC(16位)=X16+X15+X2+1CRC(CCITT)=X16+X12+X5+1CRC(32位)=X32+X26+X23+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1以CRC(16位)多項式為例,其對應(yīng)校驗二進制位列為11000000000000101本次實驗以10比特為例。顯示到六位數(shù)碼管中。
其實驗連接圖如下圖所示。
四、實驗步驟
1.打開KeilC51開發(fā)工具,新建開發(fā)工具,并保存至相應(yīng)路徑。
2.新建文件,編寫代碼。
3.按照實驗連線圖在實驗箱上連線。
4.編譯運行代碼勿誤后,打開實驗箱,點擊調(diào)試,運行。
五、實驗結(jié)果
經(jīng)過調(diào)試程序,在實驗箱數(shù)碼管上顯示二進制數(shù)001110。
六、實驗源代碼
#include"Absacc.h"
#defineC8255_AXBYTE[0x7F00]//8255端口地址定義#defineC8255_BXBYTE[0x7F01]#defineC8255_CXBYTE[0x7F02]#defineC8255_CONXBYTE[0x7F03]//數(shù)碼管顯示編號
unsignedchara[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsignedcharb[]={0x00,0x00,0x00,0x00,0x00,0x00};longMD;longGD;
voiddelay(unsignedinttime){unsignedinti;for(i=0;i
C8255_B=a[b[i]];//查表輸出顯示C8255_A=j;delay(0x100);j=(j>>1)|(j=1;MD=tmp;
tmp=GD;//數(shù)GD有多少位tmp用于暫存GDfor(count_GD=0;GD!=0;count_GD++)GD>>=1;GD=tmp;
//構(gòu)造CRC碼序列
for(tmp=1;tmp=0;count--)
{if(tst0==(tst0&MD))//MD與最高位為1當(dāng)除不盡時最高位為0,
//余數(shù)比除數(shù)少一位
{
MD^=GD;//異或除法,被除數(shù)應(yīng)該異或之后少一位}
tst0>>=1;//位數(shù)減一,最高位降低一位
GD>>=1;//除數(shù)保持和被除數(shù)最高位對齊,相當(dāng)于豎式除法左對齊}i=0;
while(1)//轉(zhuǎn)化為2進制輸出,16進制數(shù)模2取余,移位{b[i]=MD%2;i++;MD/=2;if(MD==0||i>6)break;}}
voidmain(){
C8255_CON=0x81;//8255初始化CRC_check(0x28D,0x35);//16進制
while(1)//顯示{
display();delay(0x80);clear();
}}
七、實驗心得
實驗指導(dǎo)書上寫的還是很好懂,只是最初接觸的時候確實感覺代碼好多陌生,因為這個調(diào)用機制,變量基本上都是公有變量,直接在函數(shù)里面使用,賦值,在另一個函數(shù)里面接著用。看起來函數(shù)都是無參和無返回值的。不過后來仔細(xì)看了之后發(fā)現(xiàn)這個了之后,使用起來還是蠻順手的了。雖然還是習(xí)慣使用帶參數(shù)的函數(shù),但是不用寫返回值這一點倒也能適應(yīng)。在除法實現(xiàn)方面,通過百度找到了一種模擬豎式除法的方式,左對齊,異或,根據(jù)結(jié)果商數(shù),再左對齊,異或。如此就采用了除數(shù)與被除數(shù)位數(shù)對齊,除數(shù)不足位數(shù)補0的方式,因為0與任何數(shù)異或還是它本身,所以用0補足之后,除數(shù)和被除數(shù)整體異或的結(jié)果和豎式除法左對齊異或的結(jié)果是一樣的。M位除以N位,每次異或之后結(jié)果會降低一位,最終會得到M-N+1位商和N-1位余數(shù)或者0余數(shù)。
【CRC校驗最終個人總結(jié)】相關(guān)文章:
個人能力素質(zhì)自我評價最終05-10
影響的作文最終05-24
診所執(zhí)業(yè)校驗?zāi)甓瓤偨Y(jié)03-15
悔過書格式最終03-31
鄉(xiāng)村醫(yī)生年度校驗總結(jié)02-08
行政主管個人年度工作總結(jié)最終02-21