第1章 绪论 1
1.1 微处理器、微型计算机及微型计算机系统 1
1.2 微型计算机的分类 1
1.3 单片机的基本结构 2
第2章 PIC16F87X的组成和结构 4
2.1 从MCS—51说起 4
2.2 PIC16F87X单片机与MCS—51单片机内部结构比较 5
2.2.1 MCS—51单片机的内部结构 5
2.2.2 PIC16F87X单片机的内部结构 15
2.3 关于PIC16F87X器件 22
2.4 PIC16F87X CPU的特殊性能 26
2.4.1 组态位 27
2.4.2 振荡器组态 27
2.4.3 复位 30
2.4.4 上电复位POR 31
2.4.8 暂停顺序 32
2.4.7 节电复位BOR 32
2.4.6 振荡器启动定时器OST 32
2.4.5 电源上升定时器PWRT 32
2.4.9 电源控制/状态寄存器PCON 36
2.4.10 中断 36
第3章 存储器组织和特殊功能寄存器SFR功能 39
3.1 存储器组织 39
3.1.1 程序存储器组织 39
3.1.2 数据存储器组织 39
3.1.3 通用寄存器文件GPR File 40
3.2 特殊功能寄存器SFR 43
3.2.1 状态寄存器STATUS 46
3.2.2 选择寄存器OPTION-REG 47
3.2.3 中断控制寄存器INTCON 48
3.2.4 外部中断允许寄存器PIE1 49
3.2.5 外部中断寄存器PIR1 49
3.2.6 外部中断允许寄存器PIE2 50
3.2.8 电源控制寄存器PCON 52
3.2.9 间接寻址寄存器INDF和文件选择寄存器FSR 52
3.2.7 外部中断寄存器PIR2 52
3.2.10 程序计数器PC及其低字节寄存器PCL和高字节PCH修改寄存器PCLATH 55
3.3 程序存储器跨页访问(Program Memory Paging) 55
第4章 PIC汇编语言程序设计 57
4.1 PIC汇编语言规则 57
4.1.1 概述 57
4.1.2 PIC16F87X单片机的寻址法 58
4.1.3 PIC16F87X单片机指令 59
4.1.4 PIC16F87X单片机指令集 61
4.2 PIC汇编语言的编写方法 82
4.2.1 PIC汇编语言程序的基本格式 82
4.2.2 伪指令 83
4.2.3 宏指令和宏调用 93
4.2.4 条件汇编 95
4.3 PIC汇编语言编程小例 95
4.4 数据堆栈、数据队列的使用及有限状态机的应用 99
4.4.1 数据堆栈 99
4.4.2 数据队列 100
4.4.3 有限状态机 102
5.1 MPLAB-IDE的特性和安装 104
5.1.1 MPLAB的特性 104
第5章 PIC开发软件 104
5.1.2 MPLAB的安装 105
5.2 MPLAB的使用 109
5.2.1 MPLAB的运行 109
5.2.2 MPLAB的工具栏及其应用 110
5.2.3 MPLAB的菜单命令行 111
5.3.1 源程序的书写步骤 115
5.3 如何在MPLAB环境中书写和编译程序 115
5.3.2 源程序的编译和模拟运行调试 118
第6章 PIC在线调试技术 122
6.1 MPLAB-ICD组成部件 122
6.1.1 MPLAB-ICD使用的资源 122
6.1.2 MPLAB-ICD的各组成部件 123
6.1.3 MPLAB-IDE集成开发软件包 125
6.2 MPLAB-ICD的安装 126
6.2.1 MPLAB-ICD开发套件组成 126
6.2.3 安装硬件 127
6.2.2 MPLAB-ICD对计算机主机的要求 127
6.2.4 安装软件 128
6.3 调试实例 128
6.3.1 建立一个十六进制的调试文件 128
6.3.2 设置ICD的编程和调试选项 133
6.3.3 编程PlC16F877和设置演示板 135
6.3.4 运行、调试demo877 136
6.3.5 demo877软件的主例程 139
6.3.6 MPLAB-ICD的常见使用问题及其排除方法 141
7.1 PORTA和TRISA寄存器 143
第7章 I/O端口及其功能 143
7.2 PORTB和TRISB寄存器 145
7.3 PORTC和TRISC寄存器 148
7.4 PORTD和TRISD寄存器 150
7.5 PORTE和TRISE寄存器 151
7.6 并行从属端口(Parallel Slave Port) 153
第8章 数据存储器E2PROM与程序存储器FLASH 155
8.1 数据存储器E2PROM和程序存储器FLASH 155
8.1.2 EECON1和EECON2寄存器 156
8.1.1 EEADR 156
8.3 对数据E2PROM存储器写 157
8.2 读数据E2PROM存储器 157
8.4 读FLASH程序存储器 158
8.5 对FLASH程序存储器写 159
8.7.2 FLASH程序存储器 161
8.8.2 FLASH程序存储器 161
8.8.1 E2PROM数据存储器 161
8.8 在编码保护期间操作 161
8.7.1 E2PROM数据存储器 161
8.7 保护防止假写 161
8.6 写检验(Verify) 161
第9章 定时器/计数器 163
9.1 Timer0模块 163
9.1.1 Timer0工作 164
9.1.2 预分频器(Prescaler) 164
9.1.3 切换预分频器分配 164
9.1.4 定时器Timer0中断 165
9.2.1 定时器Timer1工作 166
9.2 Timer1模块 166
9.2.2 Timer1计数器工作 168
9.2.3 Timer1振荡器 168
9.2.4 Timer1中断 168
9.2.5 利用CCP触发输出复位Timer1 169
9.2.6 Timer1预分频器 169
9.3 Timer2模块 169
9.3.1 定时器Timer2工作 170
9.3.3 TMR2的输出 171
9.3.2 Timer2中断 171
第10章 捕获/比较/脉宽调制CCP模块 172
10.1 捕获/比较/脉宽调制CCP模块 172
10.2 捕获模式 173
10.2.1 CCP引脚组态 174
10.2.2 Timer1模式选择 174
10.2.3 软件中断 174
10.2.4 CCP预分频器(Prescaler) 174
10.3.4 特殊事件触发器 175
10.3.3 软件中断模式 175
10.3.1 CCP引脚组态 175
10.3.2 Timer1模式选择 175
10.3 比较模式 175
10.4 PWM模式 176
10.4.1 PWM周期 177
10.4.2 PWM工作周期 177
10.4.3 PWM工作建立 178
第11章 主同步串行端口MSSP 179
11.1 主同步串行端口MSSP模块 179
11.2 串行外设接口SPI模式 182
11.2.1 工作 183
11.2.2 SPI I/O使能 184
11.2.3 典型连接 185
11.2.4 主模式 185
11.2.5 从模式 186
11.2.6 从同步选择 186
11.2.7 休眠工作 187
11.2.8 复位的作用 187
11.3 MSSP I2C工作 188
11.3.1 从模式 189
11.3.2 寻址 190
11.3.3 从接收 191
11.3.4 从发送 191
11.3.5 普通调用的地址支持 192
11.3.6 休眠工作 193
11.3.7 复位的作用 193
11.3.8 主模式 193
11.3.10 I2C主模式支持 194
11.3.9 多主模式 194
11.3.11 I2C主模式工作 195
11.3.12 波特率产生器BRG 196
11.3.13 I2C主模式START条件时序 196
11.3.14 WCOL状态标志 197
11.3.15 I2C主模式重复启动条件时序 197
11.3.16 重启WCOL状态标志 199
11.3.17 I2C主模式发送 199
11.3.19 识别定时时序 203
11.3.18 I2C主模式接收 203
11.3.20 停止条件定时 204
11.3.21 时钟判决 205
11.3.22 休眠工作 205
11.3.23 复位的作用 205
11.3.24 多主机通信、总线冲突及总线判决 207
11.3.25 总线冲突 207
11.4 对于I2C总线的连接考虑 212
12.1 可寻址的通用同步异步接收发送器(USART) 213
第12章 可寻址的通用同步异步接收发送器(USART) 213
12.2 USART波特率发生器(BRG) 216
12.3 USART异步模式 219
12.3.1 USART异步发送器 220
12.3.2 USART异步接收器 221
12.3.3 带地址检测的9位模式的建立 222
12.4 USART同步主控模式 224
12.4.1 USART同步主控发送 224
12.4.2 USART同步主控接收 225
12.5.1 USART同步从属发送 227
12.5 USART同步从属模式 227
12.5.2 USART同步从属接收 228
第13章 模数转换器A/D模块 229
13.1 模数转换器A/D模块 229
13.2 A/D捕获的条件 232
13.3 A/D转换时钟的选择 233
13.4 模拟端口引脚的配置 234
13.5 A/D转换器 234
13.5.1 A/D结果寄存器 234
13.5.3 复位的作用 235
13.5.2 在休眠期间的A/D工作 235
第14章 PIC系统设计基础应用 237
14.1 定时器/计数器Timer1、Timer2应用 237
14.1.1 定时器/计数器Timer1 237
14.1.2 定时器Timer2 239
14.2 A/D转换接口与应用 243
14.2.1 A/D转换相关寄存器 243
14.2.2 A/D转换工作原理 245
14.2.3 A/D转换应用示例:两位数显模拟电压 246
14.3 PWM输出与应用 249
14.3.1 PWM输出相关寄存器 250
14.3.2 PWM输出原理 250
14.3.3 PWM输出应用示例:编辑音乐播放 251
14.4 PSP并行从动端口与应用 254
14.4.1 PSP相关寄存器 254
14.4.2 PSP模块工作原理 255
14.4.3 PSP应用示例:PSP端口实现双机通信 255
14.5.1 USART模块相关寄存器 260
14.5 USART接口与应用 260
14.5.2 USART接口工作原理 263
14.5.3 USART接口应用示例:USART接口扩展8位并行口 263
第15章 PIC单片机系统设计 267
15.1 电子密码锁的方案选择 267
15.2 电子密码锁的硬件电路分析 268
15.2.1 电子密码锁的硬件电路概述 268
15.2.2 电路输入与输出的硬件连接 269
15.3.1 Timer1定时器中断 272
15.3 电子密码锁的软件分析 272
15.3.2 E2PROM的读取与写入 274
15.3.3 矩阵式键盘 277
15.4 主要程序的流程图 278
15.5 调试中遇到的问题与解决方法 280
15.6 系统参考源文件 281
第16章 PIC单片机系统设计Ⅱ 297
16.1 方案选择 297
16.2 单片机温度控制原理 298
16.3 硬件电路设计 299
16.3.1 硬件电路分析 299
16.3.2 电路调整 305
16.4 系统软件设计 305
16.5 系统调试 310
16.6 数据处理 311
16.7 系统参考源文件 313
17.2.1 三极管和二极管 321
17.2 电路主要器件的介绍 321
17.1 方案选择 321
第17章 PIC单片机系统设计Ⅲ 321
17.2.2 红外发光二极管 322
17.2.3 光电耦合器 322
17.3 红外遥控器 323
17.3.1 红外发射 323
17.3.2 红外发射器 323
17.3.3 红外接收器 324
17.4.2 步进电机的启动频率与工作频率 326
17.4.1 步进电机工作原理 326
17.4 步进电机工作原理与使用 326
17.4.3 脉冲分配器与放大器 327
17.4.4 步进电机55BF004的驱动器 327
17.5 PIC单片机的选用 329
17.5.1 定时器/计数器Timer1 329
17.5.2 定时器/计数器Timer2 330
17.5.3 模数转换器ADC 330
17.5.4 单片机与遥控接收器之间的接口 333
17.5.5 控制电机驱动脉冲分配与产生 336
17.6.2 系统各部分电路 338
17.6 硬件设计总电路图 338
17.6.1 设计总方框图 338
17.7 系统调试 340
17.7.1 调试遥控发射/接收器 340
17.7.2 单片机的调试 340
17.7.3 驱动器的调试 340
17.8 系统参考源文件 341
第18章 PIC单片机系统设计Ⅳ 347
18.1 方案概述 347
18.2 各部分基本原理 348
18.2.1 A/D转换的基本原理 349
18.2.2 PWM输出的基本原理 349
18.2.3 按键输入的基本原理 350
18.2.4 负载驱动电路的基本原理 350
18.2.5 数码显示单元的基本原理 350
18.3 系统硬件设计 351
18.3.1 硬件电路总体介绍 351
18.3.2 各部分硬件介绍 351
18.3.3 系统工作过程与原理 354
18.4.1 程序中所用的寄存器简介 355
18.4 系统软件设计 355
18.4.2 程序流程图 356
18.4.3 典型程序分析 359
18.5 系统调试和数据测量 361
18.5.1 系统调试中的问题与解决方法 361
18.5.2 数据测量 361
18.6 系统参考源文件 362
19.1.1 硬件电路设计概述 367
第19章 PIC单片机系统设计Ⅴ 367
19.1 一氧化碳气体监测仪硬件电路设计 367
19.1.2 硬件电路各部分分析 368
19.2 一氧化碳气体监测仪软件设计 368
19.2.1 建立传感器线性模型 368
19.2.2 模型参数分析 369
19.2.3 算法实现及程序流程图 369
19.3 系统参考源文件 370
参考文献 416