词条 | PIC技术宝典 |
释义 | 《PIC技术宝典》是著名嵌入式技术专家Mazldl白勺最新力作,由李中华等译著、人民邮电出版社出版,本书以PlCl8为例系统全面地介绍了PIC微控制器的原理与嵌入式系统应用,还提供了许多简洁实用的实例和例程,内容涵盖PIC的C语言与汇编语言编程和接口的各个方面,本书紧密围绕PIC18系列微控制器原理及嵌入式系统应用展开,对PIC18系列微控制器的硬件和软件面的基本知识和特性,着重描述其硬件结构、软件编程和接口技术及其嵌入式应用等问题。适合作为高等院校相关专业课程教材,也是有关系统开发的工程技术人员的参考书。 PIC技术宝典作者:(美国)Muhammad Ali Mazidi 、Rolin D.Mckinlay 、Danny Causey 等 译者:李中华 张雨浓 陈卓怡 等 出版社:人民邮电出版社 页码:700 页 出版日期:2008年 ISBN:7115185549/9787115185549 条形码:9787115185549 版本:1版 装帧:平装 开本:16 中文:中文 丛书名:图灵电子电气工程丛书 外文书名:PIC Microcontroller and Embedded systems 编辑推荐《PIC技术宝典》是关于PIC微控制器的经典著作, 美国Mjcrochip公司推出的PIC系列产品已成为目前应用最广泛的微控制器。 《PIC技术宝典》还可作为高等院校教材,每节的结尾都配有习题,有利于学生巩固本节要点;同时在章末附有本章习题,有利于教师对学生进行考察。 《PIC技术宝典》原版配套网站。供实验手册、勘误和程序源代码等信息Muhammad Ail Mazidi 美国DeVry大学资深教授,著名嵌入式系统专家,具有丰富的教学和实践经验他编写的80x86和8051方面的教材已被全世界众多高校采用.都是公认的经典李中华博士,现任中山大学信息科学与技术学院讲师、硕士生导师主持和参与国家、部省、市级课题若干.发表学术论文40余篇.其中多数为SCI/EI/lSTP/INSPEC所收录.出版著作1部计算机软件著作权2部、申请发明专利2部主要研究兴趣为嵌入式系统及自动化、智能系统与先进控制张溺浓博士现任中山大学信息科学与技术学院“百人计划”教授、博士生导师,2007年入选教育部新世纪优秀人才支持计划 在国际顶级杂志和会议上发表论文40余篇 其中lEEE杂志论文8篇,主持国家自然科学基金2项主要研究领域为冗余机器人 递归神经网络、高斯过程、科学计算和软硬件开发。 目录第0章 计算入门 1 0.1 数制和编码系统 1 0.1.1 十进制和二进制数制系统 1 0.1.2 十进制数转换成二进制数 2 0.1.3 二进制数转换成十进制数 2 0.1.4 十六进制系统 3 0.1.5 二进制和十六进制之间的转换 3 0.1.6 十进制数转换成十六进制数 4 0.1.7 十六进制数转换成十进制数 4 0.1.8 十进制、二进制和十六进制计数 5 0.1.9 二进制数和十六进制数加法 5 0.1.10 补码 6 0.1.11 十六进制数的加法和减法 6 0.1.12 十六进制数的加法 6 0.1.13 十六进制数的减法 6 0.1.14 ASCII码 7 0.1.15 复习题 7 0.2 数字入门 8 0.2.1 二进制逻辑 8 0.2.2 逻辑门 8 0.2.3 使用逻辑门设计电路 10 0.2.4 译码器 11 0.2.5 触发器 12 0.2.6 复习题 12 0.3 计算机内部 12 0.3.1 一些重要术语 12 0.3.2 计算机的内部组成 13 0.3.3 数据总线概述 13 0.3.4 地址总线概述 14 0.3.5 CPU及其和RAM、ROM的关系 14 0.3.6 CPU内部 15 0.3.7 计算机的内部工作 16 0.3.8 复习题 17 小结 17 习题 18 复习题答案 19 第1章 PIC微控制器的历史和特性 21 1.1 微控制器与嵌入式处理器 21 1.1.1 微控制器和通用微处理器 21 1.1.2 应用于嵌入式系统的微控制器 22 1.1.3 x86PC嵌入式应用 23 1.1.4 微控制器的选择 24 1.1.5 微控制器的选择标准 24 1.1.6 机电学与微控制器 25 1.1.7 复习题 25 1.2 PIC18系列概述 25 1.2.1 PIC微控制器的发展简史 25 1.2.2 PIC18特性 26 1.2.3 其他微控制器 30 1.2.4 复习题 31 小结 31 习题 32 复习题答案 33 第2章 PIC体系结构与汇编语言编程 34 2.1 PIC的WREG寄存器 34 2.1.1 WREG寄存器 35 2.1.2 MOVLW指令 35 2.1.3 ADDLW指令 35 2.1.4 复习题 37 2.2 PIC文件寄存器 37 2.2.1 PIC文件寄存器(数据RAM)空间分配 37 2.2.2 PIC芯片中的GP RAM和EEPROM比较 38 2.2.3 PIC18的文件寄存器与访问存储区 39 2.2.4 复习题 41 2.3 默认访问存储区的指令操作 41 2.3.1 MOVWF指令 41 2.3.2 关于WREG和访问存储区的更多指令 42 2.3.3 COMF指令 46 2.3.4 DECF指令 47 2.3.5 MOVE指令 47 2.3.6 MOVFF指令 48 2.3.7 复习题 49 2.4 PIC 状态寄存器 49 2.4.1 PIC18状态寄存器 49 2.4.2 ADDLW指令和状态寄存器 50 2.4.3 并非所有指令都会影响标志位 50 2.4.4 标志位和判决 52 2.4.5 复习题 52 2.5 PIC数据格式和伪指令 53 2.5.1 PIC数据类型 53 2.5.2 数据格式描述 53 2.5.3 汇编伪指令 54 2.5.4 使用EQU做定值分配 55 2.5.5 使用EQU做SFR地址分配 55 2.5.6 使用EQU做RAM地址分配 56 2.5.7 汇编语言的标签规则 57 2.5.8 复习题 57 2.6 PIC汇编语言编程 58 2.6.1 汇编语言结构 58 2.6.2 复习题 59 2.7 汇编和连接PIC程序 60 2.7.1 关于asm、err和目标文件的更多信息 61 2.7.2 列表文件和映像文件 62 2.7.3 复习题 62 2.8 PIC的程序计数器和程序ROM空间 62 2.8.1 PIC的程序计数器 63 2.8.2 PIC18系列ROM的内存分配 63 2.8.3 通电时PIC的启动 64 2.8.4 在程序ROM里放置代码 65 2.8.5 程序的逐字节执行 66 2.8.6 PIC18 ROM数据宽度 66 2.8.7 PIC的哈佛结构 68 2.8.8 PIC18的指令大小 69 2.8.9 MOVLW指令格式 69 2.8.10 ADDLW指令格式 69 2.8.11 MOVWF指令格式 69 2.8.12 MOVFF指令格式 70 2.8.13 GOTO指令格式 70 2.8.14 从其他微处理器过渡到PIC18 70 2.8.15 复习题 71 2.9 PIC的RISC结构 71 2.9.1 RISC结构 72 2.9.2 RISC的特性 72 2.9.3 复习题 74 2.10 使用MPLAB仿真器查看寄存器和存储器 74 小结 74 习题 76 复习题答案 80 第3章 分支、调用和时延循环 82 3.1 分支指令和循环 82 3.1.1 PIC的循环语句 82 3.1.2 循环嵌套 85 3.1.3 循环100 000次 87 3.1.4 其他的条件转移指令 87 3.1.5 所有的条件分支指令都是短跳转 89 3.1.6 短转移地址的计算 89 3.1.7 无条件分支指令 90 3.1.8 带有$符号的GOTO指令 91 3.1.9 复习题 92 3.2 CALL(调用)指令和栈 92 3.2.1 CALL指令 92 3.2.2 PIC18的栈和栈指针 92 3.2.3 如何访问PIC18的栈 93 3.2.4 压栈 93 3.2.5 出栈 93 3.2.6 CALL指令和栈的作用 94 3.2.7 栈的上限 95 3.2.8 在主程序里调用多个子例程 95 3.2.9 RCALL指令(相对调用指令) 97 3.2.10 复习题 98 3.3 PIC18的时延与指令流水线 98 3.3.1 PIC18的时延计算 98 3.3.2 流水线 98 3.3.3 PIC的指令周期时间 99 3.3.4 分支代价 99 3.3.5 PIC18的时延计算 100 3.3.6 时延的嵌套循环 101 3.3.7 PIC多级执行流水线 103 3.3.8 复习题 104 小结 105 习题 105 复习题答案 107 第4章 PIC I/O端口编程 108 4.1 PIC18的I/O端口编程 108 4.1.1 I/O端口引脚及其功能 108 4.1.2 TRIS寄存器在数据输出中的作用 110 4.1.3 TRIS寄存器在数据输入中的作用 111 4.1.4 端口A 114 4.1.5 端口A用作输入端口 114 4.1.6 端口B 114 4.1.7 端口B用作输入端口 115 4.1.8 端口A和端口B的双重功能 115 4.1.9 端口C 115 4.1.10 端口C用作输入端口 116 4.1.11 端口D 116 4.1.12 端口D作为输入端口 116 4.1.13 端口C和端口D的双重功能 116 4.1.14 端口E 117 4.1.15 访问8位数据的不同方法 117 4.1.16 读取后紧接的写I/O操作 118 4.1.17 复位时的端口状态 119 4.1.18 复习题 119 4.2 I/O位操作编程 120 4.2.1 I/O端口与位寻址 120 4.2.2 BSF(置位fileReg) 121 4.2.3 BCF(清零fileReg) 121 4.2.4 BTG(位翻转fileReg) 123 4.2.5 检测输入引脚 123 4.2.6 BTFSS(位测试fileReg,若为1则跳过) 123 4.2.7 BTFSC(位测试fileReg,若为0则跳过) 123 4.2.8 监测二进制位 124 4.2.9 读取二进制位 127 4.2.10 读输入引脚与读LATx端口 127 4.2.11 读端口的LATx 128 4.2.12 复习题 129 小结 129 习题 129 复习题答案 130 第5章 算术、逻辑指令和程序示例 132 5.1 算术指令 132 5.1.1 无符号数的加法 132 5.1.2 ADDWF和单字节的加法 133 5.1.3 ADDWFC和16位数的加法 134 5.1.4 BCD(二进制编码的十进制数)数字系统 134 5.1.5 非压缩BCD数 134 5.1.6 压缩BCD数 135 5.1.7 DAW指令 135 5.1.8 无符号数的减法 136 5.1.9 PIC减法的C标志位 138 5.1.10 无符号数的乘法 138 5.1.11 无符号数的除法 139 5.1.12 除法的应用 139 5.1.13 复习题 140 5.2 有符号数的概念及其算术运算 141 5.2.1 计算机中有符号数的概念 141 5.2.2 有符号的8位操作数 141 5.2.3 正数 141 5.2.4 负数 141 5.2.5 有符号数运算中的溢出问题 143 5.2.6 何时设置OV标志位 143 5.2.7 二进制补码运算指令 144 5.2.8 复习题 145 5.3 逻辑和比较指令 145 5.3.1 AND指令 145 5.3.2 OR指令 145 5.3.3 EX-OR指令 146 5.3.4 COMF指令(将fileReg取反) 147 5.3.5 NEGF指令(将fileReg取补) 147 5.3.6 比较指令 148 5.3.7 CPFSGT指令 148 5.3.8 CPFSEQ指令 148 5.3.9 CPFSLT指令 149 5.3.10 复习题 151 5.4 移位指令和数据串行化 152 5.4.1 文件寄存器的左移或右移操作 152 5.4.2 带进位的移位 152 5.4.3 串行化数据 153 5.4.4 字节数据的串行化 153 5.4.5 SWAPF fileReg, d 155 5.4.6 复习题 155 5.5 BCD和ASCII码转换 156 5.5.1 ASCII数 156 5.5.2 从压缩BCD码到ASCII码的转换 157 5.5.3 从ASCII码到压缩BCD码的转换 157 5.5.4 复习题 157 小结 158 习题 158 复习题答案 162 第6章 存储区转换、表处理、宏和模块 163 6.1 立即寻址与直接寻址方式 164 6.1.1 立即寻址方式 164 6.1.2 直接寻址方式 164 6.1.3 指令INCF fileReg,W与INCF fileReg,F的区别 165 6.1.4 DECFSZ指令和DECF指令 165 6.1.5 SFR及其地址 166 6.1.6 复习题 167 6.2 寄存器间接寻址方式 168 6.2.1 寄存器间接寻址方式 168 6.2.2 寄存器间接寻址方式的优点 168 6.2.3 FSR的自动增量 170 6.2.4 复习题 173 6.3 查询表与表处理 173 6.3.1 DB伪指令和程序ROM中的定值数据 173 6.3.2 PIC18的读表操作 174 6.3.3 TBLPTR的自动增量 175 6.3.4 查表和RETLW指令 177 6.3.5 访问RAM中的查询表 179 6.3.6 PIC18的写表操作 181 6.3.7 复习题 181 6.4 数据RAM的位寻址 181 6.4.1 可位寻址的文件寄存器数据RAM 182 6.4.2 文件寄存器的位寻址 182 6.4.3 状态寄存器的位寻址 184 6.4.4 复习题 185 6.5 PIC18的存储区转换 185 6.5.1 位A和存储区转换 185 6.5.2 BSR寄存器和存储区转换 186 6.5.3 存储区转换和指令INCF F,D,A 186 6.5.4 MOVFF指令和存储区 189 6.5.5 用MPLAB仿真器检查数据RAM空间 190 6.5.6 复习题 192 6.6 校验和与ASCII码子例程 192 6.6.1 ROM中的校验和 192 6.6.2 校验和程序 192 6.6.3 BCD到ASCII的转换程序 194 6.6.4 二进制(十六进制)到ASCII的转换程序 196 6.6.5 用存储区作为栈 197 6.6.6 复习题 198 6.7 宏和模块 198 6.7.1 什么是宏以及怎样声明宏 198 6.7.2 宏的定义 198 6.7.3 LOCAL伪指令 199 6.7.4 INCLUDE伪指令 201 6.7.5 NOEXPAND/EXPAND伪指令 201 6.7.6 宏与子例程 203 6.7.7 模块 204 6.7.8 编写模块 204 6.7.9 EXTERN伪指令 204 6.7.10 GLOBAL伪指令 204 6.7.11 连接模块 206 6.7.12 复习题 207 小结 207 习题 207 复习题答案 211 第7章 PIC C语言编程 213 7.1 C语言中的数据类型和时延 214 7.1.1 PIC18的C语言数据类型 214 7.1.2 无符号字符 214 7.1.3 有符号字符 216 7.1.4 无符号整型 216 7.1.5 有符号整型 216 7.1.6 其他数据类型 216 7.1.7 时延 217 7.1.8 复习题 219 7.2 C语言I/O编程 219 7.2.1 字节I/O编程 219 7.2.2 位寻址I/O编程 221 7.2.3 端口位的结构 222 7.2.4 复习题 227 7.3 逻辑操作 227 7.3.1 C语言的位操作符 228 7.3.2 C语言的按位移位操作 228 7.3.3 复习题 231 7.4 C语言的数据转换程序 231 7.4.1 ASCII数 231 7.4.2 压缩BCD码到ASCII码的转换 232 7.4.3 ASCII码到压缩BCD码的转换 232 7.4.4 ROM的校验和 234 7.4.5 PIC18二进制(十六进制)到十进制和ASCII的转换 235 7.4.6 复习题 236 7.5 C语言的数据串行化 236 7.6 C18程序存储区配置 239 7.6.1 RAM数据空间与代码数据空间 239 7.6.2 为数据分配程序空间 239 7.6.3 用于程序的NEAR与FAR 240 7.6.4 Pragma和数据与程序的固定地址分配 241 7.6.5 在指定的ROM地址放置代码 242 7.6.6 在指定的ROM地址放置代码 242 7.6.7 复习题 243 7.7 C18的数据RAM分配 243 7.7.1 C18 C编译器中RAM数据空间的用法 244 7.7.2 用于数据的near与far 245 7.7.3 在指定内存地址存放数据 246 7.7.4 覆盖存储类 248 7.7.5 复习题 250 小结 250 习题 251 复习题答案 252 第8章 PIC18F硬件连接与ROM程序载入 254 8.1 PIC18F452/458的引脚连接 254 8.1.1 复位后的程序计数器值 256 8.1.2 端口A、B、C、D和E 257 8.1.3 复习题 258 8.2 PIC18配置寄存器 258 8.2.1 CONFIG1H寄存器和振荡器时钟源 259 8.2.2 CONFIG2L寄存器和复位电压 262 8.2.3 CONFIG2H寄存器和看门狗定时器 264 8.2.4 CONFIG4L寄存器和背景调试程序 265 8.2.5 LIST伪指令 266 8.2.6 设置所有的配置寄存器 267 8.2.7 在MPLAB C18 C编译器中设置CONFIG寄存器 268 8.2.8 复习题 269 8.3 解释PIC18的Intel十六进制文件 269 8.3.1 分析Intel十六进制(INHX8M)文件 270 8.3.2 分析Intel十六进制文件(INHX32) 272 8.3.3 Intel十六进制分段文件(INHX8S) 275 8.3.4 复习题 275 8.4 PIC18 Trainer的设计和装载 276 8.4.1 基于PIC18F452/458的Trainer 277 8.4.2 PIC18 Trainer的连接 278 8.4.3 PIC18 Trainer程序下载 278 8.4.4 汇编语言和C语言编写的PIC18测试程序 278 8.4.5 故障检修的技巧 281 8.4.6 复习题 281 小结 282 习题 282 复习题答案 284 第9章 PIC18定时器的汇编编程和C编程 285 9.1 定时器0和定时器1编程 285 9.1.1 定时器的基本寄存器 285 9.1.2 定时器0寄存器和编程 285 9.1.3 T0CON(定时器0控制)寄存器 286 9.1.4 TMR0IF标志位 287 9.1.5 16位定时器编程 288 9.1.6 在16位模式下定时器0的编程步骤 288 9.1.7 计算定时器的载入值 291 9.1.8 使用Windows计算器寻找TH和TL 293 9.1.9 预分频器和长时延的产生 293 9.1.10 定时器0的8位模式编程 295 9.1.11 定时器0的8位模式编程步骤 296 9.1.12 编译器和负值 297 9.1.13 定时器1编程 298 9.1.14 复习题 301 9.2 计数器编程 301 9.2.1 T0CON寄存器中的T0CS位 301 9.2.2 使用外部晶振作为定时器1的时钟 302 9.2.3 复习题 306 9.3 定时器0和定时器1的C编程 306 9.3.1 用C访问定时器 306 9.3.2 计算使用定时器的时延 306 9.3.3 定时器0和定时器1用作计数器的C编程 311 9.4 定时器2和定时器3的编程 314 9.4.1 定时器2的编程 314 9.4.2 定时器3的编程 317 9.4.3 复习题 322 小结 322 习题 322 复习题答案 324 第10章 PIC18串行端口的汇编编程和C编程 326 10.1 串行通信基础 326 10.1.1 半双工和全双工传输 327 10.1.2 异步串行通信和数据帧 328 10.1.3 起始位和结束位 328 10.1.4 数据传输率 329 10.1.5 RS232标准 329 10.1.6 RS232引脚 329 10.1.7 数据通信的分类 330 10.1.8 检查RS232的握手信号 331 10.1.9 IBM PC/兼容 COM 端口 332 10.1.10 复习题 332 10.2 PIC18连接到RS232 332 10.2.1 PIC18的RX和TX引脚 332 10.2.2 MAX232 333 10.2.3 MAX233 333 10.2.4 复习题 334 10.3 PIC18串行端口的汇编语言编程 334 10.3.1 PIC18的SPBRG寄存器和波特率 334 10.3.2 TXREG寄存器 336 10.3.3 RCREG寄存器 336 10.3.4 TXSTA(发送状态和控制寄存器) 336 10.3.5 RCSTA(接收状态和控制寄存器) 337 10.3.6 PIR1(外部中断请求寄存器1) 338 10.3.7 PIC18串行数据发送编程 338 10.3.8 TXIF标志位的重要性 340 10.3.9 PIC18串行数据接收编程 340 10.3.10 RCIF标志位的重要性 341 10.3.11 PIC18的波特率翻两番 342 10.3.12 波特率的误差计算 344 10.3.13 发送和接收 347 10.3.14 基于中断的数据传输 348 10.3.15 复习题 349 10.4 PIC18串行端口的C编程 349 10.4.1 PIC18 C的数据发送和接收 349 10.4.2 复习题 350 小结 352 习题 352 复习题答案 354 第11章 用汇编和C语言进行中断编程 356 11.1 PIC18中断 356 11.1.1 中断和查询 356 11.1.2 中断服务程序 357 11.1.3 中断执行的步骤 357 11.1.4 PIC18的中断源 357 11.1.5 中断的使能和禁用 358 11.1.6 使能中断的步骤 359 11.1.7 复习题 360 11.2 定时器中断编程 360 11.2.1 定时器复零标志位和中断 360 11.2.2 使用C18编译器的PIC18中断C编程 365 11.2.3 复习题 369 11.3 外部硬件中断编程 369 11.3.1 外部中断INT0、INT1和INT2 369 11.3.2 下降沿触发中断 371 11.3.3 边沿触发中断采样 373 11.3.4 复习题 374 11.4 串行通信中断编程 374 11.4.1 RCIF和TXIF标志位与中断 374 11.4.2 使用PIC18中的串行COM 375 11.4.3 复习题 378 11.5 PORTB变化中断 378 11.6 PIC18的中断优先级 382 11.6.1 设置中断优先级 382 11.6.2 低优先级中断的C编程 390 11.6.3 中断嵌套 393 11.6.4 在任务转换时变量的快速保存 393 11.6.5 中断延迟 394 11.6.6 软件触发中断 394 11.6.7 复习题 394 小结 394 习题 395 复习题答案 397 第12章 LCD和键盘接口 399 12.1 LCD接口 399 12.1.1 LCD操作 399 12.1.2 LCD引脚描述 399 12.1.3 为LCD发送带时间延迟的命令和数据 401 12.1.4 使用busy标志位向LCD发送命令或数据 403 12.1.5 LCD数据表 405 12.1.6 使用TBLRD指令向LCD发送信息 408 12.1.7 复习题 412 12.2 键盘接口 413 12.2.1 键盘和PIC18的接口 413 12.2.2 使用扫描法进行按键检测 418 12.2.3 复习题 420 小结 420 习题 420 复习题答案 421 第13章 ADC、DAC和传感器接口 422 13.1 ADC特性 422 13.1.1 ADC设备 422 13.1.2 复习题 426 13.2 PIC18的ADC编程 426 13.2.1 PIC18F452/458的ADC特性编程 426 13.2.2 ADCON0寄存器 427 13.2.3 ADCON1寄存器 429 13.2.4 计算A/D转换时间 431 13.2.5 使用查询法对A/D转换器编程 432 13.2.6 PIC18F458 ADC的汇编语言编程 432 13.2.7 PIC18F458 A/D的C语言编程 433 13.2.8 使用中断法对A/D转换器编程 434 13.2.9 复习题 436 13.3 DAC接口 436 13.3.1 数模转换器(DAC) 436 13.3.2 MC1408 DAC(或DAC0808) 437 13.3.3 把DAC0808的Iout转换成电压 438 13.3.4 产生正弦波 438 13.3.5 DAC的C语言编程 440 13.3.6 复习题 441 13.4 传感器接口和信号调整 441 13.4.1 温度传感器 441 13.4.2 LM34和LM35温度传感器 441 13.4.3 信号调整和PIC18的LM35接口 442 13.4.4 温度的读取和显示 443 13.4.5 复习题 445 小结 445 习题 445 复习题答案 447 第14章 用闪存与EEPROM存储数据 448 14.1 半导体存储器 448 14.1.1 存储容量 448 14.1.2 存储区组织 448 14.1.3 速度 449 14.1.4 ROM 450 14.1.5 PROM和OTP 450 14.1.6 EPROM与UV-EPROM 450 14.1.7 EEPROM 451 14.1.8 闪存EPROM 452 14.1.9 掩模ROM 452 14.1.10 RAM(随机访问存储器) 453 14.1.11 SRAM 453 14.1.12 NV-RAM 454 14.1.13 DRAM 454 14.1.14 DRAM的封装问题 455 14.1.15 DRAM存储区组织 455 14.1.16 复习题 456 14.2 PIC18F只读闪存的擦写 457 14.2.1 使用TBLWR向闪存写入数据 457 14.2.2 写闪存的步骤 459 14.2.3 擦除闪存的步骤 464 14.2.4 闪存擦写操作的C语言编程 467 14.2.5 复习题 470 14.3 PIC18 EEPROM的数据读取和写入 470 14.3.1 向EEPROM写入数据 470 14.3.2 写EEPROM的步骤 471 14.3.3 读EEPROM的步骤 472 14.3.4 使用C语言访问EEPROM 475 14.3.5 复习题 478 小结 478 习题 478 复习题答案 480 第15章 CCP和ECCP编程 481 15.1 标准型和增强型CCP模块 481 15.1.1 CCP和计时器 481 15.1.2 CCP寄存器 482 15.1.3 CCP引脚 483 15.1.4 复习题 483 15.2 比较模式编程 483 15.2.1 比较模式编程的步骤 485 15.2.2 复习题 488 15.3 捕捉模式编程 489 15.3.1 捕捉模式编程的步骤 489 15.3.2 测量脉冲周期 489 15.3.3 测量脉宽 491 15.3.4 复习题 494 15.4 PWM编程 494 15.4.1 PWM周期 495 15.4.2 PWM的占空比 496 15.4.3 PWM编程的步骤 496 15.4.4 占空比与Fosc 499 15.4.5 复习题 499 15.5 ECCP编程 499 15.5.1 ECCP比较模式的编程步骤 501 15.5.2 ECCP捕捉模式的编程步骤 503 15.5.3 ECCP的PWM特征 504 15.5.4 ECCP的PWM编程步骤 504 15.5.5 复习题 505 小结 505 习题 505 复习题答案 507 第16章 SPI协议和DS1306RTC接口 508 16.1 SPI总线协议 508 16.1.1 SPI总线 508 16.1.2 SPI读写协议 509 16.1.3 将数据写入SPI设备的步骤 509 16.1.4 从SPI设备读数据的步骤 510 16.1.5 复习题 511 16.2 DS1306 RTC接口和编程 511 16.2.1 控制寄存器中WP位的重要性 514 16.2.2 DS1306的地址映射 514 16.2.3 时间和日期地址的位置和模式 515 16.2.4 使用MSSP模块来连接PIC18和DS1306 516 16.2.5 使用汇编设置时间 518 16.2.6 使用汇编设置日期 518 16.2.7 RTC设置、读取和显示时间和日期 519 16.2.8 复习题 522 16.3 DS1306 RTC的C编程 522 16.3.1 使用C语言设置时间和日期 522 16.3.2 使用C语言读取和显示时间和日期 523 16.3.3 复习题 524 16.4 DS1306的警报和中断特征 525 小结 533 习题 533 复习题答案 535 第17章 电机控制:继电器、PWM、DC电机和步进电机 536 17.1 继电器和光隔离器 536 17.1.1 机电继电器 536 17.1.2 继电器驱动 538 17.1.3 固态继电器 539 17.1.4 簧片开关 540 17.1.5 光隔离器 540 17.1.6 光隔离器的连接 540 17.1.7 复习题 541 17.2 步进电机的接口 542 17.2.1 步进电机 542 17.2.2 步进角 543 17.2.3 每秒的步数和rpm的关系 545 17.2.4 四步顺序和电机转子的齿数 545 17.2.5 电机速度 545 17.2.6 保持转矩 546 17.2.7 波驱动四步顺序 546 17.2.8 单极性与双极性步进电机的接口 546 17.2.9 使用晶体管作为驱动器 547 17.2.10 通过光隔离器来控制步进电机 548 17.2.11 用PIC18 C语言来控制步进电机 549 17.2.12 复习题 550 17.3 DC电机的接口和PWM 550 17.3.1 DC电机 550 17.3.2 单方向控制 551 17.3.3 双方向控制 551 17.3.4 脉冲宽度调制(PWM) 555 17.3.5 使用光隔离器控制DC电机 556 17.3.6 DC电机的控制和PWM的C编程 558 17.3.7 复习题 560 17.4 使用CCP来控制PWM电机 561 17.4.1 使用CCP来控制DC电机 561 17.4.2 复习题 561 17.5 使用ECCP来控制DC电机 563 17.5.1 使用ECCP来双向控制DC电机 563 17.5.2 复习题 566 小结 566 习题 567 复习题答案 568 附录A 569 附录B 608 附录C 610 附录D 626 附录E 630 附录F 632 附录G 634 附录H 636 索引 690 …… 序言微控制器是一种无处不在的内嵌型控制芯片,广泛用于工业控制、消费类电子产品、汽车、金融、军事、能源等领域。在强大的市场需求和日新月异的科技进步驱动下,微控制器产品不断推陈出新。PIC系列微控制器是全球领先的微控制器和模拟半导体供应商--美国微芯公司推出的嵌入式微控制器,具有运行速度快、工作电压低、功耗低、驱动能力强、体积小、价格低廉、指令简单易学易用等优点。PICl8系列微控制器就是其中的杰出产品之一。 本书涵盖学习微控制器所需的基础知识、PICl8微控制器的内部结构、汇编指令系统、C语言编程、接口技术及其应用实例,具有以下鲜明特点。 口本书采用计算机基础知识--P1C18微控制器内部结构--汇编指令--C编 ,程--外围接口--应用实例的授课思路,知识体系清晰、内容丰富,适应当今信息社 会对宽口径计算机类专业学生的培养需求。 口每章的开篇都简明地给出了本章的学习目标以及主要内容的结构分布,在每章末尾还 给出了小结,有助于读者进一步理解和思考所学知识,形成完整的知识体系。 口本书在介绍PIcl8微控制器原理及应用设计的同时,还配以丰富的设计实例,让读者 能充分体会到每一个设计细节,有利于快速培养读者的细致分析与设计系统的能力。 口对于主要的设计实例,本书分别给出了其汇编语言编程和C语言编程,通过对比学习 两类不同的编程思想和风格,使得学生很容易发现二者的联系、区别和优缺点,克服了 将汇编语言编程和C语言编程单独讲述的弊端。 口章后习题以及每节后的复习题进一步充实了全书的内容,有利于帮助读者更好地理解 相关基本理论。本书配有的附录,内容全面详尽,对读者而言是一本非常难得的技术 手册。 简而言之,本书结构清晰、内容丰富、通俗易懂,是一本不可多得的学习宝典。 本书由李中华、陈卓怡主译,李中华负责统稿,张雨浓负责审校。参加本书翻译和初校T作的还有杨波、孙宇佳、张董华、伍沛然等。在此,谨对所有为本书的出版提供了帮助的人们表示诚挚的谢意。 由于译审者不平所限,加之时间仓促,译文中难免有不妥乃至错误之处,敬请广大读者批评指正。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。