循环冗余校验码(CRC)计算——C、VB、C51、ASM51编程实例

循环冗余校验码(CRC)计算——C、VB、C51、ASM51编程实例"

作者:杜树春
ISBN:9787302476504
定价:¥39
字数:千字
页数:
出版时间:2017.09.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书是一本用多种不同计算机语言编程计算循环冗余校验码的程序集,全书共分4章。第1章是概述,介绍循环冗余校验码的概念。第2章是8位循环冗余校验码的计算程序,所用计算机语言包括C语言、VB语言、C51语言和ASM51汇编语言。第3章是16位循环冗余校验码的计算程序,所用计算机语言同第2章。第4章是32位循环冗余校验码的计算程序,所用计算机语言包括C语言和C51语言。

通过本CRC程序集的出版,希望达到如下目的:当广大编程人员遇到CRC计算的问题时,能从本书中查到符合自己所需CRC位数、生成多项式和程序语言的程序模块,从而加快编程进度。

前言

自从人类进入信息社会后,有线的或无线的通信网络便遍布全球。在通信系统中,由于存在干扰或信道传输特性不好,容易对信道造成不良的影响。通过对所传输的数字信息进行特殊的处理(如差错控制编码),即可实现对传输信息中错误的自动检验,称为检错。检错对数字通信系统的有效传输起着重要的作用。

检错的手段有三种,一是奇偶校验,二是累加和校验,三是循环冗余校验。循环冗余校验是这三种校验中最好的一种。

同一组数据采用不同的生成多项式,将得出不同的循环冗余校验码。一般说来,一组数据的CRC值由四个因素决定,一是生成多项式,二是该生成多项式正序还是反序,三是余数初始值是什么(通常有00H和0FFH,0000H或0FFFFH,00000000H或0FFFFFFFFH的选择), 四是结果异或值是00000000H还是0FFFFFFFFH(结果异或值只在CRC32码中考虑)。当生成多项式固定,正反序固定,余数初始值固定,结果异或值也固定时,同一组数的CRC值便是唯一的。

本书是一本用不同的计算机语言编程计算循环冗余校验码的程序集。常用的循环冗余校验码有8位的、16位的和32位的三种,每种之下又有不同的生成多项式、正序反序、余数初始值取值和结果异或值的区分。所用计算机语言有四种:分别是C语言、VB语言、C51语言和ASM51汇编语言,前两种在个人电脑或笔记本电脑上运行,后两种在51系列单片机上运行。

本书共分4章,第1章是概述,介绍循环冗余校验码的概念。第2章是8位循环冗余校验码的计算程序,生成多项式①为x8+x5+x4+1, 包括正序和反序; 生成多项式②为x8+x2+x+1,包括正序。所用计算机语言包括C语言、VB语言、C51语言和ASM51汇编语言。第3章是16位循环冗余校验码的计算程序,生成多项式①为x15+x13+1 ; 生成多项式②为x16+x12+x5+1 。所用计算机语言包括C语言、VB语言、C51语言和ASM51汇编语言。第4章是32位循环冗余校验码的计算程序,生成多项式为x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1,包括正序和反序,所用计算机语言包括C语言和C51语言。

本书最后有三个附录,分别是介绍Visual C++6.0上机操作的附录A , 介绍单片机开发软件Keil C51使用方法的附录B 和介绍Visual Basic 6.0上机操作的附录C。

电子资料包的内容,仍是以书中章节为单位。在每一章(指第2章~第4章)下,都有一个章文件夹,每章文件夹下面有节文件夹,节文件夹内有四个文件夹,分别是C语言程序夹、VB语言程序夹、C51语言程序夹和ASM51汇编语言程序夹。打开任意一个程序文件夹,里面是例子文件夹。如果是C语言程序夹下的例子文件夹,打开后,多个文件中必有扩展名是.dsw的文件,在Visual C++6.0 软件已安装在电脑中的前提下,双击具有.dsw扩展名的文件就可进入Visual C++6.0 软件集成环境,也就是Visual C++6.0的编辑、编译、连接、调试、运行环境。如果是VB语言程序夹下的例子文件夹,打开后,多个文件中必有扩展名是.vbp的文件,在Visual Basic 6.0 软件已安装在电脑中的前提下,双击具有.vbp扩展名的文件就可进入Visual Basic 6.0软件集成环境,也就是Visual Basic 6.0的编辑、编译、连接、调试、运行环境。如果是C51语言程序夹或ASM51汇编语言程序夹下的例子文件夹,打开后,多个文件中必有扩展名是.Uv2的文件,在单片机开发软件Keil C51已安装在电脑中的前提下,双击具有.Uv2扩展名的文件,就可进入C51语言和ASM51汇编语言软件集成环境。

本书适合以下人员阅读或参考。一是学习C语言、VB语言或51系列单片机课程的大、中专及高等职业学校、中等职业学校的在校学生; 二是使用这些语言的广大工程技术人员; 三是这些语言编程的初学者; 四是广大程序设计爱好者。

通过这本CRC程序集的出版,希望达到如下目的: 当广大编程人员遇到CRC计算的应用问题时,能从本书中查到符合自己所需位数、所需生成多项式和合适程序语言的程序模块,从而加快编程的工作进度。

由于编著者水平有限且时间仓促,书中难免存在缺点和错误,恳请读者批评指正。我的电子邮箱为dushuchun@263.net。

本书电子资料包请扫描二维码下载。

编著者

2017年4月

目录

第1章概述

1.1循环冗余校验简介

1.2循环冗余校验的基本过程

1.3使用循环冗余校验码的一个例子

1.3.1Modbus通信协议通信格式说明

1.3.2循环冗余码CRC16码的用法

第2章CRC8码的计算

2.1用手工计算CRC8码

2.2用程序计算CRC8码:生成多项式g(x)=x8+x5+x4+1(正序)

2.2.1C语言

2.2.2VB语言

2.2.3C51语言

2.2.4ASM51汇编语言

2.3用程序计算CRC8码:生成多项式g(x)=x8+x5+x4+1(反序)

2.3.1C语言

2.3.2VB语言

2.3.3C51语言

2.3.4ASM51汇编语言

2.4用程序计算CRC8码:生成多项式g(x)=x8+x2+x+1(正序)

2.4.1C语言

2.4.2VB语言

2.4.3C51语言

2.4.4ASM51汇编语言

2.5小结

第3章CRC16码的计算

3.1如何生成CRC16码

3.2用程序计算CRC16码:生成多项式g(x)=0A001H

3.2.1C语言

3.2.2VB语言

3.2.3C51语言

3.2.4ASM51汇编语言

3.3用程序计算CRC16码:生成多项式g(x)=11021H

3.3.1C语言

3.3.2VB语言

3.3.3C51语言

3.3.4ASM51汇编语言

3.4小结

第4章CRC32码的计算

4.1CRC32码简介

4.2如何用C语言计算CRC32码

4.2.1直接计算法(正序)

4.2.2直接查表法(正序)

4.2.3直接查表法(反序)

4.2.4表格逐渐生成查表法(正序)

4.2.5表格逐渐生成查表法(反序)

4.2.6表格的生成法(正序)

4.2.7表格的生成法(反序)

4.3如何用C51语言计算CRC32码

4.3.1直接查表法(反序)

4.3.2表格逐渐生成查表法(正序)

4.3.3表格的生成法(反序)

4.4小结

附录AVisual C++6.0的上机操作

A.1Visual C++的安装和启动

A.2输入和编辑源程序

A.3编译、连接和运行

A.4编译和运行C语言程序的另一种方法

附录B单片机开发软件Keil C51的使用方法

B.1Keil C51简介

B.2安装Keil C51

B.3如何建立一个工程

B.4单片机选型

B.5创建源程序

B.6把新创建源程序加入到工程文件中

B.7工程的设置

B.8编译

B.9调试

附录CVisual Basic 6.0的上机操作

C.1Visual Basic 6.0的安装、启动及退出

C.2如何编译和运行配套的VB语言程序

C.3如何运行一个VB语言程序

参考文献

作者简介

编辑推荐

1)本书内容丰富,涉及不同CRC位数、生成多项式和程序语言,方便读者各取所需。

2)通俗易懂,实例典型,既适合初学者,也适合有一定编程基础的爱好者和技术人员。

3)实践性强,所有实例均已通过验证,并提供完整的电子资料包,读者可以直接运行程序。

 

作者寄语

作者简介:

杜树春,男,高级工程师。1977年吉林大学物理系毕业,现已退休。曾先后供职于(西安)兵器工业部205研究所和(太原)山西省自动化研究所。曾编著《单片机C语言和汇编语言混合编程实例详解》《单片机应用系统开发实例详解》《单片机C语言和汇编语言混合编程实践》《单片机与外围器件接口实例详解》《基于ProteusKeil C51的单片机设计与仿真》《基于Proteus的数字集成电路快速上手》《基于Proteus的模拟电路分析与仿真》《基于Proteus的电路基础知识快速上手》《51单片机开发快速上手》《集成运算放大器应用经典实例》《常用电子元器件使用指南》《51单片机很简单--Proteus及汇编语言入门与实例》《实用有趣的C语言程序》等多部图书。

电子资料

www.luweidong.cn

下一个