CRC冗余码校验编程实验.docx

上传人:牧羊曲112 文档编号:4883691 上传时间:2023-05-21 格式:DOCX 页数:8 大小:508.55KB
返回 下载 相关 举报
CRC冗余码校验编程实验.docx_第1页
第1页 / 共8页
CRC冗余码校验编程实验.docx_第2页
第2页 / 共8页
CRC冗余码校验编程实验.docx_第3页
第3页 / 共8页
CRC冗余码校验编程实验.docx_第4页
第4页 / 共8页
CRC冗余码校验编程实验.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《CRC冗余码校验编程实验.docx》由会员分享,可在线阅读,更多相关《CRC冗余码校验编程实验.docx(8页珍藏版)》请在三一办公上搜索。

1、、实验目的:掌握CRC冗余码校验编程、实验原理:1. 设置CRC寄存器,并给其赋值FFFF(hex)。2. 将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。3. CRC寄存器向右移一位,MSB (最高位)补零,移出并检查LSB (最低位)。4. 如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。5. 重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。6. 重复第2至第5步直到所有数据全部处理完成。7. 最终CRC寄存器的内容即为CRC值。常用的CRC循环冗余校验标准多项式如下:CRC(12 位)=X12+X1

2、1+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位)多项式为例,其对应校验二进制位列为1 1000 0000 0000 0101。注意:这儿列出的标准校验多项式都含有(X+1)的多项式因子;各多项式的 系数均为二进制数,所涉及的四则运算仍遵循对二取模的运算规则。_ (注:对二取模的四则运算指参与运算的两个二进制数各位之间凡涉及加减 运算时均进行XOR异或运算,艮即1 XOR 1=0,0 XOR

3、0=0,1 XOR 0=1,0 XOR 1=1,即相同为0,不同为1)、实验内容及步骤: 打开VC选择新建“完成”,出现. 1 guoshumin确定取消TM0:在这里设置对话控制。S3编辑添加控件在对话框上单击右键,选择建立类向导,出现如下对话框,添加成员变量返回最初的对话框单击“开始编码”按钮,选择建立类向导,如下图所示,添加功能函数单击Edit Code添加如下函数void CGuoshuminDlg:OnButton1()/ TODO: Add your control notification handler code hereUpdateData(true);int n,p,k,q

4、,i,j=0;LPCSTR head,g,begain,str1,str3;CString strEdit=m_strEdit1,s=CString(01”);n=strlen(m_strEdit2)-1;if( strlen(m_strEdit1)=0 & strlen(m_strEdit2)=0 )MessageBox(没有输入数据!请重新填写!”); return ;if( strlen(m_strEdit1)=0 & strlen(m_strEdit2)!=0 )MessageBox(没有输入要编码的数据!请重新填写!”);return ;if( strlen(m_strEdit1)!

5、=0 & strlen(m_strEdit2)=0 )MessageBox(没有输入校验多项式!请重新填写!”);return ;str1=m_strEdit1;str3=m_strEdit2;for(int I=0; (str1I=0 II str1I=1 ) & I strlen(m_strEdit1) ;I+);if( Istrlen(m_strEdit1)MessageBox(输入的要编码的数据不合理!请重新填写!”);return ;for(int J=0; (str3J=0 | str3J=1 ) & J strlen(m_strEdit2) ;J+); if( J 0;k-)st

6、rEdit+=CString(0”);strEdit=LPCSTR(strEdit);head = strEdit ;for( ; strlen( head ) = strlen( m_strEdit2 );)g = m_strEdit2 ;for( i=0; *g != 0 ; i+, g+ )if( *(head+i) = *g )strEdit.SetAt(i+j,s0);/CString(0”);elsestrEdit.SetAt(i+j,s1);/CString(1”);q=0;for( ; strEditq != 1 & q strlen(strEdit)-1 ;) q+ ;j =

7、 q ;head = strEdit ;head+=q;p = strlen(strEdit)- n;begain = strEdit;begain += p;m_strEdit3=begain;m_strEdit4 = m_strEdit1 + m_strEdit3;UpdateData(false);返回最初的对话框单击“开始编码”按钮,选择建立类向导,如下图所示,添加功能函数单击Edit Code添加如下函数void CGuoshuminDlg:OnButton2()/ TODO: Add your control notification handler code here OnCancel();最后运行程序guosnumin - Microsoft Visual c+1 - Lguoshuminuig.cppj四文件(D 幡旧 查等曾 插入(D工程(E)组建 T*CD Q(W)帮助3CGuoshuminDIg 三(All class members! fjOnButton1鼠缪圜矗! Bl姬q=0; Aj guoshumin resources白 Dialog圄 IDDABOUTBOXidp2guoshumin d由 J IconE O String Table亩 Q Version53 guoshuminuoic

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号