目录 1
第1章 微控制器简介 1
1.1 引言 1
1.2 术语 2
1.3 中央处理器 3
1.4 半导体存储器:RAM和ROM 4
1.5 总线:地址总线、数据总线和控制总线 5
1.6 输入/输出设备 6
1.6.1 大容量存储设备 6
1.6.2 人机交互设备 6
1.6.3 控制/监视设备 6
1.7 程序:大程序和小程序 7
1.9 微处理器与微控制器的比较 8
1.8 微型机、小型机、大型机 8
1.9.1 硬件结构 9
1.9.2 应用领域 9
1.9.3 指令集特征 10
1.10 一些新概念 10
1.11 得与失:一个设计范例 11
习题 13
第2章 硬件结构 14
2.1 MCS-51系列简介 14
2.2 8051的引脚 15
2.2.1 端口0 16
2.2.2 端口1 16
2.2.3 端口2 16
2.2.6 ALE(地址锁存使能信号) 17
2.2.5 ?(程序存储使能信号) 17
2.2.4 端口3 17
2.2.7 ?(外部访问信号) 18
2.2.8 RST(复位信号) 18
2.2.9 片上振荡器输入 18
2.2.10 电源接口 18
2.3 I/O端口结构 19
2.4 存储器组织 19
2.4.1 通用RAM 20
2.4.2 可位寻址RAM 21
2.4.3 寄存器组 22
2.5 特殊功能寄存器(SFR) 23
2.5.1 程序状态字 24
2.5.4 数据指针 27
2.5.3 堆栈指针 27
2.5.2 寄存器B 27
2.5.5 端口寄存器 28
2.5.6 计时器寄存器 28
2.5.7 串口寄存器 29
2.5.8 中断寄存器 29
2.5.9 电源控制寄存器 29
2.6 外部存储器 30
2.6.1 访问外部代码存储器 31
2.6.2 访问外部数据存储器 31
2.6.3 地址解码 33
2.6.4 外部代码空间和数据空间的重叠 34
2.7 8032/8052的增强功能 34
2.8 复位 35
2.9 本章小结 36
习题 37
第3章 8051指令集概述 40
3.1 本章简介 40
3.2 寻址模式 40
3.2.1 寄存器寻址 41
3.2.2 直接寻址 43
3.2.3 间接寻址 44
3.2.4 立即寻址 45
3.2.5 相对寻址 45
3.2.6 绝对寻址 47
3.2.7 长寻址 49
3.2.8 索引寻址 49
3.3.1 算术运算类指令 50
3.3 指令类型 50
3.3.2 逻辑运算类指令 54
3.3.3 数据传送类指令 56
3.3.4 布尔操作类指令 60
3.3.5 程序分支转移类指令 63
习题 67
第4章 定时器操作 73
4.1 本章简介 73
4.2 定时器模式寄存器(TMOD) 75
4.3 定时器控制寄存器(TCON) 76
4.4 定时器模式和溢出标志 76
4.4.1 13位定时器模式(模式0) 76
4.4.2 16位定时器模式(模式1) 77
4.5.1 定时 78
4.5 时钟信号源 78
4.4.4 分立定时器模式(模式3) 78
4.4.3 8位自动重载模式(模式2) 78
4.5.2 计数 79
4.6 定时器的启动、停止和控制 79
4.7 定时器寄存器TMOD的初始化和访问 81
4.7.1 即时读取定时器 82
4.8 短间隔和长间隔 82
4.9 8052的定时器2 86
4.9.1 自动重载模式 87
4.9.2 捕获模式 88
4.10 波特率发生器 89
4.11 本章小结 89
习题 89
5.1 本章简介 92
第5章 串口操作 92
5.2 串口控制寄存器 93
5.3 工作模式 94
5.3.1 8位移位寄存器(模式0) 94
5.3.2 8位可变波特率UART(模式1) 95
5.3.3 9位固定波特率UART(模式2) 97
5.3.4 9位可变波特率UART(模式3) 97
5.4 串口寄存器的初始化和访问 97
5.4.1 接收使能 97
5.4.2 第9数据位 97
5.4.3 加入奇偶校验位 98
5.4.4 中断标志 98
5.5 多处理器通信 99
5.6 串口波特率 100
5.7 本章小结 104
习题 104
第6章 中断 106
6.1 本章简介 106
6.2 8051的中断结构 107
6.2.1 允许与禁止中断 107
6.2.2 中断优先级 108
6.2.3 查询顺序 108
6.3 中断处理 110
6.4 中断程序设计 111
6.4.1 小型中断服务程序 112
6.4.2 大型中断服务程序 112
6.5 串口中断 115
6.6 外部中断 116
6.7 中断时序 121
6.8 本章小结 122
习题 122
第7章 汇编语言程序设计 124
7.1 本章简介 124
7.2 汇编器及其工作流程 125
7.2.1 第一次扫描 126
7.2.2 第二次扫描 126
7.3 汇编语言程序的格式 128
7.3.1 标号字段 129
7.3.2 助记符字段 129
7.3.3 操作数字段 129
7.3.4 注释字段 129
7.3.7 立即数 130
7.3.5 特殊的汇编器符号 130
7.3.6 间接寻址 130
7.3.8 数据地址 131
7.3.9 位地址 131
7.3.10 代码地址 131
7.3.11 跳转和调用的泛型 132
7.4 汇编时的表达式求值 133
7.4.1 数基 133
7.4.2 字符串 133
7.4.3 算术运算符 134
7.4.4 逻辑运算符 134
7.4.5 特殊运算符 135
7.4.6 关系运算符 135
7.4.8 运算优先级 136
7.4.7 表达式例子 136
7.5 汇编伪指令 137
7.5.1 汇编器状态控制伪指令 137
7.5.2 符号定义伪指令 138
7.5.3 存储空间初始化/保留伪指令 140
7.5.4 程序连接伪指令 143
7.5.5 段选择伪指令 145
7.6 汇编器控制项 146
7.7 连接器操作 148
7.8 例子详解——连接可重定位的段和模块 149
7.8.1 ECHO.LST 150
7.8.2 IO.LST 152
7.8.3 EXAMPLE.M51 156
7.9 宏 158
7.9.1 参数传递 159
7.9.2 局部标号 160
7.9.3 重复操作 161
7.9.4 程序控制流操作 162
习题 162
第8章 程序结构和设计 165
8.1 本章简介 165
8.2 结构化程序设计的优点和缺点 167
8.3 结构化程序设计中的三种结构 167
8.3.1 顺序结构 168
8.3.2 循环结构 168
8.3.3 选择结构 173
8.4 伪码的语法 178
8.5.2 注释 182
8.5 汇编语言的程序设计风格 182
8.5.1 标号 182
8.5.3 注释块 183
8.5.4 在堆栈里保存寄存器 184
8.5.5 使用EQU伪指令 184
8.5.6 使用子程序 184
8.5.7 程序的组织 186
8.6 本章小结 187
习题 187
第9章 程序开发中用到的工具和技术 188
9.1 本章简介 188
9.2 开发周期 188
9.2.1 软件开发 189
9.2.2 硬件开发 190
9.3 整合和验证 192
9.3.1 软件模拟 192
9.3.2 硬件仿真 194
9.3.3 在RAM中执行程序 194
9.3.4 在EPROM中执行程序 195
9.3.5 工厂掩膜处理 195
9.4 命令与开发环境 196
9.5 本章小结 198
习题 198
第10章 设计和接口例子 200
10.1 本章简介 200
10.2 SBC-51 200
10.3 十六进制键盘接口 206
10.4 7段LED的接口设计 210
10.5 扬声器接口设计 215
10.6 非易失性RAM接口设计 219
10.7 输入/输出扩展 225
10.8 模拟信号输出接口设计 229
10.9 模拟信号输入接口设计 234
10.10 本章小结 236
习题 237
附录A 快速索引表 239
附录B 操作码映射表 243
附录C 指令及其操作码详解 245
附录D 特殊功能寄存器介绍 283
附录E 操作码映射表ASCIl码表 290
附录F MON51-8051监控程序 291