第1章c51单片机的组成及结构1
1.1c51单片机的内部结构1
1.2c51单片机的cpu结构3
1.2.1运算器3
1.2.2布尔处理机4
1.2.3控制部件及振荡器4
1.3c51单片机的存储器空间5
1.3.1存储器的基本知识5
1.3.2c51单片机的存储器6
1.3.2.1数据存储器7
1.3.2.2程序存储器12
1.4c51单片机的并行输入/输出端口12
1.4.1p0口13
1.4.2p1口14
1.4.3p2口15
1.4.4p3口15
1.4.5四个并行口使用的注意事项16
1.5c51单片机的引脚信号和cpu时序16
1.5.1c51单片机引脚功能说明17
1.5.2复位电路18
1.5.3cpu时序20
1.6c51单片机的工作方式22
1.6.1复位方式22
1.6.2程序执行方式22
1.6.3掉电保护方式22
1.6.4c51单片机的低功耗方式23
习题和思考题23
第2章c51单片机的指令系统24
2.1c51单片机的指令系统概述24
2.2c51单片机的寻址方式26
2.2.1立即寻址27
2.2.2寄存器寻址27
2.2.3寄存器间接寻址27
2.2.4直接寻址28
2.2.5变址寻址28
2.2.6相对寻址29
2.2.7位寻址29
2.2.8寻址方式总汇29
2.3c51单片机的指令说明30
2.3.1数据传送类指令30
2.3.2算术运算类指令35
2.3.3逻辑运算类指令39
2.3.4控制转移类指令42
2.3.5位操作指令48
2.4c51单片机的伪指令51
2.4.1程序起始地址伪指令org51
2.4.2结束汇编伪指令end51
2.4.3定义字节伪指令db51
2.4.4定义字伪指令dw52
2.4.5预留存储空间伪指令ds52
2.4.6等值伪指令equ52
2.4.7位地址定义伪指令bit53
2.5c51单片机的程序设计举例53
2.5.1简单程序设计53
2.5.2分支程序设计53
2.5.3循环程序设计55
2.5.4数据转换程序设计55
2.5.5查表程序设计56
习题和思考题56
第3章单片机的c程序设计58
3.1单片机程序设计概论58
3.1.1单片机的c语言编程特点59
3.1.2c51单片机的c语言编译器59
3.1.3c51单片机的程序结构59
3.2c51的数据与运算60
3.2.1数据与数据类型60
3.2.2常量与变量61
3.2.3c51数据的存储类型与存储器结构63
3.2.4特殊功能寄存器(sfr)及其定义65
3.2.5并行接口及其定义67
3.2.6位变量(bit)及其定义68
3.2.7c51运算符、表达式及其规则69
3.3c51流程控制语句76
3.3.1c语言程序的基本结构及其流程图76
3.3.2选择语句79
3.3.3循环语句82
3.4c51构造数据类型87
3.4.1数组87
3.4.2指针94
3.4.3结构103
3.4.4共用体110
3.4.5枚举111
3.5函数113
3.5.1函数的分类114
3.5.2函数的定义115
3.5.3函数的参数和函数值117
3.5.4函数的调用118
3.5.5数组/指针作为函数的参数126
3.5.6局部变量和全局变量132
3.6c51的库函数133
3.7编程举例136
习题和思考题137
第4章c51单片机的内部资源139
4.1输入/输出控制方式139
4.1.1程序控制方式140
4.1.2中断控制方式141
4.2中断系统143
4.2.1中断的基本概念143
4.2.2中断源143
4.2.3中断入口地址144
4.2.4中断控制145
4.2.5中断响应147
4.2.6中断的程序设计150
4.3定时/计数器152
4.3.1定时/计数器的控制寄存器153
4.3.2定时/计数器的工作方式154
4.3.3定时/计数器的应用实例160
4.4串行通信接口163
4.4.1串行通信基础知识163
4.4.2c51串行接口166
习题和思考题175
第5章c51单片机的系统扩展176
5.1系统扩展概述176
5.1.1c51单片机的最小系统176
5.1.2系统扩展及结构177
5.1.3c51单片机存储器扩展与编址技术179
5.2程序存储器的扩展180
5.2.1扩展eprom180
5.2.2扩展(e2prom)183
5.3数据存储器的扩展183
5.3.1单片数据存储器扩展184
5.3.2线选法多片数据存储器扩展184
5.3.3译码法多片数据存储器扩展186
5.4可编程外围并行接口8255a187
5.4.18255a的引脚功能和逻辑结构187
5.4.28255a的工作方式及数据i/o操作189
5.4.38255a控制字及初始化190
5.4.48255a与c51单片机的接口192
5.5可编程外围定时器8253193
5.5.18253的结构和引脚193
5.5.28253的工作方式和控制字194
5.5.38253与c51单片机的接口195
5.6可编程并行接口芯片8155198
5.6.18155的引脚功能和逻辑结构198
5.6.28155的工作原理199
5.6.38155的命令/状态字200
5.6.48155的定时/计数器201
5.6.58155的输入/输出口203
5.6.68155与c51单片机的接口204
5.7i2c接口芯片at24c01205
5.7.1i2c总线特点206
5.7.2i2c总线工作原理206
5.7.3at24c01与c51的接口207
5.8spi接口芯片x5045212
5.8.1spi总线的组成212
5.8.2x5045与c51单片机的接口213
5.9单片机配置fpga218
5.9.1flex10k的工作状态219
5.9.2flex10k器件的配置219
5.9.3主动串行模式配置flex10k器件219
5.9.4基于c51的被动串行配置flex10k器件220
习题和思考题222
第6章c51单片机的机间串行通信224
6.1点对点的串行异步通信224
6.1.1通信双方的硬件连接224
6.1.2通信双方的约定225
6.1.3点对点通信编程226
6.2多机通信228
6.2.1通信接口228
6.2.2通信协议229
6.2.3通信程序229
6.3pc和单片机之间的通信方法238
6.3.1mscomm控件238
6.3.2编程实现240
习题和思考题243
第7章c51单片机人机交互的c编程244
7.1键盘接口技术244
7.1.1独立式键盘与工作原理244
7.1.2行列式键盘与工作原理246
7.1.3键盘扫描的控制程序248
7.2led数码显示技术250
7.2.1led显示器的结构与原理250
7.2.2led静态显示接口251
7.2.3led动态扫描显示接口252
7.3可编程键盘/显示接口芯片8279254
7.3.18279引脚和内部结构254
7.3.28279的命令字和状态字256
7.3.38279和c51单片机的接口259
7.4字符型lcd显示模块261
7.4.1字符型lcd的结构和引脚261
7.4.2显示板控制器的指令系统262
7.4.3lcd显示板与单片机的接口和编程263
7.5点阵型lcd显示模块265
7.5.1hd61830的特点和引脚265
7.5.2hd61830指令集266
7.5.3与内藏hd61830的液晶模块的接口和编程269
习题和思考题271
第8章keilc51上机指南272
8.1keilc51软件的安装272
8.1.1系统需求272
8.1.2软件安装273
8.2keilc51工程的建立及设置274
8.2.1keil工程的建立274
8.2.2设置工程属性278
8.3代码编译282
8.4程序调试282
8.4.1常用调试命令283
8.4.2在线汇编283
8.4.3断点设置284
8.5keil程序调试窗口284
8.5.1存储器窗口285
8.5.2观察窗口286
8.5.3工程窗口寄存器页286
8.5.4外围接口286
8.6keil程序调试287
8.6.1片内程序模拟287
8.6.2仿真试验板仿真288
8.6.3硬件连接调试288
习题和思考题289
第9章c51单片机系统综合实例290
9.1外部存储器综合扩展290
9.2系统中断程序设计291
9.3定时/计数器程序设计292
9.4串口程序设计293
9.5外扩并行i/o口的c语言编程294
9.6点阵型lcd中文显示的c语言编程296
附录c51单片机指令系统表300
参考文献302