《PIC技术宝典》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(美)MuhammadAliMazidi,RolinD.McKinlay,DannyCausey著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2008
  • ISBN:9787115185549
  • 页数:700 页
图书介绍:本书介绍了PIC18微控制器的原理及嵌入式系统应用,涵盖PIC18的C语言与汇编语言程序编程和接口的各个方面,不仅为读者建立了汇编语言程序设计的基础,而且为工程学科的学生提供了一种容易理解的关于PIC18接口的处理方法。本书还提供了许多示例和例程,为学生提供了动手学习的机会。另外,每一节的结尾都配有习题,利于学生巩固本节要点。

第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 复习题 158

小结 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 复习题 562

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