本书针对目前最通用的MCS-51单片机,在汇编语言的基础上,增加了目前最流行的C51程序设计语言,内容主要包括:单片机芯片的硬件原理和结构、汇编语言指令系统和程序设计、C51的程序设计、单片机内部资源(包括中断、定时/计数器、串行口)、单片机系统扩展(包括存储器扩展、I/O扩展)及功能扩展(包括键盘、显示器、A/D及D/A转换)、Keil C集成调试软件及Proteus仿真软件的使用介绍等。
本书的特点是通过汇编语言和C语言穿插进行讲述,实例较多,且很多例子都给出了汇编语言和C语言的对照程序,使读者能同时学习汇编语言和C语言,并使熟悉汇编语言的读者能更快地学好单片机C51程序设计。
样章试读
目录
- 目录
前言
第1章 单片机概述 1
1.1 单片机的基本概念 1
1.1.1 什么是单片机 1
1.1.2 微控制器MCU 2
1.1.3 如何使用单片机 3
1.2 单片机的发展概况 3
1.2.1 单片机的发展历史 3
1.2.2 MCS-51单片机的发展 4
1.2.3 现阶段主流单片机系列简介 5
1.3 单片机的应用特点与应用领域 6
1.3.1 单片机应用特点 6
1.3.2 单片机应用领域 7
1.4 单片机的发展趋势 8
习题 10
第2章 MCS-51单片机的结构和原理 11
2.1 MCS-51单片机的基本组成 11
2.1.1 MCS-51单片机的基本组成 11
2.1.2 MCS-51单片机的封装与信号引脚 14
2.2 MCS-51单片机的并行I/O端口结构 17
2.3 MCS-51单片机的存储器结构 21
2.3.1 程序存储器 21
2.3.2 数据存储器 22
2.4 MCS-51单片机的时钟电路与时序 28
2.4.1 时钟电路 28
2.4.2 时序 29
2.5 MCS-51单片机的工作方式 32
2.5.1 复位万式 32
2.5.2 程序执行方式 35
2.5.3 单步执行方式 35
2.5.4 低功耗方式 35
2.5.5 EPROM的编程和校验工作方式 37
习题 38
第3章 MCS-51单片机的汇编语言指令系统 39
3.1 指令格式及其符号说明 39
3.1.1 指令格式 39
3.1.2 常用符号说明 40
3.1.3 指令的字节 40
3.2 寻址方式 42
3.2.1 立即寻址 42
3.2.2 直接寻址 43
3.2.3 寄存器寻址 43
3.2.4 寄存器间接寻址 43
3.2.5 变址寻址 44
3.2.6 相对寻址 45
3.2.7 位寻址 45
3.3 MCS-51单片机指令系统 46
3.3.1 数据传送类指令 46
3.3.2 算术运算类指令 50
3.3.3 逻辑运算及移位类指令 55
3.3.4 控制转移类指令 58
3.3.5 位操作类指令 64
习题 66
第4章 MCS-51单片机汇编语言程序设计 69
1.1 汇编语言的概述 69
4.1.1 汇编语言的特点 70
4.1.2 汇编语言的伪指令 70
4.2 汇编语言源程序的编辑和汇编 73
4.2.1 手工编程和汇编 73
4.2.2 机器编辑和交叉汇编 73
4.3 汇编语言程序设计 74
4.3.1 简单程序设计 75
4.3.2 分支程序设计 76
4.3.3 循环程序设计 80
4.3.4 数制转换程序 90
4.3.5 查表程序设计 93
习题 95
第5章 单片机C51程序设计基础 97
5.1 C51数据与运算 97
5.1.1 C51的数据类型 97
5.1.2 C51数据的存储类型 98
5.1.3 8051特殊功能寄存器的C51定义 100
5.1.4 8051并行接口及位变量的C51定义 101
5.2 C51运算符、表达式及其规则 102
5.2.1 (复合)赋值运算符 102
5.2.2 算术运算符 103
5.2.3 自增和自减运算符 103
5.2.4 关系运算符 104
5.2.5 逻辑运算符 105
5.2.6 位运算符 105
5.2.7 条件运算符 106
5.2.8 指针和地址运算符 106
5.2.9 优先级和结合性 107
5.3 C51流程控制语句 108
5.3.1 C51程序的基本结构及其流程图 108
5.3.2 选择语句 109
5.3.3 循环语句 112
5.4 C51构造数据类型 115
5.4.1 数组 115
5.4.2 指针 116
5.4.3 结构体 120
5.4.4 共用体 122
5.4.5 枚举 124
5.5 函数 125
5.5.1 函数的定义 126
5.5.2 函数的调用 127
5.5.3 函数的嵌套调用与递归调用 129
5.5.4 中断服务函数 129
5.5.5 指向函数的指针变量 131
5.5.6 局部变量和全局变量 131
5.6 C51的库函数 131
5.6.1 一般I/O函数stdio.h 134
5.6.2 字符函数库string.h 135
5.6.3 标准函数库stdlib.h及其他头文件 136
5.7 C51模块化程序设计 136
5.7.1 基本概念 136
5.7.2 模块化程序开发过程 138
习题 138
第6章 单片机内部资源及编程 140
6.1 中断系统 140
6.1.1 中断概述 140
6.1.2 中断源 142
6.1.3 中断控制 113
6.1.4 中断响应过程 146
6.1.5 中断请求的撤除 118
6.1.6 中断程序设计 149
6.1.7 外部中断源的扩展 152
6.2 定时/计数器 154
6.2.1 定时/计数器的结构及工作原理 154
6.2.2 定时/计数器的控制 156
6.2.3 定时/计数器的工作方式 157
6.2.4 定时/计数器的初始化 160
6.2.5 定时/计数器应用举例 162
6.3 串行通信口 170
6.3.1 数据通信概述 171
6.3.2 单片机的串行通信接口 177
6.3.3 串行通信的工作方式及波特率设置 180
6.3.4 串行口应用举例 184
习题 194
第7章 单片机系统扩展 196
7.1 单片机最小应用系统 196
7.1.1 单片机最小应用系统构成 196
7.1.2 系统扩展的内容与方法 197
7.2 存储器的扩展 198
7.2.1 程序存储器的扩展 198
7.2.2 数据存储器的扩展 200
7.2.3 存储器综合扩展 200
7.2.4 闪速存储器及其扩展 201
7.3 输入与输出口的扩展 203
7.3.1 简单的并行I/O接口扩展 203
7.3.2 用8255扩展并行I/O接口 205
7.4 串行口扩展 211
7.4.1 FC总线及其接口芯片 211
7.4.2 SPI接口及其接口芯片 213
7.4.3 单总线接口及其接口芯片 215
7.4.4 Microwire串行总线及其接口芯片 220
习题 222
第8章 单片机功能扩展 223
8.1 键盘输入及接口 223
8.1.1 键盘概要 223
8.1.2 键盘程序设计 224
8.2 展示器及其接口 227
8.2.1 1ED显示器 227
8.2.2 1CD显示器 235
8.3 D/A转换器的接口与应用 237
8.3.1 DAC的转换原理及分类 237
8.3.2 并行接口DAC 210
8.3.3 串行接口DAC 245
8.4 A/D转换器的接口与应用 218
8.4.1 ADC的转换原理及分类 248
8.4.2 并行接口ADC 219
8.4.3 串行接口ADC 253
习题 256
第9章 单片机应用系统的开发与设计 257
9.1 单片机开发系统 257
9.1.1 单片机实验开发系统介绍 257
9.1.2 单片机实验开发系统的构成 257
9.1.3 单片机实验开发系统的使用 258
9.2 51实验板 260
9.2.1 51实验板介绍 260
9.2.2 51实验板的S51 ISP下载线使用 261
9.3 单片机应用系统的设计 266
9.4 单片机应用系统举例 267
9.4.1 少进电机的驱动 267
9.4.2 超声波测距 272
9.4.3 LED点阵屏显示系统 278
习题 286
第10章 Kei1 C51软件使用介绍 287
10.1 Kei1 C51软件安装 287
10.2 μVision3集成开发环境 287
10.3 建立工程项目 288
10.4 程序举例 292
10.5 编译程序 292
10.6 程序调试 295
习题 302
第11章 可视化仿真开发工具Proteus介绍 303
11.1 Proteus ISIS编辑环境介绍 303
11.2 进入Proteus ISIS编辑环境 306
11.2.1 电路原理图的设计流程 306
11.2.2 电路原理图的设计方法和步骤 306
11.3 单片机仿真 312
11.3.1 虚拟工具箱 312
11.3.2 Proteus在单片机仿真中的应用 313
11.4 Proteus与Kci1整合构建单片机虚拟实验室 317
11.4.1 Keil的μVision2集成开发环境 318
11.4.2 Proteus与Keil整合的实现 322
附录 MCS-51单片机指令汇总 326
附表1 数据传送类指令 326
附表2 算术运算类指令 327
附表3 逻辑运算及移位类指令 328
附表4 控制转移类指令 329
附表5 位操作类指令 332
参考文献 333