第1章 绪论 1
1.1 单片机的发展 1
1.2 单片机的类别 4
1.3 PIC系列单片机的种类与特点 7
第2章 PIC16F87X系列单片机 10
2.1 概述 10
2.2 内部功能及时序 11
2.2.1 内部组成 11
2.2.2 时序图和指令周期 13
2.2.3 指令流 14
2.3 引脚功能 14
2.3.1 电源引脚和地引脚 14
2.3.2 振荡器输入/输出引脚 15
2.3.3 主复位信号引脚 15
2.3.4 端口/功能引脚 15
2.4 存储器组织 19
2.4.1 程序存储器 19
2.4.2 数据存储器 19
2.5 数据E2PROM和闪存组织 34
2.5.1 寄存器EECON1和EECON2 35
2.5.2 E2PROM数据存储器的读/写操作 36
2.5.3 Flash程序存储器的读/写操作 38
2.5.4 写校验与写保护 40
2.6 振荡电路 41
2.6.1 振荡方式 41
2.6.2 晶体振荡器/陶瓷振荡器 41
2.6.3 外部晶体振荡器电路 42
2.6.4 RC振荡电路 43
2.7 复位电路与复位状态 43
2.8 I/O端口 47
2.8.1 端口A和它的方向寄存器 48
2.8.2 端口B和它的方向寄存器 49
2.8.3 端口C和它的方向寄存器 51
2.8.4 端口D和它的方向寄存器 52
2.8.5 端口E和它的方向寄存器 53
2.8.6 并行从动端口 54
2.9 中断组织 56
2.9.1 中断源 56
2.9.2 中断的控制 57
2.9.3 中断现场的保护 58
2.10 看门狗电路 59
2.11 低功耗设置(休眠模式) 60
2.11.1 进入休眠(SLEEP)省电方式 60
2.11.2 CPU从休眠状态唤醒 60
2.11.3 中断唤醒状态 61
2.12 在线串行编程与调试功能 61
2.12.1 在线调试 61
2.12.2 在线串行编程 62
思考题 62
第3章 PIC16F87X系列单片机模块功能 63
3.1 定时器/计数器组织 63
3.1.1 定时器/计数器0(TIMER0) 63
3.1.2 定时器/计数器1(TIMER1) 65
3.1.3 定时器/计数器2(TIMER2) 68
3.2 CCP(捕捉/比较/PWM)组织 70
3.2.1 捕捉(Capture)工作方式 72
3.2.2 比较(Compare)工作方式 73
3.2.3 脉宽调制(PWM)工作方式 74
3.3 A/D转换模块 75
3.3.1 概述 75
3.3.2 A/D采集要求 79
3.3.3 A/D转换时钟选择 79
3.3.4 模拟输入引脚设置 80
3.3.5 正常A/D转换 80
3.3.6 睡眠A/D转换 81
3.3.7 复位对A/D转换的影响 81
3.3.8 A/D精度和误差 81
3.4 MSSP模块 82
3.4.1 概述 82
3.4.2 SPI工作方式 84
3.4.3 I2C工作方式 87
3.5 USART模块 103
3.5.1 概述 103
3.5.2 USART波特率发生器(BRG) 104
3.5.3 USART异步工作方式 105
3.5.4 USART同步主控模式 110
3.5.5 USART同步从动模式 113
思考题 115
第4章 PIC系列单片机指令系统与程序设计 116
4.1 PIC系列单片机指令系统的分类及说明 116
4.1.1 指令系统分类 116
4.1.2 指令描述符号说明 117
4.1.3 指令速查表 118
4.2 指令功能 119
4.2.1 面向字节的文件寄存器操作类指令 119
4.2.2 面向位的文件寄存器操作类指令 127
4.2.3 面向立即数和控制操作类指令 129
4.3 汇编语言程序的基本格式 133
4.3.1 标号 133
4.3.2 操作码 134
4.3.3 操作数 134
4.3.4 注释 135
4.3.5 常用的伪指令 135
4.4 汇编语言程序结构化设计 137
4.4.1 顺序结构 137
4.4.2 循环结构 141
4.4.3 分支结构 142
4.5 程序设计范例 143
4.5.1 程序清单及说明 143
4.5.2 汇编与调试 146
思考题 146
第5章 PIC16F87X系列单片机端口功能与扩展 148
5.1 概述 148
5.2 I/O的功能与应用 148
5.2.1 端口A的功能与应用 148
5.2.2 端口B的功能与应用 149
5.2.3 端口C的功能与应用 150
5.2.4 端口D的功能与应用 151
5.2.5 端口E的功能与应用 151
5.3 数据存储器的扩展 152
5.3.1 概述 152
5.3.2 并行总线数据存储器的扩展 152
5.3.3 I2C总线数据存储器的扩展 155
5.3.4 SPI总线数据存储器的扩展 158
5.4 异步串行通信接口的扩展 161
5.4.1 概述 161
5.4.2 RS—232—C标准 162
5.4.3 硬件实现方法与电路 163
5.4.4 通信程序的设计 164
5.5 外中断功能 167
5.5.1 PIC单片机中断的“级” 167
5.5.2 RBO/INT外中断 167
5.5.3 端口B状态变化的中断 170
思考题 171
第6章 PIC单片机定时器/计数器与CCP的应用 172
6.1 概述 172
6.2 定时器/计数器的控制与应用 172
6.2.1 定时器/计数器TIMER0 172
6.2.2 定时器/计数器TIMER1 174
6.2.3 定时器/计数器TIMER2 177
6.3 CCP的应用 178
6.3.1 输入捕捉工作模式的应用 178
6.3.2 输出比较工作模式的应用 179
6.3.3 PWM工作模式的应用 181
思考题 181
第7章 PIC单片机的A/D和D/A技术 182
7.1 概述 182
7.2 A/D转换技术 182
7.2.1 片上A/D转换技术 183
7.2.2 片外A/D转换的扩展 185
7.3 D/A转换技术 189
7.3.1 串行总线D/A转换扩展 190
7.3.2 并行总线D/A转换扩展 193
思考题 198
第8章 PIC单片机的显示技术与键盘扩展 199
8.1 概述 199
8.2 LED的驱动与显示 199
8.2.1 LED的驱动 199
8.2.2 LED数码管的驱动与显示 200
8.2.3 多位LED数码管的驱动与显示 205
8.2.4 LED点阵的驱动与显示 216
8.3 LCD的驱动与显示 225
8.3.1 段式LCD的驱动 226
8.3.2 点阵LCD的驱动 236
8.4 键盘的扩展 243
8.4.1 独立键盘的扩展 243
8.4.2 键盘阵的扩展 245
8.5 LED显示与键盘的复合扩展 248
8.5.1 MAX6955的功能与特性 248
8.5.2 MAX6955的控制 250
8.5.3 应用扩展电路 251
思考题 261
附录A PIC16F877的头文件 262
参考文献 270