前言页 1
第1章 8051单片机与C51语言的基础 1
1.1 8051单片机的基本结构与存储器组织 1
1.2 C51语言的特点 4
1.2.1 概念 4
1.2.2 C51的基本程序结构 6
1.2.3 Windows环境下的编程和调试 8
第2章 C51程序设计基础 14
2.1 标识符关键字 14
2.2.1 数据类型 16
2.2 C51程序设计的基本语法 16
2.2.2 常量 18
2.2.3 变量及其存储模式 19
2.2.4 用typedef重新定义数据类型 23
2.2.5 运算符与表达式 24
2.2.6 基本语句 35
2.3 函数 46
2.3.1 函数的定义 46
2.3.2 函数的调用 48
2.3.3 函数的递归调用与再入函数 53
2.3.4 中断服务函数与寄存器组定义 54
2.3.5 函数变量的存储方式 58
2.4 数组与指针 66
2.3.6 函数的参数和局部变量的存储器模式 66
2.4.1 数组的定义与引用 67
2.4.2 字符数组 68
2.4.3 数组作为函数的参数 71
2.4.4 指针的概念 73
2.4.5 数组的指针 84
2.4.6 指针的地址计算 86
2.4.7 函数型指针 88
2.4.8 返回指针型数据的函数 90
2.4.9 指针数组与指针型指针 91
2.4.10 抽象型指针 97
2.5.1 结构变量的定义与引用 100
2.5 结构与联合 100
2.5.2 结构变量的初值 103
2.5.3 结构数组 103
2.5.4 结构型指针 104
2.5.5 结构与函数 106
2.5.6 联合变量的定义与引用 109
2.6 预处理器 113
2.6.1 宏定义 114
2.6.2 文件包含 118
2.6.3 条件编译 118
2.6.4 其他预处理命令 120
3.1 文件管理编译环境μVision51 122
第3章 Windows集成开发环境 122
3.2 μVision51的下拉菜单 123
3.2.1 File菜单 124
3.2.2 Edit菜单 124
3.2.3 Project菜单 126
3.2.4 Run菜单 128
3.2.5 Options菜单 129
3.2.6 Tools菜单 138
3.2.7 Window菜单 138
3.2.8 Help菜单 139
3.3 软件仿真器dScope51 139
3.3.1 File菜单 139
3.3.2 View菜单 141
3.3.3 Setup菜单 149
3.3.4 Peripherals菜单 155
3.3.5 Help菜单 157
3.4 CPU动态驱动库文件 157
3.4.1 8051.DLL/8052.DLL 157
3.4.2 8051Fx.DLL 158
3.4.3 80515.DLL/80515A.DLL 158
3.4.4 80517.DLL/80517A.DLL 159
3.4.5 80552.DLL 160
3.4.6 80751.DLL 161
3.4.9 80320.DLL 162
3.4.7 80781.DLL 162
3.4.8 80410.DLL 162
3.5 dScope51的命令 163
3.5.1 显示和更新存储器内容命令 163
3.5.2 用户程序执行控制命令 168
3.5.3 断点管理命令 170
3.5.4 其他通用命令 173
3.6 dScope51的表达式 180
3.6.1 表达式的组成 180
3.6.2 dScope51表达式与C语言表达式之间的差别 185
3.6.3 dScope51表达式应用示例 185
3.7.1 用户函数 189
3.7 dScope51的函数 189
3.7.2 内部函数 192
3.7.3 信号函数 195
3.7.4 dScope51函数与C51函数的差别 197
第4章 C51编译器 198
4.1 C51编译器控制命令详解 200
4.1.1 源控制命令 200
4.1.2 列表控制命令 200
4.1.3 目标控制命令 206
4.2.1 数据在内存中的存储格式 224
4.2 C51编译器的数据调用协议 224
4.2.2 目标代码的段管理 225
4.2.3 再入函数的栈结构 227
4.2.4 与汇编语言程序的接口 228
4.2.5 与PL/M51语言程序的接口 241
4.2.6 配置文件 241
4.2.7 C51编译器的限制 250
4.3 C51的库函数 251
4.3.1 字符函数CTYPE.H 252
4.3.2 一般I/O函数STDIO.H 258
4.3.3 字符串函数STRING.H 266
4.3.4 标准函数STDLIB.H 273
4.3.5 数学函数MATH.H 277
4.3.6 绝对地址访问ABSACC.H 284
4.3.7 内部函数INTRINS.H 285
4.3.8 变量参数表STDARG.H 287
4.3.9 全程跳转SETJMP.H 288
4.3.10 访问SFR和SFR_bit地址的REGxxx.H 289
4.4 C51编译器的特殊支持 290
4.4.1 具有双数据指针的AMD/DALLAS单片机 290
4.4.2 具有高速算术处理器的SIEMENS单片机 290
4.4.3 具有2KB片内ROM的PHILIPS单片机 296
第5章 宏汇编器A51 301
5.1 符号与表达式 303
5.2 汇编伪指令 305
5.2.1 符号定义指令 305
5.2.2 保留和初始化存储器空间的指令 308
5.2.3 控制程序连接的指令 309
5.2.4 控制汇编状态的指令 310
5.2.5 段选择指令 311
5.3 宏处理 312
5.3.1 宏定义 312
5.3.2 宏调用 315
5.3.3 应用实例 316
5.4 汇编控制命令 319
5.4.1 首要控制命令 320
5.4.2 一般控制命令 323
5.4.3 条件汇编命令 324
第6章 目标文件的连接与转换 327
6.1 连接定位器BL51 327
6.2 连接定位控制命令详解 331
6.2.1 列表控制命令 331
6.2.2 连接控制命令 332
6.2.3 定位控制命令 333
6.2.4 高级语言控制命令 336
6.2.5 分组控制命令 355
6.2.6 BL51的分组配置 358
6.2.7 RTX51控制命令 389
6.3 符号转换程序 389
6.3.1 Intel HEX文件转换程序OH51 389
6.3.2 分组目标文件转换程序OC51 390
6.4 库管理器LIB51 391
第7章 RTX51实时多任务操作系统 393
7.1 RTX51一般介绍 393
7.2 RTX51技术参数 397
7.3 使用RTX51 TINY的要求和限定 399
7.4 RTX51 TINY的任务管理 400
7.5 RTX51 TINY的配置 401
7.6 RTX51 TINY的系统函数 403
7.7 RTX51 TINY的系统调试 408
第8章 Windows环境下C51应用编程技巧与实例 421
8.1 Windows集成开发环境的基本应用 421
8.1.1 工作环境与控制命令设置 421
8.1.2 编写C51应用程序的基本原则 430
8.2 C51应用中的一些常见问题与解决方法 432
8.2.1 C51程序设计中容易出错的地方 432
8.2.2 有关C51的若干实际应用技巧 434
8.3 8051单片机串行接口扩展应用编程 439
8.3.1 用8051串行口扩展的矩阵键盘 439
8.3.2 利用8051串行口实现多机通信 441
8.3.3 串行接口5位LED驱动器MC14489的应用 443
8.4 软件模拟I2C总线的C51读写程序 447
8.4.1 I2C总线简介 447
8.4.2 I2C总线通用读写程序 450
8.5 8051单片机并行接口扩展应用编程 457
8.5.1 打印输出接口及其驱动程序 457
8.5.2 D/A及A/D转换接口及其驱动程序 460
8.5.3 用可编程芯片8155实现I/O接口扩展 464
8.6 80C552单片机中A/D转换器的应用 479
8.6.1 80C552单片机简介 479
8.6.2 80C552内部ADC的应用 481
8.6.3 使用80C552内部ADC时印刷电路板的设计要点 484
8.6.4 使用80C552内部ADC的C51驱动程序 486
8.7 87C752单片机在气流量测量中的应用 492
8.7.1 87C752单片机简介 492
8.7.2 气流量测量仪表的硬件设计 497
8.7.3 气流量测量仪表的软件设计 499
附录A Keil C51与ANSI C的差别 510
附录B Keil C51不同版本的差别 511
附录C 代码优化 514
附录D 关于配套光盘及硬件评估板 517
参考文献 518