第1章 单片机的发展 1
1.1单片机技术的发展概况 1
1.2单片机的主流产品系列 1
1.3单片机的应用领域及其意义 2
第2章 MCS-51单片机的基础知识 3
2.1 8051单片机的硬件特点 3
2.2 8051单片机的硬件结构 3
2.2.1引脚及片外总线描述 3
2.2.2内部总体结构 5
2.2.3中央处理器及其振荡器、时钟电路和CPU时序 6
2.2.4复位状态及几种复位电路的设计 9
2.2.5存储器、特殊功能寄存器及地址空间 10
2.2.6输入/输出(1/O)接口 13
2.3串行接口与定时/计数器 15
2.3.1串行接口简介 15
2.3.2定时/计数器的结构 17
2.3.3定时/计数器的4种工作方式 18
2.3.4定时/计数器对输入信号的要求 20
2.3.5定时/计数器应用实例 20
2.4中断系统 22
2.4.1中断源 22
2.4.2中断控制 23
2.4.3中断响应过程 24
2.4.4外部中断响应时间 25
2.4.5外部中断方式的选择 25
第3章 8051单片机指令系统 26
3.1指令系统概述 26
3.1.1指令格式 26
3.1.2指令的3种表示形式 26
3.1.3指令的字节数 27
3.1.4指令的分类 27
3.2寻址方式 27
3.2.1立即寻址 27
3.2.2直接寻址 28
3.2.3寄存器寻址方式 29
3.2.4寄存器间接寻址方式 29
3.2.5变址寻址方式 30
3.2.6相对寻址方式 30
3.2.7位寻址方式 30
3.3数据传送指令 30
3.3.1内部数据传送指令 30
3.3.2外部传送指令 32
3.3.3堆栈操作指令 32
3.3.4数据交换指令 33
3.4算术与逻辑运算和移位指令 33
3.4.1算术运算指令 33
3.4.2逻辑运算指令 36
3.5控制转移和位操作指令 38
3.5.1控制转移指令 38
3.5.2位操作指令 42
第4章 汇编语言程序设计 44
4.1汇编语言的构成 44
4.1.1程序设计语言 44
4.1.2汇编语言的格式 45
4.1.3伪指令 45
4.2汇编语言源程序的设计与汇编 47
4.2.1汇编语言源程序的设计步骤 48
4.2.2汇编语言程序的汇编 48
4.3简单程序与分支程序的设计 48
4.3.1简单程序设计 49
4.3.2分支程序设计 49
4.4循环与查表程序设计 51
4.4.1循环程序设计 52
4.4.2查表程序设计 53
4.5子程序与运算程序设计 54
4.5.1子程序设计 54
4.5.2运算程序设计 56
第5章 C51程序设计基础 59
5.1标识符与关键字 59
5.2数据类型 60
5.3常量 62
5.4变量及其存储模式 63
5.5用typedef重新定义数据类型 65
5.6运算符与表达式 66
5.7基本语句 73
5.7.1表达式语句 73
5.7.2复合语句 74
5.7.3 if条件语句 75
5.7.4开关语句 76
5.7.5循环语句 77
5.8函数 80
5.8.1函数的定义 80
5.8.2函数的调用 81
5.8.3函数的递归调用和再入函数 83
5.8.4中断服务函数与寄存器组定义 85
5.8.5函数变量的存储方式 87
5.8.6函数的参数和局部变量的存储器模式 90
5.9数组与指针 90
5.9.1数组的定义与引用 90
5.9.2字符数组 91
5.9.3数组作为函数的参数 92
5.9.4指针 93
5.9.5数组的指针 101
5.9.6指针的地址计算 102
5.9.7函数类型指针变量 103
5.9.8返回指针型数据的函数 105
5.9.9指针数组与指向指针的指针 106
5.10结构体、联合体与枚举 110
5.10.1结构体变量的定义与引用 110
5.10.2结构体类型变量的初始化 112
5.10.3结构体类型数组 113
5.10.4结构体类型指针变量 113
5.10.5结构体与函数 114
5.10.6联合体变量的定义与引用 115
5.10.7枚举类型 117
5.11预处理器 117
5.11.1宏定义 118
5.11.2文件包含 120
5.11.3条件编译 121
第6章 μVision2集成开发环境 123
6.1关于开发环境 123
6.2菜单栏、工具栏和快捷键 124
6.3创建项目实例 128
6.4 μVision2功能 132
6.5编写优化代码 139
6.6技巧与窍门 140
第7章 Cx51编译器 146
7.1 Cx51编译器的数据调用协议 146
7.1.1数据在内存中的存储格式 146
7.1.2再入函数的栈结构 149
7.1.3与PL/M-51语言程序的接口 149
7.1.4配置文件 150
7.1.5 Cx51编译器的限制 153
第8章 宏汇编Ax51 155
8.1符号与表达式 155
8.1.1符号 155
8.1.2标号 156
8.1.3操作数 156
8.1.4特殊汇编符号 156
8.1.5表达式 157
8.2汇编伪指令 159
8.2.1符号定义伪指令 160
8.2.2保留和初始化存储器空间的指令 163
8.2.3控制程序连接的指令 166
8.2.4段控制的伪指令 167
8.2.5过程声明伪指令(仅用于Ax51和A251) 170
8.2.6地址控制伪指令 172
8.2.7其他伪指令 173
8.3宏处理 173
8.3.1宏定义 174
8.3.2宏调用 180
8.3.3应用实例 181
第9章 目标文件的连接与转换 184
9.1连接器/定位器LX51 184
9.2组间转换 187
9.2.1公共代码区域 188
9.2.2代码组区域 188
9.2.3最合适的具有组间切换的程序结构 188
9.2.4组和公共代码区域中的程序代码 189
9.2.5组区域中的段 189
9.2.6组间切换配置 190
9.3符号转换程序 195
9.3.1 IntelcHEX文件转换程序OHx51 197
9.3.2分组目标文件转换程序OC51 199
9.4库管理器LIBx5l 200
第10章 C语言和汇编语言混合编程 204
10.1 C语言嵌套汇编语言的规则 204
10.1.1 Cx51函数名的转换及其命名规则 204
10.1.2 Cx51函数及其相关段的命名规则 205
10.1.3 Cx51函数的参数传递规则 206
10.2在Cx51中调用汇编程序应用举例 207
第11章 单片机C语言与汇编语言应用实例 209
11.1 I/O并行口直接驱动LED显示 209
11.2一键多功能按键的识别 211
11.3可预置可逆4位计数器 214
11.4识别4x4矩阵式键盘 216
11.5拉幕式数码的显示 225
11.6 99s马表的设计 230
11.7“嘀、嘀、嘀”报警声 234
11.8 ADC0809A/D转换器的应用 236
11.9点阵式LED简单图形的显示 241
11.10电子琴的设计 245
第12章 单片机在微型打印机系统中的应用 256
12.1 KP系列微型打印机性能和主要性能指标 256
12.2软硬件设计特点 256
12.3打印原理及控制程序 258
12.4打印机接口 259
12.5打印命令分析 260
12.5.1文本打印命令 260
12.5.2图形打印命令 262
12.5.3其他命令 262
12.6打印机程序编制方法应用举例 262
附录A 8051指令集 266
附录B Keilc Cx51与ANSIC的差别 268
参考文献 270