第1章 PIC微控制器概述 1
1.1 PIC的概念 1
1.2 编程的顺序流程书 3
1.3 机器语言 3
第2章 PIC微控制器编程的基础知识 3
2.1 PIC微控制器的内部结构 5
2.2 程序计数器 6
2.3 汇编语言和机器语言 7
2.4 地址和标签地址 8
2.5 数字的表示方法(二进制、十进制、十六进制) 9
2.5.1 二进制数 10
2.5.2 十六进制数 10
2.5.3 把二进制数转换成为十进制数 11
2.5.4 把十六进制数转换成为十进制数 11
2.5.5 把十进制数转换成为十六进制数 12
2.6 二进制的加法和减法 12
2.7 用2的补数表示负数 14
2.8 逻辑运算 15
2.9 移位 15
2.10 PIC16F877A的文件寄存器 16
2.11 PIC中使用的数字 17
2.12 寄存器STATUS 18
2.13 PIC16F877A指令一览 19
2.14 PIC16F877A的指令分类 22
2.15 PIC编程基础 23
2.16 Bank切换 24
2.17 文件寄存器的间接访问 25
2.18 汇编语言的编程规则 25
2.19 MPASM的常用功能 26
2.20 标签地址与通用寄存器的使用方法 27
第3章 编程过程分析 31
3.1 模拟器的使用 31
3.2 熟练使用汇编语言 35
3.3 利用模拟器执行加减运算与逻辑运算 36
3.4 数值的比较 37
3.5 循环操作 38
3.5.1 同一动作重复执行2次 38
3.5.2 同一动作重复执行10次 38
3.5.3 同一动作重复执行1000次 39
3.5.4 同一动作重复执行1111次 40
3.5.5 同一动作重复执行1000000次 41
3.6 子程序 42
3.6.1 用寄存器w传递参数 43
3.6.2 用特定的寄存器传递参数 44
3.6.3 用指针寄存器(FSR)传递参数 44
3.7 条件分支(寄存器PCL计算) 47
3.8 查表(读取预先准备的表) 50
3.9 计算过程分解 51
3.9.1 2字节的加法计算 51
3.9.2 2字节的减法计算 52
3.9.3 简单的乘法与除法计算 53
3.10 Bank切换的要点 54
3.10.1 直接访问寄存器 54
3.10.2 使用FSR、INDF间接访问 55
第4章 PIC微控制器数字量接口的应用 55
4.1 PIC微控制器的硬件介绍 59
4.1.1 PIC16F877A的引脚配置 59
4.1.2 电源和振荡器的类型,动作频率 62
4.1.3 频率和周期 64
4.1.4 配置位 65
4.1.5 外部电源 66
4.2 实验电路的构成 67
4.3 熟练使用I/O接口 70
4.3.1 点亮LED的实验 71
4.3.2 PIC的初始化——最重要的是不要损坏PIC 71
4.3.3 确定输入输出的寄存器 72
4.3.4 点亮LED的程序 72
4.3.5 使LED闪烁(1) 74
4.3.6 程序的执行速度 74
4.3.7 延长闪烁时间间隔的方法 75
4.3.8 延时10μs 76
4.3.9 延时1ms 76
4.3.10 延时0.5s 77
4.3.11 使LED闪烁(2) 77
4.3.12 改变闪烁的周期 79
4.3.13 改变点亮和熄灭时间之比 80
4.3.14 注意read-modify-write操作 82
4.4 读取开关状态 84
4.4.1 位测试和检测开关状态 84
4.4.2 开关的接点颤动 86
4.4.3 防止开关的接点颤动的对策 86
4.4.4 松开开关时使LED动作 89
4.4.5 以固定周期读取开关状态 89
第5章 熟练使用内置设备 97
5.1 熟练使用A-D变换器 97
5.1.1 A-D变换的值 97
5.1.2 A-D变换时钟周期的设定 98
5.1.3 选择A-D变换结果的格式 100
5.1.4 输入引脚的设定 102
5.1.5 A-D变换的精度和速度 102
5.1.6 A-D变换方法 103
5.1.7 A-D变换的实验 104
5.1.8 关于中断 105
5.1.9 根据输入电压(电位器)改变闪烁间隔 105
5.1.10 利用查表法的实验 107
5.1.11 使用硫化镉光电池的实验 109
5.1.12 光暗时LED闪烁 110
5.1.13 亮度记忆 111
5.2 熟练使用USART模块 113
5.2.1 串行通信的基础知识 113
5.2.2 异步串行通信的基础 114
5.2.3 PIC16F877A串行通信的初始设定 115
5.2.4 利用PIC16F877A做串行通信(发送) 117
5.2.5 利用PIC16F877A做串行通信(接收) 118
5.2.6 按照串行通信发出的指示而动作的程序 119
5.2.7 从初始化到主程序 123
5.2.8 发送子程序和字符变换子程序 124
5.2.9 发送A-D变换结果的子程序 124
5.2.10 LED的点亮/熄灭的子程序 124
5.2.11 查表的子程序 124
5.2.12 实际动作 125
5.3 用字符型液晶显示器显示字符 125
5.3.1 液晶模块的引脚配置 126
5.3.2 液晶模块的内部寄存器 126
5.3.3 液晶显示器和并行通信 130
5.3.4 用4位格式发送8位数据,液晶模块的初始化 131
5.3.5 忙标志位(busy flag) 131
5.3.6 用PC机串行通信向液晶模块写入字符的程序 131
5.3.7 液晶模块初始化子程序 140
5.3.8 向液晶模块写入的子程序 140
5.3.9 从液晶模块读出的子程序 141
5.3.10 其他子程序 142
5.4 定时器0的使用方法 142
5.5 熟练使用中断 144
5.5.1 编制中断处理程序的方法 144
5.5.2 定时器0的中断 145
5.5.3 使用定时器0中断的程序 145
5.5.4 使用中断的注意事项 149
第6章 驱动电动机 152
6.1 驱动无线伺服电动机的实验 152
6.1.1 驱动电动机的实验 153
6.1.2 由PC计算机发出角度控制指令(利用中断产生脉冲) 157
6.1.3 程序的结构 157
6.1.4 利用2个定时器的中断产生脉冲 157
6.1.5 定时器2的使用方法 158
6.1.6 利用中断驱动伺服电动机的程序 160
6.1.7 中断处理程序 166
6.1.8 接收PC计算机的命令(主程序) 167
6.1.9 把2个字符变换成为十六进制数(子程序RCV_HEX) 167
6.1.10 与PC计算机相连接驱动伺服电动机 168
6.2 驱动电动机的实验 168
6.2.1 使用CCP模块 171
6.2.2 使用CCP模块控制电动机的转速 174
6.2.3 使用CCP模块的程序 174
第7章 熟练使用PIC 183
7.1 阅读数据手册 183
7.2 数据手册的构成 184
7.3 阅读数据手册(内置EEPROM的使用方法) 184
7.3.1 内容概要及关联寄存器 185
7.3.2 程序实例 185
7.3.3 注意事项与总结 186
7.4 休眠 186
7.4.1 从休眠中唤醒 186
7.4.2 使用sleep指令时的注意事项 188
7.5 看门狗定时器 189
7.5.1 什么是看门狗定时器(WDT) 189
7.5.2 看门狗定时器的动作时间 190
7.5.3 检测看门狗定时器的动作 191
7.6 汇编器的其他功能 191
7.6.1 条件汇编 191
7.6.2 宏功能 192
7.7 头文件的阅读方法 194
7.8 应用指南的使用方法 196
7.8.1 AN617定点数的运算程序 196
7.8.2 AN617的使用方法 198
7.8.3 定点数 201
7.8.4 计算程序应用指南 202
7.9 其他14位PIC微控制器的使用 202
7.9.1 PIC12F675的使用 202
7.10 调试要点 211
7.11 本书结束语 213
附录A PIC的开发步骤 215
附录B 向PIC微控制器写入程序 239
附录C 指令表 263
附录D PIC16F877A特殊功能寄存器一览表 289