fbpx

[email protected]

购物车

 查看订单

  • 我的帐户
东东购 | EasternEast
  • 中文书店
    • 畅销排行榜
      • 小说 畅销榜
      • 童书 畅销榜
      • 外语畅销榜
      • 管理畅销榜
      • 法律畅销榜
      • 青春文学畅销榜
    • 热门分类
      • 社会小说
      • 成功/励志 畅销榜
      • 人物传记
      • 大陆原创
      • 绘本童书
      • 影视小说
    • 文学推荐
      • 文集
      • 戏剧
      • 纪实文学
      • 名家作品
      • 民间文学
      • 中国现当代随笔
    • 新书热卖榜
      • 小说 新书热卖榜
      • 青春文学 新书热卖榜
      • 童书 新书热卖榜
      • 管理 新书热卖榜
      • 成功/励志 新书热卖榜
      • 艺术 新书热卖榜
  • 精选分类
    • 小说
    • 保健养生
    • 烹饪/美食
    • 风水/占卜
    • 青春文学
    • 童书
    • 管理
    • 成功/励志
    • 文学
    • 哲学/宗教
    • 传记
    • 投资理财
    • 亲子家教
    • 动漫/幽默
    • 法律 Legal
    • 经济 Economics
    • 所有分类
  • 关于东东
  • 帮我找书
搜索
首页计算机/网络程序设计循环冗余校验码(CRC)计算——C、VB、C51、ASM51编程实例

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

本书是一本用4种不同计算机语言编程计算循环冗余校验码的程序集,实例丰富、典型,提供完整的电子资料包,方便读者运行和调试程序,加快编程进度。

作者:杜树春 出版社:清华大学出版社 出版时间:2017年09月 

ISBN: 9787302476504
年中特卖用“SALE15”折扣卷全场书籍85折!可与三本88折,六本78折的优惠叠加计算!全球包邮!
trust badge

EUR €26.99

类别: 程序设计 SKU:5d8733915f98494bcc14d5ec 库存: 有现货
  • 描述
  • 评论( 0 )

描述

开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302476504

编辑推荐
(1)本书内容丰富,涉及不同CRC位数、生成多项式和程序语言,方便读者各取所需。(2)通俗易懂,实例典型,既适合初学者,也适合有一定编程基础的爱好者和技术人员。(3)实践性强,所有实例均已通过验证,并提供完整的电子资料包,读者可以直接运行程序。
 
内容简介
本书是一本用多种不同计算机语言编程计算循环冗余校验码的程序集,全书共分4章。第1章是概述,介绍循环冗余校验码的概念。第2章是8位循环冗余校验码的计算程序,所用计算机语言包括C语言、VB语言、C51语言和ASM51汇编语言。第3章是16位循环冗余校验码的计算程序,所用计算机语言同第2章。第4章是32位循环冗余校验码的计算程序,所用计算机语言包括C语言和C51语言。
通过本CRC程序集的出版,希望达到如下目的:当广大编程人员遇到CRC计算的问题时,能从本书中查到符合自己所需CRC位数、生成多项式和程序语言的程序模块,从而加快编程进度。
作者简介
作者简介:杜树春,男,高级工程师。1977年吉林大学物理系毕业,现已退休。曾先后供职于(西安)兵器工业部205研究所和(太原)山西省自动化研究所。曾编著《单片机C语言和汇编语言混合编程实例详解》《单片机应用系统开发实例详解》《单片机C语言和汇编语言混合编程实践》《单片机与外围器件接口实例详解》《基于Proteus和Keil C51的单片机设计与仿真》《基于Proteus的数字集成电路快速上手》《基于Proteus的模拟电路分析与仿真》《基于Proteus的电路基础知识快速上手》《51单片机开发快速上手》《集成运算放大器应用经典实例》《常用电子元器件使用指南》《51单片机很简单–Proteus及汇编语言入门与实例》《实用有趣的C语言程序》等多部图书。
目  录

目录
第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语言程序
参考文献

前  言
前言

自从人类进入信息社会后,有线的或无线的通信网络便遍布全球。在通信系统中,由于存在干扰或信道传输特性不好,容易对信道造成不良的影响。通过对所传输的数字信息进行特殊的处理(如差错控制编码),即可实现对传输信息中错误的自动检验,称为检错。检错对数字通信系统的有效传输起着重要的作用。检错的手段有三种,一是奇偶校验,二是累加和校验,三是循环冗余校验。循环冗余校验是这三种校验中好的一种。同一组数据采用不同的生成多项式,将得出不同的循环冗余校验码。一般说来,一组数据的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计算的应用问题时,能从本书中查到符合自己所需位数、所需生成多项式和合适程序语言的程序模块,从而加快编程的工作进度。由于编著者水平有限且时间仓促,书中难免存在缺点和错误,恳请读者批评指正。我的电子邮箱为[email protected]。本书电子资料包请扫描二维码下载。

编著者2017年4月

媒体评论
评论
在线试读
第1章概述
1.1循环冗余校验简介在远距离数据通信中,为确保高效而无差错地传输数据,必须对数据检错,即差错控制。有多种检错的方法,如奇偶校验、算术累加和校验及循环冗余校验。而循环冗余校验是其中好的一种。循环冗余校验(Cyclic Redundancy Check,CRC)是目前运用非常广泛的一种数据校验方式。其特点是: 检错能力极强,开销小,易于用编码器及检测电路实现。从检错能力来看,其不能发现错误的几率在0.0047%以下; 从性能和开销上考虑,其远远优于奇偶校验及算术累加和校验等方式。因而,在计算机网络、磁盘存储和数据通信等领域,CRC无处不在。Modbus通信协议下有两种通信模式: 一种是ASCII(美国标准信息交换代码)通信模式,另一种是RTU(远程终端单元)通信模式,后者就采用了CRC校验方法。著名的通信协议X.25的FCS(帧检错序列)采用的是CRCCCITT; 磁盘驱动器的读写采用的是CRC16; ARJ、LHA等压缩工具软件采用的是CRC32; 一些半导体厂商生产的单总线芯片用CRC8校验其芯片固有编号,如芯片DS18B20的8字节的序列号,后1个字节是前面7个字节的CRC码,这是为了保证序列号的性与正确性; 此外通用的图像存储格式GIF、TIFF等都用CRC作为检错手段。CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(即CRC码),并附在信息后面,构成一个新的二进制码序列数,共(k r)位,后发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。CRC校验可以简单地描述为: 例如我们要发送一些数据(信息字段),为了避免一些干扰并在接收端判断接收的是否是真实的数据,这时就要加上校验数据(即CRC校验码),以判断接收的数据是否正确。在发送端,根据要传送的k位二进制码序列,以一定的规则(CRC校验有不同的规则,规则一词,在差错控制理论中称为“生成多项式”)产生一个校验用的r位校验码(CRC码),附在原始信息后边,构成一个新的二进制码序列数,共k r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则(即与发送时生成CRC校验码相同的规则)进行检验,校验采用计算机的模2除法,即除数和被除数(即生成多项式)做异或运算,进行异或运算时除数和被除数位对齐,进行按位异或运算,若终的数据能被除尽,则传输正确; 否则,传输错误。生成CRC码的多项式g(x)又叫生成多项式(Generation Polynomial),生成多项式有多种(见表11)。生成多项式不同,产生的CRC码也不同。这就类似作除法时被除数相同,除数不同,所求得商和余数不同。生成多项式如果是(4 1)位的,则产生4位的CRC4码; 如果是(8 1)位的,则产生8位的CRC8码; 如果是(12 1)位的,则产生12位的CRC12码; 如果是(16 1)位的,则产生16位的CRC16码; 如果是(32 1)位的,则产生32位的CRC32码。

表11标准CRC码生成多项式

名称生成多项式简记式标 准 引 用CRC8x8 x5 x3 10x129CRC8x8 x2 x 10x107CRC8x8 x6 x4 x3 x2 x0x15ECRC12x12 x11 x3 x2 x 10x180FCRC16x16 x15 x2 10x18005IBM SDLCCRC16CCITTx16 x12 x5 10x11021ISO HDLC, ITU X.25
续表

名称生成多项式简记式标 准 引 用
CRC16REVx15 x13 10xA001CRC32x32 x26 x23 x22 x16 x12 x11 x10 x8 x7 x5 x4 x2 x 10x04C11DB7ZIP, RAR, IEEE 802
CRC校验码的产生的大致步骤是: 把要发送数据(通常是由多个字节组成的数组)以二进制的格式排列起来,拿生成多项式所对应的二进制数去做不借位的除法运算(相当于按位异或),所得的余数就是CRC校验码。

从表11可以看出CRC码有8位到32位的,常用的是8位(一个字节)的CRC8码、16位(两个字节)的CRC16码和32位(四个字节)的CRC32码。以下主要介绍CRC8码、CRC16码和CRC32码的生成方法。1.2循环冗余校验的基本过程CRC校验的基本过程: 采用CRC校验时,通信的发送方和接收方用同一个生成多项式g(x),多项式正序反序,初始值也相同,并且g(x)的首位和后一位的系数必须为1。CRC检验的处理方法是: 发送方用发送数据的二进制多项式t(x)除以g(x) ,得到余数y(x)作为CRC校验码。校验时,以计算的校正结果是否为0为依据,判断数据帧是否出错。设生成多项式是r阶的(位是x^r ),具体步骤描述如下。发送方: (1) 在发送的m位数据的二进制多项式t(x)后添加r个0 ,扩展到m r位,以容纳r位的校验码,追加0后的二进制多项式为T(x)。(2) 用T(x)除以生成多项式g(x),得到r位的余数y(x),它就是CRC校验码。(3) 把y(x)追加到t(x)后面,此时的数据s(x)就是包含了CRC校验码的待发送字符串; 由于s(x)=t(x)y(x),因此s(x)肯定能被g(x)除尽。接收方: (1) 接收数据n(x),这个n(x)就是包含了CRC校验码的m r位数据; (2) 计算n(x)除以g(x),如果余数为0则表示传输过程没有错误,否则表示有错误。从n(x)去掉尾部的r位数据,得到的就是原始数据。1.3使用循环冗余校验码的一个例子Modbus通信协议是工业控制领域实现单个电子控制器互联的通信协议,实际上它已成为一种通用的工业标准。硬件采用RS232串行口或RS485串行口,通信方式为主从式半双工通信,主机呼叫从机地址,从机应答通信。数据帧共10位,1个起始位,8个数据位,1个停止位,无校验。波特率: 9600或19200。图11是采用Modbus通信协议的总站、分站通信系统结构示意图。以下介绍Modbus通信协议的通信格式。

图11采用Modbus通信协议的总站、分站通信系统结构示意图

书摘插画
插图

插图

插图

插图

插图

插图

抢先评论了 “循环冗余校验码(CRC)计算——C、VB、C51、ASM51编程实例” 取消回复

评论

还没有评论。

相关产品

加入购物车

Python基础教程(第3版)

EUR €58.99
阅读更多
缺货

C程序设计语言 第2版·

EUR €24.99
加入购物车

Python 3网络爬虫开发实战

EUR €58.99
评分 5.00 / 5
加入购物车

码农翻身(好玩有趣的编程知识)

EUR €43.99
评分 5.00 / 5

东东购的宗旨是服务喜爱阅读中文书籍的海外人民,提供一个完善的购书平台,让国人不论何时何地都能沉浸在书香之中,读着熟悉的中文字,回忆着家乡的味道。


安全加密结账 安心网络购物 支持Paypal付款

常见问题

  • 货物配送
  • 退换货政策
  • 隐私政策
  • 联盟营销

客户服务

  • 联系东东
  • 关于东东
  • 帮我找书
  • 货物追踪
  • 会员登入

订阅最新的优惠讯息和书籍资讯

选择币别

EUR
USD
CAD
AUD
NZD
NOK
GBP
CHF
SEK
CNY
UAH
ILS
SAR
MXN
KRW
MYR
SGD
HUF
TRY
JPY
HKD
TWD
facebookinstagram
©2020 东东购 EasternEast.com

限时特卖:用“SALE15”优惠券全场书籍85折!可与三本88折,六本78折的优惠叠加计算。 忽略