第一部分 Cx51基础篇
第一章 单片机基础知识
1.1 8051单片机的特点
1.2 8051的内部结构
1.2.1 中央处理器
1.2.2 存储器组织
1.2.3 片内并行接口
1.2.4 8051的内部资源
1.2.5 8051的芯片引脚
1.2.6 单片机的工作方式
1.3 8051的系统扩展
1.3.1 外部总线的扩展
1.3.2 外部程序存储器的扩展
1.3.3 外部数据存储器的扩展
1.4 8051指令系统
1.4.1 寻址方式
1.4.2 指令说明
1.4.3 伪指令
1.4.4 指令系统表
1.5 实用程序设计
第二章 C与8051
2.1 8051的编程语言
2.2 Cx51编译器
2.3 KEIL 8051开发工具
2.4 KEIL Cx51编程实例
2.5 Cx51程序结构
第三章 Cx51数据与运算
3.1 数据与数据类型
3.2 常量与变量
3.3 Cx51数据的存储类型与8051存储器结构
3.4 8051特殊功能寄存器(SFR)及其Cx51定义
3.5 8051并行接口及其Cx51定义
3.6 位变量(BIT)及其Cx51定义
3.7 Cx51运算符、表达式及其规则
3.7.1 Cx51算术运算符及其表达式
3.7.2 Cx51关系运算符、表达式及优先级
3.7.3 Cx51逻辑运算符、表达式及优先级
3.7.4 Cx51位操作及其表达式
3.7.5 自增减运算符、复合运算符及其表达式
第四章 Cx51流程控制语句
4.1 C语言程序的基本结构及流程图
4.1.1 顺序结构及其流程图
4.1.2 选择结构及其流程图
4.1.3 循环结构及其流程图
4.2 选择语句
4.2.1 选择语句 if
4.2.2 switch/case语句
4.3 循环语句
4.3.1 while语句
4.3.2 do while语句
4.3.3 for循环语句
第五章 Cx51构造数据类型
5.1 数组
5.1.1 一维数组
5.1.2 二维数组
5.1.3 字符数组
5.1.4 查表
5.1.5 数组与存储空间
5.2 指针
5.2.1 指针的基本概念
5.2.2 数组指针和指向数组的指针变量
5.2.3 指向多维数组的指针和指针变量
5.2.4 关于KEIL Cx51的指针类型
5.3 结构
5.3.1 结构的定义和引用
5.3.2 结构数组
5.3.3 指向结构类型数据的指针
5.4 共用体
5.5 枚举
第六章 Cx51函数
6.1 函数的分类
6.2 函数的定义
6.3 函数的参数和函数值
6.4 函数的调用
6.4.1 函数调用的一般形式
6.4.2 函数调用的方式
6.4.3 对被调用函数的说明
6.4.4 函数的嵌套和递归调用
6.4.5 函数的递归调用
6.4.6 用函数指针变量调用函数
6.5 数组、指针作为函数的参数
6.5.1 用数组作为函数的参数
6.5.2 用指向函数的指针变量作为函数的参数
6.5.3 用指向结构的指针变量作为函数的参数
6.5.4 返回指针的函数
第二部分 Cx51工具篇
第七章 μVision2集成开发环境
7.1 菜单栏命令
7.2 创建应用
7.2.1 创建项目
7.2.2 项目目标和文件组
7.2.3 配置对话框
7.2.4 代码分体
7.2.5 μVision2工具
7.2.6 编写优化代码
7.2.7 技巧和诀窍
7.3 调试程序
7.3.1 μVision2调试器
7.3.2 Debug命令
7.3.3 表达式
7.3.4 技巧和诀窍
7.4 μVision2调试函数
7.4.1 创建和调用函数
7.4.2 函数分类
7.4.3 调试函数和C之间的区别
7.4.4 μVision2调试器和dScope之间的差别
7.5 样例程序
7.5.1 第一个8051 C程序HELLO
7.5.2 远程测量系统MEASURE
7.6 使用Monitor51
第八章 Cx51编译器
8.1 Cx51编译器控制命令
8.2 Cx51语言扩展
8.2.1 关键字
8.2.2 存储区
8.2.3 外部数据存储器
8.2.4 存储模式
8.2.5 存储类型
8.2.6 数据类型
8.2.7 位类型
8.2.8 可位寻址对象
8.2.9 特殊功能寄存器
8.2.10 绝对变量定位
8.2.11 指针
8.2.12 函数声明
8.3 预处理器
8.3.1 预处理命令
8.3.2 字符串化操作符
8.3.3 标记合并操作符
8.3.4 预定义宏常量
8.4 支持的8051派生产品
8.4.1 AD公司ADμC微转换器B2 系列产品
8.4.2 Atmel公司89x8252及其派生产品
8.4.3 Dallas公司80C320,80C420,80C520和80C530
8.4.4 Dallas公司80C390,80C400,5240及其派生产品
8.4.5 Infineon公司C517, C517A, C509,80C537及其派生产品
8.4.6 Philips公司8xC750, 8xC751 和8xC752
8.4.7 Philips公司80C51MX体系结构
8.4.8 Philips和Atmel公司WM 的双数据指针
8.5 高级编程技术
8.5.1 配置文件
8.5.2 优化器
8.5.3 段的命名规约
8.5.4 C与汇编程序的接口
8.5.5 C与PL/M51程序的接口
8.5.6 数据存储格式
8.5.7 访问绝对存储器地址
8.5.8 调试
8.6 Cx51运行库
8.6.1 内部函数
8.6.2 库文件
8.6.3 标准类型
8.6.4 绝对存储器访问宏
8.6.5 函数分类
8.6.6 头文件
第九章 Ax51宏汇编器
9.1 汇编伪指令
9.1.1 段控制伪指令
9.1.2 符号定义
9.1.3 存储区初始化
9.1.4 保留存储区
9.1.5 过程声明
9.1.6 程序链接
9.1.7 地址控制
9.1.8 其他伪指令
9.2 宏定义和宏调用
9.2.1 标准宏伪指令
9.2.2 宏定义
9.2.3 运算符
9.2.4 宏调用
9.2.5 C宏
9.3 调用和控制
9.3.1 汇编控制命令
9.3.2 条件汇编的控制
第十章 链接器/定位器和实用工具
10.1 链接器/定位器Lx51
10.2 链接器/定位器的控制命令
10.2.1 列表文件控制
10.2.2 输出文件控制
10.2.3 段和位置控制
10.2.4 高级语言控制
10.3 库管理器LIBx51
10.4 ObjectHex转换器
10.4.1 使用OHx51
10.4.2 使用OC51
第三部分 Cx51应用篇
第十一章 模块化程序设计
11.1 基本概念
11.2 模块化程序开发过程
11.3 汇编和编译
11.4 覆盖和共享
11.5 库和链接器/定位器
11.5.1 库
11.5.2 链接器/定位器
11.6 混合编程
11.7 程序优化
第十二章 8051内部资源的C编程
12.1 中断
12.2 定时器/计数器
12.3 串行口
12.4 8051派生产品的内部资源
12.5 多机通信
第十三章 8051扩展资源的C编程
13.1 可编程外围定时器8253
13.2 可编程外围并行接口8255
13.3 实时时钟/日历芯片146818
13.4 8位D/A芯片DAC0832
13.5 12位D/A芯片AD7521
13.6 8位A/D芯片ADC0809
13.7 12位A/D芯片AD574
13.8 可编程键盘/显示接口芯片8279
13.9 字符型LCD显示模块
13.10 点阵型LCD显示模块
第十四章 RTX51实时多任务操作系统
14.1 RTX51概述
14.2 要求和定义
14.3 创建RTX51 Tiny应用程序
14.4 RTX51 Tiny的系统函数
14.5 堆栈处理
14.6 样例程序和系统调试
14.6.1 交通灯控制器
14.6.2 系统调试
附录AKEIL Cx51与ANSI C的不同
附录BKEIL Cx51的版本差异
附录C代码优化
附录D编译器限制
附录E提示和技巧
附录F库函数参考
参考文献