标题：单片机C语言程序设计完全自学手册
图书信息
作　者：郭惠，吴迅编著
出 版 社： 电子工业出版社
出版时间： 2008-10-1
页　数： 400页
开　本： 16开
I S B N ： 9787121071676
分类： 图书 >> 计算机/编程 >> 程序设计/Visual Basic 
定价：￥49.00元（含光盘1张）
内 容 简 介

本书以“基础、实用”为原则，通过基础知识与大量实例结合的形式，详细介绍了单片机C语言应用开发的各种方法和技巧。全书分为12章，前6章讲述单片机概述硬件结构、指令系统、C语言程序设计基础、常用开发工具、C语言与汇编混合编程等知识；后6章重点介绍单片机软硬件开发流程、常用单元模块设计、应用系统设计实例、扩展设计、系统设计经验总结以及RTX51实时操作系统等内容。读者通过学习，可以快速入门和提高。
本书语言简洁，内容安排从零开始、由浅入深、循序渐进。实例典型丰富，代表性和指导性强，涵盖了单片机C语言开发的大多数应用领域和开发技术。同时本书对程序开发的关键细节做了深入解释，程序代码进行详细注释，利于读者掌握牢固、学懂学透，达到举一反三的效果。
本书附有光盘，其中包括丰富的硬件原理图和程序源代码，方便读者学习和参考。本书适合从事单片机系统开发的初级设计人员，以及计算机、电子信息及相关专业的在校大学生使用。
前 言

1971年微处理器研制成功不久，就出现了单片微型计算机（即单片机）技术。随着科学技术的日新月异，单片机从一开始的8位单片机发展到现在的16位、32位等诸多系列。单片机种类很多，常见的有51系列、AVR系列、PIC系列等。其中，51系列单片机由于其灵活方便、价格便宜的优点，成为工程应用最广泛的单片机，是大学里电子、自动化及相关专业的必修课。至今为止，其他任何一个单片机系列都无法与其媲美。
单片机系统的开发是硬件、软件相结合的过程，技术性较强。要完成单片机系统的开发，用户需要了解单片机的硬件结构、指令系统、C语言编程，掌握单片机开发工具，学习基本模块与综合系统的设计方法，包括扩展设计等内容。目前市场上关于单片机入门学习的书，要么内容不够全面、要么实用性不强，或者就是结构不合理、讲解方式不易学等，因此本书安排从零开始、由简到难，详细深入介绍单片机C语言应用开发的各种方法和技巧。
本书内容
本书以“基础、实用”为原则，通过基础知识与大量实例结合的形式，详细介绍了单片机C语言应用开发的各种方法和技巧。本书共分为12章，主要内容安排如下图所示。
光盘介绍
本书附光盘1张，包括丰富的硬件原理图和程序源代码，方便读者学习和参考。本书适合从事单片机系统开发的初级设计人员，以及计算机、电子信息及相关专业的在校大学生使用。
1．光盘的组成内容
该光盘包括2部分内容：“第9章的程序代码和电路原理图”、“部分插图”。其中：
“程序代码和电路图”文件夹里面内容为各实例章节的程序源代码，以及相应的电路原理图（由Protel 99软件制成，读者需要安装此软件来打开）。
“部分插图”文件夹里面内容为第9章、第10章的插图，为BMP格式。
2．光盘的使用说明
光盘里面的程序需要采用C语言的编译软件打开阅读，也可以使用“UltraEdit”等软件打开阅读或者编辑。
3．系统要求
操作系统推荐为Windows 2000或者Windows XP系统，但不能是Linux或者UNIX系统。
本书特色
与同类51单片机相比，本书具有以下特色。
内容系统、全面，基础知识、开发工具和大量实例结合介绍，实践和应用性强。
内容从零开始、循序渐进，概念和设计思想讲解透彻，代码注释详细深入，便于读者举一反三。
光盘中包含了丰富的实例硬件原理图和程序源代码，读者稍加修改，便可应用于实际的工作中或者完成自己的课题设计。
致谢
本书主要由郭惠、吴迅编写，参加编写的人员还有：廖日坤、金镇、李宁宇、黄小惠、廖济林、庞丽梅、邱远彬、黄桂群、刘伟捷、黄乘传、黄小欢、李彦超、付军鹏、张广安、张洪波、贾素龙、李焱冰、王艳波、张剑等人，他们在资料收集、整理和技术支持方面做了大量的工作，在此一并向他们表示感谢！
由于时间仓促，加之作者的水平有限，书中难免存在一些不足之处，欢迎广大读者批评指正，jsj@phei.com.cn。
目 录

基础篇 51单片机
第1章 单片机概述 1
1.1 单片机的发展历史 1
1.2 单片机现状与趋势 2
1.3 单片机系统分类 4
1.3.1 MCS-51单片机 5
1.3.2 AVR单片机 5
1.3.3 PIC单片机 6
1.4 单片机系统功能及应用 7
1.4.1 单片机系统硬件开发原理 7
1.4.2 单片机系统软件开发原理 8
1.4.3 单片机系统应用领域 9
1.5 本章总结 10
1.6 思考与练习题 10
第2章 51单片机的硬件结构 11
2.1 引脚及其功能 11
2.2 内部结构 13
2.2.1 功能模块 13
2.2.2 CPU 13
2.2.3 并行I/O端口 15
2.2.4 存储器结构 17
2.2.5 定时/计数器 21
2.2.6 串行口 26
2.2.7 中断系统 32
2.3 本章总结 34
2.4 思考与练习题 34
第3章 51单片机工作方式和指令系统 36
3.1 单片机的工作方式 36
3.1.1 复位方式 36
3.1.2 程序执行方式 37
3.1.3 低功耗方式 38
3.1.4 编程方式 39
3.2 单片机指令系统简介 40
3.3 单片机的寻址方式 41
3.4 单片机的指令格式与符号 44
3.4.1 指令格式 44
3.4.2 符号说明 57
3.5 本章总结 61
3.6 思考与练习题 61
进阶篇 C语言开发
第4章 C语言程序设计基础 63
4.1 标识符与关键字 63
4.2 运算符与表达式 63
4.2.1 运算符分类与优先级 64
4.2.2 算术运算符与表达式 64
4.2.3 关系运算符与表达式 65
4.2.4 逻辑运算符与表达式 65
4.2.5 位操作运算符与表达式 66
4.2.6 赋值运算符与表达式 66
4.3 数据类型 67
4.4 变量与常量 70
4.5 数组与指针 74
4.5.1 数组 74
4.5.2 指针 78
4.6 结构变量 82
4.6.1 结构类型及变量的定义 82
4.6.2 结构类型变量的使用 84
4.6.3 结构数组和结构指针 84
4.7 共用体 86
4.8 枚举 88
4.9 程序结构与函数 89
4.9.1 程序结构 89
4.9.2 函数 90
4.10 流程控制语句 97
4.10.1 选择语句 98
4.10.2 循环语句 101
4.10.3 转移语句 104
4.11 本章总结 105
4.12 思考与练习题 106
第5章 单片机常用开发工具 107
5.1 编程器概述 107
5.2 编程器的安装与使用举例 108
5.3 仿真器 111
5.3.1 仿真器概述 111
5.3.2 仿真器安装和使用举例 112
5.4 Keil 8051 C编译器 116
5.4.1 Keil 8051 C编译器简介 116
5.4.2 Keil Vision集成开发环境 117
5.4.3 Keil dScope 仿真调试 123
5.5 本章总结 129
5.6 思考练习题 129
第6章 C语言与汇编语言
混合编程 130
6.1 单片机汇编程序设计 130
6.2 汇编与C语言混合编程技术 134
6.2.1 函数名转换规则 134
6.2.2 函数及相关段的命名规则 135
6.2.3 参数传递规则 136
6.2.4 段和局部变量 137
6.2.5 变量地址设置 138
6.2.6 汇编语言和C语言的互访 140
6.2.7 内联汇编代码 144
6.2.8 仿真多级中断 147
6.2.9 时序问题 148
6.3 C语言与汇编语言
混合编程实例 152
6.4 本章总结 156
6.5 思考与练习题 157
实践篇 常用模块
第7章 单片机软硬件开发流程 158
7.1 单片机系统设计分析 158
7.2 单片机软件开发流程 160
7.3 单片机硬件开发流程 167
7.4 本章总结 170
7.5 思考与练习题 170
第8章 单片机常用单元模块
设计与实例 171
8.1 键盘输入单元模块 171
8.1.1 行列式键盘 171
8.1.2 键识别方法 172
8.1.3 键识别法举例 173
8.1.4 程序代码与注释 176
8.2 数码显示单元模块 178
8.2.1 如何驱动8段数码管 178
8.2.2 8段数码管动态显示举例 179
8.2.3 程序代码与注释 182
8.3 液晶显示单元模块 182
8.3.1 液晶模块分类 183
8.3.2 液晶模块的电源设计 184
8.3.3 如何显示液晶模块 186
8.3.4 液晶显示模块举例 188
8.3.5 程序代码及注释 189
8.4 数学运算 196
8.4.1 限幅滤波算法 197
8.4.2 中值滤波算法 197
8.4.3 算术平均滤波算法 198
8.4.4 加权平均滤波算法 199
8.4.5 滑动平均滤波算法 199
8.5 中断单元模块 200
8.5.1 中断概念 200
8.5.2 MCS-51单片机的中断系统 201
8.5.3 中断响应的条件、过程与时间 204
8.5.4 中断请求的撤销 205
8.5.5 中断编程举例 206
8.5.6 程序代码及注释 207
8.6 定时器与计数器模块 208
8.6.1 定时器与计数器的结构及工作原理 209
8.6.2 定时器与计数器的方式寄存器和控制寄存器 210
8.6.3 定时器与计数器的工作方式 211
8.6.4 定时器与计数器的举例 214
8.6.5 程序代码与注释 216
8.7 ROM/RAM存储模块 217
8.7.1 存储器概述 217
8.7.2 MCS-51单片机存储器 218
8.7.3 MCS-51单片机存储器的扩展 225
8.7.4 存储器的扩展应用举例 227
8.8 A/D转换模块 230
8.8.1 A/D转换器概述 230
8.8.2 典型A/D转换器芯片ADC0809简介 230
8.8.3 MCS-51单片机与ADC0809的接口 233
8.8.4 A/D转换应用举例 235
8.8.5 程序代码及注释 236
8.9 D/A转换模块 237
8.9.1 D/A转换器概述 237
8.9.2 典型D/A转换器芯片DAC0832简介 238
8.9.3 MCS-51单片机与DAC0832的接口 239
8.9.4 D/A转换应用举例 241
8.9.5 程序代码及注释 242
8.10 看门狗监控模块 243
8.10.1 看门狗工作原理 243
8.10.2 硬件看门狗 244
8.10.3 软件看门狗 247
8.11 串行通信接口模块 248
8.11.1 单片机串行通信的原理 249
8.11.2 单片机串行通信举例 251
8.11.3 程序代码及注释 253
8.12 本章总结 255
实战篇 应用系统设计
第9章 单片机应用系统设计实例 256
9.1 步进电机控制系统的设计 256
9.1.1 实例说明 256
9.1.2 设计思路分析 257
9.1.3 硬件电路设计 262
9.1.4 软件设计 266
9.1.5 实例总结 269
9.2 基于H6152的智能卡
9.2 读写系统设计 270
9.2.1 实例说明 270
9.2.2 设计思路分析 271
9.2.3 硬件电路设计 274
9.2.4 软件设计 277
9.2.5 实例总结 291
9.3 SPI总线通信系统设计 291
9.3.1 实例说明 291
9.3.2 设计思路分析 292
9.3.3 硬件电路设计 294
9.3.4 软件设计 294
9.3.5 实例总结 299
提高篇 扩展与经验
第10章 单片机系统扩展 300
10.1 总线的扩展设计 300
10.2 存储器的扩展设计 305
10.2.1 程序存储器的扩展设计 306
10.2.2 数据存储器的扩展设计 309
10.3 接口的扩展设计 313
10.3.1 扩展串行I/O口 313
10.3.2 扩展并行I/O口 316
10.4 本章总结 322
10.5 思考与练习题 322
第11章 单片机C语言设计
经验归纳 323
11.1 系统方案的选择 323
11.2 硬件系统的稳定性 324
11.3 编程技巧与程序优化 325
11.3.1 编程技巧 325
11.3.2 程序优化 328
11.4 系统抗干扰处理 328
11.4.1 系统硬件抗干扰设计 328
11.4.2 软件系统的稳定性 329
11.4.3 软件系统的安全性 331
11.5 本章总结 331
第12章 RTX51实时多任务操作系统 332
12.1 RTX51概述 332
12.1.1 RTX51入门知识 332
12.1.2 单任务程序 333
12.1.3 时间片轮转程序 333
12.1.4 用RTX51进行循环调度 334
12.1.5 RTX51事件 335
12.1.6 编译和连接 337
12.2 系统要求和任务定义 339
12.3 建立RTX51 Tiny应用程序 343
12.3.1 RTX51 Tiny配置 343
12.3.2 RTX51 Tiny程序的
12.3.2 编译和连接 345
12.3.3 优化RTX51 Tiny程序 345
12.4 RTX51 Tiny系统函数详解 345
12.5 堆栈处理与系统调试 352
12.5.1 堆栈管理 352
12.5.2 用dScope-51进行调试 352
12.6 RTX51系统应用实例 353
12.6.1 RTX_EX1：第一个RTX51程序 354
12.6.2 RTX_EX2：一个简单的RTX51应用程序 355
12.6.3 TRAFFIC：交通灯控制器 357
12.7 本章总结 371
附录A 全书练习题答案 372
附录B 单片机断电保护方法归纳 379