单片机crc校验实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程总实验
——实现CRC校验
一、实验目的
⒈通过学习CRC原理,验证,检错,掌握其工作原理;
⒉编写CRC编码程序;
⒊总结实验过程,编写提交实验报告:方案、编程、调试、结果、分析、
结论。
二、实验要求
用单片机实现CRC校验码(10比特数据或任意数据长度、生成多项式用G (x)= x5 + x4 + x2 + 1 ),校验码显示在单片机实验系统数码管上。
二、实验器材
1、装有Keil C51开发工具的PC机一台
2、TD-PIT/TD-PIT-B实验装置一套
三、实验原理
1.设置CRC寄存器,并给其赋初始值。
2.将数据的第一个8-bit 字符与16 位CRC 寄存器的低8 位进行异或,并把结果存入CRC寄存器。
3.CRC 寄存器向右移一位,最高位补零,移出并检查最低位。
4.如果LSB 为0,重复第三步;若LSB 为1,CRC 寄存器与多项式码相异或。
5.重复第 3 与第4 步直到8 次移位全部完成。此时一个8-bit 数据处理完毕。
6.重复第 2 至第5 步直到所有数据全部处理完成。
7.最终CRC 寄存器的内容即为CRC 值。
常用的CRC循环冗余校验标准多项式如下:CRC (12 位) =X12+X11+X3+X2+X+1 CRC (16 位) = X16+X15+X2+1CRC (CCITT) = X16+X12 +X5+1 CRC (32 位) = X32+X26+X23+X16+X12+X11+X10+ X8+X7+ X5+X4+X2+X+1 以CRC (16 位)多项式为例,其对应校验二进制位列为1 1000 0000 0000 0101本次实验以10比特为例。显示到六位数码管中。
其实验连接图如下图所示。
四、实验步骤
1.打开Keil C51开发工具,新建开发工具,并保存至相应路径。
2.新建文件,编写代码。
3.按照实验连线图在实验箱上连线。
4.编译运行代码勿误后,打开实验箱,点击调试,运行。
五、实验结果
经过调试程序,在实验箱数码管上显示二进制数001110.
六、实验源代码
#include "Absacc.h"
#define C8255_A XBYTE[0x7F00] //8255端口地址定义
#define C8255_B XBYTE[0x7F01]
#define C8255_C XBYTE[0x7F02]
#define C8255_CON XBYTE[0x7F03]
//数码管显示编号
unsigned char a[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f,
0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
unsigned char b[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
long MD;
long GD;
void delay(unsigned int time)
{
unsigned int i;
for(i=0; i