书籍详情
MCS-51单片机应用开发实用子程序
作者:边春远,王志强编著
出版社:人民邮电出版社
出版时间:2005-09-01
ISBN:9787115137128
定价:¥46.00
购买这本书可以去
内容简介
本书从工程应用的角度出发,系统地介绍了MCS-51单片机在计算、转换、应用等方面的各种子程序,内容包括二进制数运算、十进制数运算、数据转换、排序与查找、数学函数、树和图、延时和跳转、人机交互、单片机测控、单片机内部资源编成、单片机数据传输、波形发生与控制以及单片机软件抗干扰和数字滤波。对每个子程序,本书给出了入口条件、出口信息、影响资源、堆栈要求及经过详细注释的程序清单。本书的子程序具有很强的实用性。 本书可作为高等院校相关专业师生学习MCS-51程序设计的参考书和工具书,也可供MCS-51单片机应用开发的科技人员参考。
作者简介
暂缺《MCS-51单片机应用开发实用子程序》作者简介
目录
第1章 二进制定点数运算 1
1.1 加法 2
1.1.1 子程序1——双字节无符号数加法 2
1.1.2 子程序2——多字节无符号数加法 3
1.1.3 子程序3——双字节有符号数加法 3
1.1.4 子程序4——多字节有符号数加法 5
1.2 减法 6
1.2.1 子程序5——双字节无符号数减法 6
1.2.2 子程序6——多字节无符号数减法 7
1.2.3 子程序7——双字节有符号数减法 8
1.2.4 子程序8——多字节有符号数减法 9
1.3 乘法 10
1.3.1 子程序9——双字节无符号数乘法 10
1.3.2 子程序10——多字节无符号数乘法 12
1.3.3 子程序11——双字节有符号数乘法 13
1.3.4 子程序12——多字节有符号数乘法 15
1.4 除法 17
1.4.1 子程序13——双字节无符号数除法 17
1.4.2 子程序14——多字节无符号数除法 19
1.4.3 子程序15——双字节有符号数除法 23
1.4.4 子程序16——多字节有符号数除法 24
1.5 开方 26
1.5.1 子程序17——单字节开方 26
1.5.2 子程序18——双字节开方 26
1.5.3 子程序19——多字节开方 27
第2章 二进制浮点数运算 31
2.1 加法 32
2.1.1 子程序20——双字节无符号数加法 32
2.1.2 子程序21——多字节无符号数加法 32
2.1.3 子程序22——双字节有符号数加法 33
2.1.4 子程序23——多字节有符号数加法 34
2.2 减法 36
2.2.1 子程序24——双字节无符号数减法 36
2.2.2 子程序25——多字节无符号数减法 37
2.2.3 子程序26——双字节有符号数减法 38
2.2.4 子程序27——多字节有符号数减法 39
2.3 乘法 44
2.3.1 子程序28——双字节无符号数乘法 44
2.3.2 子程序29——多字节无符号数乘法 45
2.3.3 子程序30——双字节有符号数乘法 47
2.3.4 子程序31——多字节有符号数乘法 49
2.4 除法 52
2.4.1 子程序32——双字节无符号数除法 52
2.4.2 子程序33——多字节无符号数除法 53
2.4.3 子程序34——双字节有符号数除法 55
2.4.4 子程序35——多字节有符号数除法 56
第3章 十进制(BCD码)数运算 61
3.1 加法 62
3.1.1 子程序36——单字节加法 62
3.1.2 子程序37——双字节加法 62
3.1.3 子程序38——多字节加法 63
3.2 减法 64
3.2.1 子程序39——单字节减法 64
3.2.2 子程序40——双字节减法 64
3.2.3 子程序41——多字节减法 66
3.3 乘法 67
3.3.1 子程序42——单字节乘法 68
3.3.2 子程序43——双字节乘法 69
3.3.3 子程序44——多字节乘法 69
3.4 除法 70
3.4.1 子程序45——单字节除法 70
3.4.2 子程序46——双字节除法 72
3.4.3 子程序47——多字节除法 74
3.5 开方 77
3.5.1 子程序48——单字节开方 77
3.5.2 子程序49——双字节开方 77
3.5.3 子程序50——多字节开方 79
第4章 代码转换 83
4.1 十六进制数到ASCII码的转换实例 84
4.1.1 子程序51——一位十六进制数转换为ASCII码 84
4.1.2 子程序52——二位十六进制数转换为ASCII码 84
4.1.3 子程序53——多位十六进制数转换为ASCII码 85
4.2 ASCII码到十六进制数的转换实例 86
4.3 十六进制数到BCD码的转换实例 87
4.3.1 子程序54——单字节整数转换 87
4.3.2 子程序55——双字节整数转换 87
4.3.3 子程序56——多字节整数转换 88
4.3.4 子程序57——单字节十六进制小数转换成单字节BCD码小数 89
4.3.5 子程序58——双字节十六进制小数转换成双字节BCD码小数 90
4.3.6 子程序59——多字节十六进制小数转换成双字节BCD码小数 91
4.4 BCD码到十六制数的转换实例 94
4.4.1 子程序60——单字节整数转换 94
4.4.2 子程序61——双字节整数转换 95
4.4.3 子程序62——多字节整数转换 95
4.4.4 子程序63——小数转换 96
4.4.5 子程序64——双字节BCD码小数转换成双字节十六进制小数 97
4.5 BCD码到ASCII码转换实例 98
4.6 ASCII码到BCD码转换实例 99
4.7 二进制数到格雷码的转换实例 100
4.8 格雷码到二进制数的转换实例 100
4.8.1 子程序65——8位格雷码转换为二进制数 100
4.8.2 子程序66——9位格雷码转换为二进制数 101
第5章 数据变换 103
5.1 移位 104
5.1.1 子程序67——二进制定点数移位 104
5.1.2 子程序68——BCD码移位 104
5.2 求补 105
5.2.1 子程序69——二进制定点数求补 105
5.2.2 子程序70——BCD码求补 106
5.3 规格化 106
5.3.1 子程序71——二进制数左规 107
5.3.2 子程序72——二进制浮点数右规 108
5.3.3 子程序73——双字节定点数转换成格式化浮点数 109
5.3.4 子程序74——多字节二进制数转换为浮点数 109
5.3.5 子程序75——格式化浮点数转换成双字节定点数 111
5.3.6 子程序76——32位整数转换为4字节规格化浮点数 113
5.4 浮点数对阶 115
5.4.1 子程序77——多字节浮点数对阶 116
5.4.2 子程序78——多字节浮点数减法对阶 117
第6章 排序和查找 123
6.1 数据块的排序 124
6.1.1 子程序79——单字节无符号数据块排序 124
6.1.2 子程序80——单字节有符号数据块排序 125
6.1.3 子程序81——双字节无符号数据块排序 126
6.2 数据的查找 128
6.2.1 子程序82——单字节顺序查找 128
6.2.2 子程序83——浮点数顺序查找 128
6.2.3 子程序84——单字节折半查找 129
6.2.4 子程序85——单字节最值查找 131
6.2.5 子程序86——浮点数最值查找 134
6.2.6 子程序87——双字节字符串顺序查找 135
6.2.7 子程序88——N字节字符串顺序查找 136
6.3 线性表的排序 138
6.3.1 子程序89——插入排序 138
6.3.2 子程序90——选择排序 139
6.3.3 子程序91——冒泡排序 141
6.3.4 子程序92——并归排序 146
6.3.5 子程序93——快速排序 157
6.4 线性表的查找 160
6.4.1 子程序94——顺序查找单字节表 160
6.4.2 子程序95——顺序查找双字节表 161
6.4.3 子程序96——单字节无符号增序数据表对分查找 162
6.4.4 子程序97——双字节无符号增序数据表对分查找 163
6.4.5 子程序98——表的分块查找 164
6.4.6 子程序99——串的匹配 167
6.5 递归实例 169
6.6 递推实例 173
6.7 回溯实例 176
第7章 数学函数 181
7.1 浮点数操作与处理函数实例 182
7.1.1 子程序100——浮点数传送 182
7.1.2 子程序101——浮点数压栈 182
7.1.3 子程序102——浮点数弹栈 183
7.1.4 子程序103——浮点数代数值比较 184
7.1.5 子程序104——浮点绝对值函数 185
7.1.6 子程序105——浮点符号函数 185
7.1.7 子程序106——浮点取整函数 186
7.1.8 子程序107——浮点倒数函数 190
7.1.9 子程序108——浮点数牛顿迭代开平方 192
7.1.10 子程序109——浮点弧度数转换成浮点度数 193
7.1.11 子程序110——浮点度数转换成浮点弧度数 196
7.1.12 子程序111——最小二乘法拟合 199
7.1.13 子程序112——浮点数多项式计算 203
7.2 三角函数和反三角函数实例 205
7.2.1 子程序113——浮点正弦函数 205
7.2.2 子程序114——浮点余弦函数 214
7.2.3 子程序115——反正弦函数 217
7.2.4 子程序116——反余弦函数 219
7.2.5 子程序117——反正切函数 220
7.3 指数函数和对数函数实例 226
7.3.1 子程序118——以10为底的浮点指数函数 226
7.3.2 子程序119——以e为底的浮点指数函数 230
7.3.3 子程序120——以2为底的浮点指数函数 234
7.3.4 子程序121——以10为底的浮点对数函数 244
7.3.5 子程序122——以e为底的浮点对数函数 253
第8章 树和图 267
8.1 二叉树的遍历 268
8.1.1 子程序123——编号遍历 268
8.1.2 子程序124——前根遍历 269
8.1.3 子程序125——中根遍历 272
8.1.4 子程序126——后跟遍历 274
8.2 普通树的遍历实例 277
8.2.1 子程序127——利用父指针数组的普通树前根遍历算法 277
8.2.2 子程序128——利用子指针数组的普通树前根遍历算法 280
8.2.3 子程序129——利用子指针数组的普通树后根遍历算法 285
8.3 图的遍历实例 289
8.3.1 子程序130——利用邻接矩阵的图广度优先遍历算法 289
8.3.2 子程序131——利用邻接表的图广度优先遍历算法 293
8.3.3 子程序132——利用邻接矩阵的图深度优先遍历算法 297
8.3.4 子程序133——利用邻接表的图深度优先遍历算法 301
8.3.5 子程序134——利用邻接表图的深度优先生成树生成算法 305
8.4 网络最小生成树和最短路径实例 310
8.4.1 子程序135——利用邻接矩阵的网络最小生成树算法 310
8.4.2 子程序136——利用邻接表的图最短路径算法 314
第9章 延时与跳转控制 321
9.1 循环延时 322
9.1.1 子程序137——一重循环延时 322
9.1.2 子程序138——多重循环延时 322
9.2 简单延时 323
9.2.1 子程序139——精确延时 323
9.2.2 子程序140——突发等待延时 324
9.3 分支程序 326
9.3.1 子程序141——无条件转移 326
9.3.2 子程序142——条件分支转移 327
9.4 散转程序实例 331
9.4.1 子程序143——N种分支的散转程序 331
9.4.2 子程序144——256种分支的散转程序 332
第10章 人机交互接口 335
10.1 键盘接口 336
10.1.1 子程序145——键盘输入需要解决的问题 336
10.1.2 子程序146——独立式键盘接口 336
10.1.3 子程序147——8279键盘接口 337
10.1.4 子程序148——拨码盘接口 339
10.1.5 子程序149——键盘扫描 339
10.2 LED显示接口 341
10.2.1 子程序150——六位数码管时钟显示 341
10.2.2 子程序151——串行口扩展显示 349
10.2.3 子程序152——基于8155软件译码键盘显示 349
10.2.4 子程序153——基于8279的显示器 351
10.3 LCD显示接口 352
10.3.1 子程序154——段式LCD显示 352
10.3.2 子程序155——字符型LCD显示 353
10.3.3 子程序156——图形LCD显示 357
10.3.4 子程序157——LCD点阵字符型液晶显示 361
10.4 打印机接口实例 366
10.4.1 子程序158——LH-GP16打印机接口 366
10.4.2 子程序159——XLF微型打印机接口 368
10.5 CRT显示实例 370
第11章 单片机测控接口 375
11.1 8位A/D转换器ADC0809接口实例 376
11.2 12位A/D转换器AD578/AD678/AD1678接口实例 377
11.3 12位串行A/D转换器接口实例 378
11.4 串行A/D转换器MAX187接口实例 379
11.5 16位A/D转换器ADC1143接口实例 381
11.6 单路8位D/A转换器DAC0832接口实例 382
11.7 单路10位D/A转换器AD7520接口实例 384
11.8 12位串行D/A转换器7543接口实例 385
11.9 16位D/A转换器 AD1147接口实例 386
第12章 51单片机内部资源编程实例 389
12.1 51单片机I/O口的应用 390
12.1.1 子程序160——P1口的应用 390
12.1.2 子程序161——P0口的扩展使用 390
12.1.3 子程序162——并行I/O口编程 391
12.1.4 子程序163——单片机的FPGA并行配置 392
12.2 中断服务子程序 395
12.2.1 子程序164——利用T0、T1作为外部中断源 395
12.2.2 子程序165——INT0中断 397
12.3 定时器/计数器应用 398
12.3.1 子程序166——定时器/计数器0工作在模式0方式 398
12.3.2 子程序167——定时器/计数器0工作在模式1方式 399
12.3.3 子程序168——定时器/计数器0工作在模式2方式 400
12.3.4 子程序169——定时器/计数器0工作在模式3方式 401
12.4 程序存储器的扩展 403
12.4.1 子程序170——扩展EPROM的典型电路 403
12.4.2 子程序171——扩展EPROM的 404
12.4.3 子程序172——扩展EEPROM的典型电路 405
12.4.4 子程序173——扩展EEPROM的 405
12.5 数据存储器的扩展 406
12.5.1 子程序174——数据存储区扩展的典型电路 406
12.5.2 子程序175——扩展RAM到扩展RAM的数据复制 406
12.5.3 子程序176——扩展RAM到片内RAM数据复制 408
第13章 单片机数据传输接口 411
13.1 串行接口 412
13.1.1 子程序177——RS-232-C/RS-485接口标准 412
13.1.2 子程序178——数据传输率发生 412
13.1.3 子程序179——单片机RS-485接口 414
13.1.4 子程序180——用外部中断配合查询方式接收串行数据 418
13.1.5 子程序181——PC机和51单片机的快速串行通信 419
13.1.6 子程序182——单片机多机通信 422
13.2 USB总线接口 429
13.2.1 子程序183——USB总线协议 429
13.2.2 子程序184——通用USB程序模块 430
13.3 I2C总线接口 440
13.3.1 子程序185——基于I2C的时钟模块X1203 440
13.3.2 子程序186——用两个普通IO模拟I2C总线 443
13.4 SPI和MICROWIRE串行总线接口 447
13.4.1 子程序187——SPI和MICROWIRE串行总线协议 448
13.4.2 子程序188——SPI接口LCD显示模块EDM1079 450
13.4.3 子程序189——SPI接口语音录放模块ISD4104 452
13.4.4 子程序190——SPI接口时钟日历模块DS1302 453
13.4.5 子程序191——MICR0WIRE接口E2PR0M存储器NM93Cx6应用 457
13.5 1-WIRE总线接口 460
13.5.1 子程序192——单总线数据通信协议 460
13.5.2 子程序193——单总线数字温度传感器 460
13.6 CAN总线接口 462
13.6.1 子程序194——CAN接口汇编语言编程 463
13.6.2 子程序195——CAN接口C语言编程 474
13.7 单片机的红外接口 484
第14章 波形发生与控制实例 489
14.1 波形发生实例 490
14.1.1 子程序196——锯齿波信号发生 490
14.1.2 子程序197——单极性PWM信号发生 490
14.1.3 子程序198——正弦信号发生 491
14.2 控制实例 492
14.2.1 子程序199——位置式PID控制 492
14.2.2 子程序200——增量式PID控制 506
第15章 C51单片机软件抗干扰和数字滤波 521
15.1 单片机执行过程中的软件抗干扰措施 522
15.1.1 子程序201——采用指令冗余对程序“跑飞”的软件处理 522
15.1.2 子程序202——采用软件陷阱对程序“跑飞”的软件处理 523
15.1.3 子程序203——软件“看门狗”对程序“跑飞”的处理 526
15.1.4 子程序204——通过“复位”使系统恢复正常 527
15.2 信息冗余校验实例 528
15.2.1 子程序205——汉明码校验实例 528
15.2.2 子程序206——循环冗余校验 530
15.3 数字滤波子程序 532
15.3.1 子程序207——程序判断滤波 532
15.3.2 子程序208——中值滤波 536
15.3.3 子程序209——算术均值滤波 537
15.3.4 子程序210——加权平均滤波 546
15.3.5 子程序211——滑动平均滤波 547
15.3.6 子程序212——防脉冲干扰数字滤波 551
15.3.7 子程序213——一阶滞后滤波 552
附录1 ATMEL8051系列单片机 555
附录2 单片机常见缩略语 559
附录3 常用存储器型号 563
1.1 加法 2
1.1.1 子程序1——双字节无符号数加法 2
1.1.2 子程序2——多字节无符号数加法 3
1.1.3 子程序3——双字节有符号数加法 3
1.1.4 子程序4——多字节有符号数加法 5
1.2 减法 6
1.2.1 子程序5——双字节无符号数减法 6
1.2.2 子程序6——多字节无符号数减法 7
1.2.3 子程序7——双字节有符号数减法 8
1.2.4 子程序8——多字节有符号数减法 9
1.3 乘法 10
1.3.1 子程序9——双字节无符号数乘法 10
1.3.2 子程序10——多字节无符号数乘法 12
1.3.3 子程序11——双字节有符号数乘法 13
1.3.4 子程序12——多字节有符号数乘法 15
1.4 除法 17
1.4.1 子程序13——双字节无符号数除法 17
1.4.2 子程序14——多字节无符号数除法 19
1.4.3 子程序15——双字节有符号数除法 23
1.4.4 子程序16——多字节有符号数除法 24
1.5 开方 26
1.5.1 子程序17——单字节开方 26
1.5.2 子程序18——双字节开方 26
1.5.3 子程序19——多字节开方 27
第2章 二进制浮点数运算 31
2.1 加法 32
2.1.1 子程序20——双字节无符号数加法 32
2.1.2 子程序21——多字节无符号数加法 32
2.1.3 子程序22——双字节有符号数加法 33
2.1.4 子程序23——多字节有符号数加法 34
2.2 减法 36
2.2.1 子程序24——双字节无符号数减法 36
2.2.2 子程序25——多字节无符号数减法 37
2.2.3 子程序26——双字节有符号数减法 38
2.2.4 子程序27——多字节有符号数减法 39
2.3 乘法 44
2.3.1 子程序28——双字节无符号数乘法 44
2.3.2 子程序29——多字节无符号数乘法 45
2.3.3 子程序30——双字节有符号数乘法 47
2.3.4 子程序31——多字节有符号数乘法 49
2.4 除法 52
2.4.1 子程序32——双字节无符号数除法 52
2.4.2 子程序33——多字节无符号数除法 53
2.4.3 子程序34——双字节有符号数除法 55
2.4.4 子程序35——多字节有符号数除法 56
第3章 十进制(BCD码)数运算 61
3.1 加法 62
3.1.1 子程序36——单字节加法 62
3.1.2 子程序37——双字节加法 62
3.1.3 子程序38——多字节加法 63
3.2 减法 64
3.2.1 子程序39——单字节减法 64
3.2.2 子程序40——双字节减法 64
3.2.3 子程序41——多字节减法 66
3.3 乘法 67
3.3.1 子程序42——单字节乘法 68
3.3.2 子程序43——双字节乘法 69
3.3.3 子程序44——多字节乘法 69
3.4 除法 70
3.4.1 子程序45——单字节除法 70
3.4.2 子程序46——双字节除法 72
3.4.3 子程序47——多字节除法 74
3.5 开方 77
3.5.1 子程序48——单字节开方 77
3.5.2 子程序49——双字节开方 77
3.5.3 子程序50——多字节开方 79
第4章 代码转换 83
4.1 十六进制数到ASCII码的转换实例 84
4.1.1 子程序51——一位十六进制数转换为ASCII码 84
4.1.2 子程序52——二位十六进制数转换为ASCII码 84
4.1.3 子程序53——多位十六进制数转换为ASCII码 85
4.2 ASCII码到十六进制数的转换实例 86
4.3 十六进制数到BCD码的转换实例 87
4.3.1 子程序54——单字节整数转换 87
4.3.2 子程序55——双字节整数转换 87
4.3.3 子程序56——多字节整数转换 88
4.3.4 子程序57——单字节十六进制小数转换成单字节BCD码小数 89
4.3.5 子程序58——双字节十六进制小数转换成双字节BCD码小数 90
4.3.6 子程序59——多字节十六进制小数转换成双字节BCD码小数 91
4.4 BCD码到十六制数的转换实例 94
4.4.1 子程序60——单字节整数转换 94
4.4.2 子程序61——双字节整数转换 95
4.4.3 子程序62——多字节整数转换 95
4.4.4 子程序63——小数转换 96
4.4.5 子程序64——双字节BCD码小数转换成双字节十六进制小数 97
4.5 BCD码到ASCII码转换实例 98
4.6 ASCII码到BCD码转换实例 99
4.7 二进制数到格雷码的转换实例 100
4.8 格雷码到二进制数的转换实例 100
4.8.1 子程序65——8位格雷码转换为二进制数 100
4.8.2 子程序66——9位格雷码转换为二进制数 101
第5章 数据变换 103
5.1 移位 104
5.1.1 子程序67——二进制定点数移位 104
5.1.2 子程序68——BCD码移位 104
5.2 求补 105
5.2.1 子程序69——二进制定点数求补 105
5.2.2 子程序70——BCD码求补 106
5.3 规格化 106
5.3.1 子程序71——二进制数左规 107
5.3.2 子程序72——二进制浮点数右规 108
5.3.3 子程序73——双字节定点数转换成格式化浮点数 109
5.3.4 子程序74——多字节二进制数转换为浮点数 109
5.3.5 子程序75——格式化浮点数转换成双字节定点数 111
5.3.6 子程序76——32位整数转换为4字节规格化浮点数 113
5.4 浮点数对阶 115
5.4.1 子程序77——多字节浮点数对阶 116
5.4.2 子程序78——多字节浮点数减法对阶 117
第6章 排序和查找 123
6.1 数据块的排序 124
6.1.1 子程序79——单字节无符号数据块排序 124
6.1.2 子程序80——单字节有符号数据块排序 125
6.1.3 子程序81——双字节无符号数据块排序 126
6.2 数据的查找 128
6.2.1 子程序82——单字节顺序查找 128
6.2.2 子程序83——浮点数顺序查找 128
6.2.3 子程序84——单字节折半查找 129
6.2.4 子程序85——单字节最值查找 131
6.2.5 子程序86——浮点数最值查找 134
6.2.6 子程序87——双字节字符串顺序查找 135
6.2.7 子程序88——N字节字符串顺序查找 136
6.3 线性表的排序 138
6.3.1 子程序89——插入排序 138
6.3.2 子程序90——选择排序 139
6.3.3 子程序91——冒泡排序 141
6.3.4 子程序92——并归排序 146
6.3.5 子程序93——快速排序 157
6.4 线性表的查找 160
6.4.1 子程序94——顺序查找单字节表 160
6.4.2 子程序95——顺序查找双字节表 161
6.4.3 子程序96——单字节无符号增序数据表对分查找 162
6.4.4 子程序97——双字节无符号增序数据表对分查找 163
6.4.5 子程序98——表的分块查找 164
6.4.6 子程序99——串的匹配 167
6.5 递归实例 169
6.6 递推实例 173
6.7 回溯实例 176
第7章 数学函数 181
7.1 浮点数操作与处理函数实例 182
7.1.1 子程序100——浮点数传送 182
7.1.2 子程序101——浮点数压栈 182
7.1.3 子程序102——浮点数弹栈 183
7.1.4 子程序103——浮点数代数值比较 184
7.1.5 子程序104——浮点绝对值函数 185
7.1.6 子程序105——浮点符号函数 185
7.1.7 子程序106——浮点取整函数 186
7.1.8 子程序107——浮点倒数函数 190
7.1.9 子程序108——浮点数牛顿迭代开平方 192
7.1.10 子程序109——浮点弧度数转换成浮点度数 193
7.1.11 子程序110——浮点度数转换成浮点弧度数 196
7.1.12 子程序111——最小二乘法拟合 199
7.1.13 子程序112——浮点数多项式计算 203
7.2 三角函数和反三角函数实例 205
7.2.1 子程序113——浮点正弦函数 205
7.2.2 子程序114——浮点余弦函数 214
7.2.3 子程序115——反正弦函数 217
7.2.4 子程序116——反余弦函数 219
7.2.5 子程序117——反正切函数 220
7.3 指数函数和对数函数实例 226
7.3.1 子程序118——以10为底的浮点指数函数 226
7.3.2 子程序119——以e为底的浮点指数函数 230
7.3.3 子程序120——以2为底的浮点指数函数 234
7.3.4 子程序121——以10为底的浮点对数函数 244
7.3.5 子程序122——以e为底的浮点对数函数 253
第8章 树和图 267
8.1 二叉树的遍历 268
8.1.1 子程序123——编号遍历 268
8.1.2 子程序124——前根遍历 269
8.1.3 子程序125——中根遍历 272
8.1.4 子程序126——后跟遍历 274
8.2 普通树的遍历实例 277
8.2.1 子程序127——利用父指针数组的普通树前根遍历算法 277
8.2.2 子程序128——利用子指针数组的普通树前根遍历算法 280
8.2.3 子程序129——利用子指针数组的普通树后根遍历算法 285
8.3 图的遍历实例 289
8.3.1 子程序130——利用邻接矩阵的图广度优先遍历算法 289
8.3.2 子程序131——利用邻接表的图广度优先遍历算法 293
8.3.3 子程序132——利用邻接矩阵的图深度优先遍历算法 297
8.3.4 子程序133——利用邻接表的图深度优先遍历算法 301
8.3.5 子程序134——利用邻接表图的深度优先生成树生成算法 305
8.4 网络最小生成树和最短路径实例 310
8.4.1 子程序135——利用邻接矩阵的网络最小生成树算法 310
8.4.2 子程序136——利用邻接表的图最短路径算法 314
第9章 延时与跳转控制 321
9.1 循环延时 322
9.1.1 子程序137——一重循环延时 322
9.1.2 子程序138——多重循环延时 322
9.2 简单延时 323
9.2.1 子程序139——精确延时 323
9.2.2 子程序140——突发等待延时 324
9.3 分支程序 326
9.3.1 子程序141——无条件转移 326
9.3.2 子程序142——条件分支转移 327
9.4 散转程序实例 331
9.4.1 子程序143——N种分支的散转程序 331
9.4.2 子程序144——256种分支的散转程序 332
第10章 人机交互接口 335
10.1 键盘接口 336
10.1.1 子程序145——键盘输入需要解决的问题 336
10.1.2 子程序146——独立式键盘接口 336
10.1.3 子程序147——8279键盘接口 337
10.1.4 子程序148——拨码盘接口 339
10.1.5 子程序149——键盘扫描 339
10.2 LED显示接口 341
10.2.1 子程序150——六位数码管时钟显示 341
10.2.2 子程序151——串行口扩展显示 349
10.2.3 子程序152——基于8155软件译码键盘显示 349
10.2.4 子程序153——基于8279的显示器 351
10.3 LCD显示接口 352
10.3.1 子程序154——段式LCD显示 352
10.3.2 子程序155——字符型LCD显示 353
10.3.3 子程序156——图形LCD显示 357
10.3.4 子程序157——LCD点阵字符型液晶显示 361
10.4 打印机接口实例 366
10.4.1 子程序158——LH-GP16打印机接口 366
10.4.2 子程序159——XLF微型打印机接口 368
10.5 CRT显示实例 370
第11章 单片机测控接口 375
11.1 8位A/D转换器ADC0809接口实例 376
11.2 12位A/D转换器AD578/AD678/AD1678接口实例 377
11.3 12位串行A/D转换器接口实例 378
11.4 串行A/D转换器MAX187接口实例 379
11.5 16位A/D转换器ADC1143接口实例 381
11.6 单路8位D/A转换器DAC0832接口实例 382
11.7 单路10位D/A转换器AD7520接口实例 384
11.8 12位串行D/A转换器7543接口实例 385
11.9 16位D/A转换器 AD1147接口实例 386
第12章 51单片机内部资源编程实例 389
12.1 51单片机I/O口的应用 390
12.1.1 子程序160——P1口的应用 390
12.1.2 子程序161——P0口的扩展使用 390
12.1.3 子程序162——并行I/O口编程 391
12.1.4 子程序163——单片机的FPGA并行配置 392
12.2 中断服务子程序 395
12.2.1 子程序164——利用T0、T1作为外部中断源 395
12.2.2 子程序165——INT0中断 397
12.3 定时器/计数器应用 398
12.3.1 子程序166——定时器/计数器0工作在模式0方式 398
12.3.2 子程序167——定时器/计数器0工作在模式1方式 399
12.3.3 子程序168——定时器/计数器0工作在模式2方式 400
12.3.4 子程序169——定时器/计数器0工作在模式3方式 401
12.4 程序存储器的扩展 403
12.4.1 子程序170——扩展EPROM的典型电路 403
12.4.2 子程序171——扩展EPROM的 404
12.4.3 子程序172——扩展EEPROM的典型电路 405
12.4.4 子程序173——扩展EEPROM的 405
12.5 数据存储器的扩展 406
12.5.1 子程序174——数据存储区扩展的典型电路 406
12.5.2 子程序175——扩展RAM到扩展RAM的数据复制 406
12.5.3 子程序176——扩展RAM到片内RAM数据复制 408
第13章 单片机数据传输接口 411
13.1 串行接口 412
13.1.1 子程序177——RS-232-C/RS-485接口标准 412
13.1.2 子程序178——数据传输率发生 412
13.1.3 子程序179——单片机RS-485接口 414
13.1.4 子程序180——用外部中断配合查询方式接收串行数据 418
13.1.5 子程序181——PC机和51单片机的快速串行通信 419
13.1.6 子程序182——单片机多机通信 422
13.2 USB总线接口 429
13.2.1 子程序183——USB总线协议 429
13.2.2 子程序184——通用USB程序模块 430
13.3 I2C总线接口 440
13.3.1 子程序185——基于I2C的时钟模块X1203 440
13.3.2 子程序186——用两个普通IO模拟I2C总线 443
13.4 SPI和MICROWIRE串行总线接口 447
13.4.1 子程序187——SPI和MICROWIRE串行总线协议 448
13.4.2 子程序188——SPI接口LCD显示模块EDM1079 450
13.4.3 子程序189——SPI接口语音录放模块ISD4104 452
13.4.4 子程序190——SPI接口时钟日历模块DS1302 453
13.4.5 子程序191——MICR0WIRE接口E2PR0M存储器NM93Cx6应用 457
13.5 1-WIRE总线接口 460
13.5.1 子程序192——单总线数据通信协议 460
13.5.2 子程序193——单总线数字温度传感器 460
13.6 CAN总线接口 462
13.6.1 子程序194——CAN接口汇编语言编程 463
13.6.2 子程序195——CAN接口C语言编程 474
13.7 单片机的红外接口 484
第14章 波形发生与控制实例 489
14.1 波形发生实例 490
14.1.1 子程序196——锯齿波信号发生 490
14.1.2 子程序197——单极性PWM信号发生 490
14.1.3 子程序198——正弦信号发生 491
14.2 控制实例 492
14.2.1 子程序199——位置式PID控制 492
14.2.2 子程序200——增量式PID控制 506
第15章 C51单片机软件抗干扰和数字滤波 521
15.1 单片机执行过程中的软件抗干扰措施 522
15.1.1 子程序201——采用指令冗余对程序“跑飞”的软件处理 522
15.1.2 子程序202——采用软件陷阱对程序“跑飞”的软件处理 523
15.1.3 子程序203——软件“看门狗”对程序“跑飞”的处理 526
15.1.4 子程序204——通过“复位”使系统恢复正常 527
15.2 信息冗余校验实例 528
15.2.1 子程序205——汉明码校验实例 528
15.2.2 子程序206——循环冗余校验 530
15.3 数字滤波子程序 532
15.3.1 子程序207——程序判断滤波 532
15.3.2 子程序208——中值滤波 536
15.3.3 子程序209——算术均值滤波 537
15.3.4 子程序210——加权平均滤波 546
15.3.5 子程序211——滑动平均滤波 547
15.3.6 子程序212——防脉冲干扰数字滤波 551
15.3.7 子程序213——一阶滞后滤波 552
附录1 ATMEL8051系列单片机 555
附录2 单片机常见缩略语 559
附录3 常用存储器型号 563
猜您喜欢