《PIC嵌入式系统开发》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(英)威尔姆舍斯特(TimWilmshurst)著;陈小文,闫志强等译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2008
  • ISBN:9787115182654
  • 页数:532 页
图书介绍:本书系统而全面地介绍了嵌入式系统设计的原理及其应用。包括嵌入式系统的指令集系统结构、流水线、存储设备、定时器、中断、时钟、并行串行通信、互连网络、开发环境、开发语言等重要内容。书中对嵌入式系统设计的讲解主要以Microchip公司的三款PIC微控制器(16F84A、16F873A和18F242)为基础,通过大量的设计实例,图文并茂地进行了生动地叙述。全书编排合理,叙述由浅入深,生动活泼。本书适合作为高等院校电子、机电和计算机工程相关专业嵌入式系统课程的教材或参考书,也可供工程技术人员和对嵌入式系统有兴趣的读者阅读。

第1章 微小的计算机,隐藏的控制 2

1.1当今嵌入式系统概述 2

1.2一些嵌入式系统例子 3

1.2.1家用电冰箱 3

1.2.2汽车车门机械装置 4

1.2.3电子乒乓球 5

1.2.4 Derbot自主导向车 5

1.3一些必备的计算机知识 7

1.3.1计算机的组成元素 7

1.3.2指令集——CISC和RISC 8

1.3.3存储器类型 8

1.3.4存储器组织结构 9

1.4微处理器和微控制器 10

1.4.1微处理器 10

1.4.2微控制器 10

1.4.3微控制器系列产品 11

1.4.4微控制器的封装和外观 12

1.5 Microchip公司和PIC微控制器 13

1.5.1背景 13

1.5.2今天的PIC微控制器 14

1.6以12系列为例介绍PIC微控制器 16

1.7其他微控制器——Freescale微控制器 18

小结 20

参考文献 20

第2章PIC?16系列和16F84A 22

2.1 PIC 16系列 22

2.1.1 PIC 16系列概述 22

2.1.2 16F84A 24

2.1.3谨慎升级 24

2.2 16F84A体系结构概述 24

2.3存储器技术回顾 27

2.3.1静态RAM 27

2.3.2 EPROM 28

2.3.3 EEPROM 28

2.3.4 Flash 29

2.4 16F84A的存储器 29

2.4.1 16F84A程序存储器 29

2.4.2 16F84A数据和特殊功能寄存器存储器(RAM) 30

2.4.3配置字 32

2.4.4 EEPROM 33

2.5一些有关时序的问题 34

2.5.1时钟振荡器和指令周期 34

2.5.2流水线操作 35

2.6上电和复位 36

2.7其他微控制器——Atmel AT89C2051微控制器 37

2.8更多细节——16F84A片上复位电路 38

小结 40

参考文献 41

第3章 并行端口、电源和时钟振荡器 42

3.1并行输入/输出概述 42

3.2并行输入/输出的技术挑战 43

3.2.1设计并行端口 43

3.2.2端口的电学特性 46

3.2.3一些特殊的端口特性 47

3.3与并行端口连接的设备 48

3.3.1开关 48

3.3.2发光二极管 49

3.4 PIC 16F84A并行端口 51

3.4.1 16F84A端口B 52

3.4.2 16F84A端口A 53

3.4.3端口的输出特性 53

3.5时钟振荡器 55

3.5.1时钟振荡器类型 55

3.5.2实际使用振荡器时要考虑的问题 56

3.5.3 16F84A的时钟振荡器 56

3.6电源 58

3.6.1对电源的要求 58

3.6.2 16F84A的工作条件 58

3.7电子乒乓球游戏的硬件设计 60

小结 60

参考文献 61

第4章 编程伊始——汇编介绍 62

4.1程序功能与开发流程 63

4.1.1编程问题和汇编折中方案 63

4.1.2采用汇编语言编写程序的流程 64

4.1.3程序开发流程 65

4.2 PIC 16系列指令集和ALU 66

4.2.1 PIC 16系列ALU 66

4.2.2 PIC 16系列指令集 67

4.3汇编器和汇编格式 68

4.3.1汇编器及Microchip MPASMTM汇编器简介 68

4.3.2汇编格式 68

4.3.3汇编伪指令 69

4.3.4数的表示 69

4.4编写简单的程序 70

4.5使用开发环境编程 72

4.5.1 MPLAB介绍 72

4.5.2 MPLAB的组成部分 73

4.5.3 MPLAB文件结构 74

4.6 MPLAB指南 74

4.6.1创建项目 75

4.6.2编写源代码 75

4.6.3对项目进行汇编 76

4.7程序仿真简介 77

4.7.1开始仿真 77

4.7.2产生端口输入 78

4.7.3观察微控制器各部分状态 78

4.7.4程序复位和运行 79

4.8下载程序到微控制器 80

4.9 CISC指令集和RISC指令集比较 82

4.10更多的了解——16系列指令集格式 83

小结 84

参考文献 84

第5章 创建汇编程序 85

5.1创建结构化程序概述 85

5.1.1流程图 85

5.1.2状态图 86

5.2流程控制——分支和子例程 88

5.2.1条件分支和位操作 88

5.2.2子例程和栈 89

5.3产生延时和时间间隔 91

5.4数据处理 92

5.4.1直接寻址和文件选择寄存器 93

5.4.2查找表 93

5.4.3包含延时循环和查找表的程序例子 95

5.5逻辑指令 97

5.6算术指令和进位标志 97

5.6.1加法指令 98

5.6.2减法指令 98

5.6.3一个算术程序例子 98

5.6.4通过间接寻址来保存斐波那契数列 100

5.7更复杂的汇编程序 102

5.7.1包含文件 102

5.7.2宏指令(Macro) 103

5.7.3 MPLAB特殊指令 104

5.8 MPLAB仿真器的更多用处 105

5.8.1断点 105

5.8.2跑表 106

5.8.3跟踪 107

5.9电子乒乓球游戏程序 108

5.9.1程序结构 108

5.9.2程序代码分析 110

5.10电子乒乓球游戏程序仿真 111

5.10.1设置输入激励 111

5.10.2设置Watch窗口 111

5.10.3单步运行 111

5.10.4连续单步运行 112

5.10.5运行 112

5.10.6断点 112

5.10.7跑表 112

5.10.8跟踪 113

5.10.9调试整个程序 113

5.11其他仿真器介绍——图形化的传真器 114

小结 114

参考文献 114

第6章 与计时相关的设备:中断、计数器和定时器 115

6.1中断 115

6.1.1中断结构 116

6.1.2 16F84A中断结构 117

6.1.3 CPU对中断的响应 118

6.2编写含有中断的程序 119

6.2.1编写仅含一个中断的程序 119

6.2.2编写含有多个中断的程序——识别中断源 121

6.2.3阻止中断对程序的破坏——保存上下文 122

6.2.4阻止中断对程序的破坏——临界区域和中断屏蔽 124

6.3计数器和定时器概述 126

6.3.1数字计数器回顾 126

6.3.2将计数器用作定时器 127

6.3.3 16F84A Timer 0模块 128

6.4 16F84A Timer 0的使用——以电子乒乓球游戏为例 130

6.4.1对目标或事件计数 130

6.4.2硬件产生的延时 131

6.5看门狗定时器 133

6.6休眠模式 133

6.7其他中断 134

6.8更多的了解——中断响应延时 135

小结 136

第7章 较大的系统和PIC?16F873A 138

7.1 PIC16F87XA概述 139

7.2 16F873A的结构图和CPU 140

7.2.1 CPU和核 141

7.2.2存储器 141

7.2.3外围设备 142

7.3 16F873A的存储器和存储器映射 142

7.3.1 16F873A的程序存储器 142

7.3.2 16F873A的数据存储器和特殊功能寄存器 144

7.3.3配置字 146

7.4“特殊”的存储器操作 146

7.4.1存取EEPROM和程序存储器 147

7.4.2电路内串行编程(ICSP.TM) 149

7.5 16F873A的中断 149

7.5.1中断结构 149

7.5.2中断寄存器 150

7.5.3中断识别和上下文保存 152

7.6 16F873A的振荡器、复位和电源 152

7.6.1时钟振荡器 152

7.6.2复位和电源 152

7.7 16F873A的并行端口 153

7.7.1 16F873A的端口A 153

7.7.2 16F873A的端口B 155

7.7.3 16F873A的端口C 155

7.8测试、调试、诊断工具 156

7.8.1测试嵌入式系统的挑战 156

7.8.2示波器和逻辑分析仪 158

7.8.3电路内仿真器 160

7.8.4片上调试器 161

7.9 Microchip公司的电路内调试器(ICD2) 162

7.10应用16F873A: DerbotAGV 163

7.10.1电源、振荡器和复位 163

7.10.2并行端口的使用 164

7.10.3硬件集成 165

7.11使用ICD 2下载、测试和运行一个简单的程序 166

7.11.1第一个AGV程序 166

7.11.2应用电路内调试器ICD 2 168

7.11.3在程序中设置配置字 169

7.12深入了解16F874A/16F877A的端口D和端口E 171

小结 173

参考文献 173

第8章 人机接口和物理接口 174

8.1人机接口概述 174

8.2从开关到键盘 176

8.2.1键盘 177

8.2.2设计实例:Derbot手动控制器中键盘的使用 178

8.3 LED显示 182

8.3.1 LED阵列:七段LED显示 182

8.3.2设计实例:在Derbot手动控制器中使用七段LED显示 184

8.4 LCD 188

8.4.1 HD44780驱动和它的衍生电路 188

8.4.2设计实例:在Derbot手动控制器中使用LCD显示器 190

8.5与物理世界交互 192

8.6一些简单的传感器 193

8.6.1微开关 193

8.6.2光敏电阻 194

8.6.3光学方式的物体感知 194

8.6.4光学传感器用于轴角编码器 195

8.6.5超声波方式的物体感知 196

8.7深入学习数字信号输入 196

8.7.1 16F873A的输入特性 197

8.7.2确保正常的电压幅度和输入保护 198

8.7.3消除开关反弹 201

8.8执行器:电机和伺服 202

8.8.1直流电机和步进电机 202

8.8.2角度定位:伺服传动装置 203

8.9与执行器进行交互 204

8.9.1简单的直流转换 204

8.9.2 AGV中简单的开关电路 206

8.9.3双向开关:H-桥 207

8.9.4 AGV中的电机开关 209

8.10 AGV硬件集成 209

8.11应用传感器和执行器——AGV“盲目”导航程序 210

小结 212

参考文献 212

第9章 深入学习计时 213

9.1深入学习计数和计时 213

9.2 16F87XA Timer 0和Timer 214

9.2.1 Timer 0 214

9.2.2 Timer 1 214

9.2.3使用Timer 0和Timer作为AGV里程表的计数器 216

9.2.4使用Timer 0和Timer产生重复性中断 219

9.3 16F87XA的Timer比较器和PR 2寄存器 220

9.3.1 Timer 2 220

9.3.2 PR2寄存器、比较器和后分频比器 221

9.4捕捉/比较/PWM(CCP)模块 222

9.4.1捕捉/比较/PWM概论 222

9.4.2捕捉模式 223

9.4.3比较模式 224

9.5脉宽调制 225

9.5.1 PWM的原理 225

9.5.2在硬件中产生PWM信号—— 16F87XA的PWM模块 226

9.5.3将PWM应用于AGV中电机的控制 228

9.6软件产生PWM 231

9.6.1一个软件产生PWM的例子 231

9.6.2与存储器定义和跳转相关的汇编伪指令 235

9.7使用PWM进行数模转换 236

9.8频率测量 239

9.8.1频率测量的原理 239

9.8.2 AGV中的频率(速度)测量 239

9.9在AGV中应用速度控制 242

9.10当没有可用定时器时 245

9.11休眠模式 247

9.12后面我们将学习什么 248

9.13 AGV硬件集成 248

小结 248

参考文献 249

第10章 串行端口通信 250

10.1串行端口简介 250

10.2简单串行连接——同步数据通信 252

10.2.1同步通信基础 252

10.2.2在微控制器中实现同步串行I/O 253

10.2.3 Microwire和SPI 254

10.2.4引入多个节点 254

10.3 16F87XA主同步串行端口(MSSP)模块的SPI模式 255

10.3.1端口概述 255

10.3.2端口配置 256

10.3.3时钟设置 257

10.3.4管理数据传输 258

10.4 SPI的简单例子 259

10.5 Microwire和SPI以及简单同步串行传输的局限性 261

10.6增强的同步串行通信及芯片间总线 261

10.6.1 I2 C的主要特性与物理连接 261

10.6.2上拉电阻 262

10.6.3 I2C信号特性 262

10.7配置为I2C的MSSP 263

10.7.1 MSSP中的I2C寄存器及其基本应用 263

10.7.2 I2C从动模式下的MSSP 267

10.7.3 I2C主控模式下的MSSP 269

10.8在Derbot AGV中应用I2C 270

10.8.1将Derbot手动控制器用作串行节点 270

10.8.2将AGV用作12C主控器 271

10.8.3将手动控制器用作I2 C从动器 275

10.8.4 Derbot I2 C程序验证 277

10.9对同步串行数据通信的评价及对异步通信方式的介绍 278

10.9.1异步原理 278

10.9.2在不接收时钟信号时如何对串行数据进行同步 279

10.10 16F87XA可寻址通用同步异步收发器(USART) 280

10.10.1端口概述 280

10.10.2 USART异步发送器 280

10.10.3 USART波特率发生器 282

10.10.4 USART异步接收器 283

10.10.5异步通信示例 284

10.10.6在USART接收模式下使用地址检测 286

10.10.7 USART、的同步模式 287

10.11不借助串行端口实现串行通信——“bit banging” 287

10.12构建Derbot手动控制器 287

小结 287

参考文献 288

第11章 数据采集与处理 289

11.1模拟量和数字量的采集与使用概述 289

11.2数据采集系统 290

11.2.1模数转换器 290

11.2.2信号调理——放大与滤波 293

11.2.3模拟多路选择器 293

11.2.4采样与保持以及采集时间 293

11.2.5时序及微处理器控制 295

11.2.6微控制器环境下的数据采集 296

11.3 PIC?16F87XA中的ADC模块 296

11.3.1概述与框图 296

11.3.2控制ADC 297

11.3.3模拟输入模型 300

11.3.4计算采集时间 301

11.3.5重复转换 302

11.3.6综合权衡转换速率与转换精度 302

11.4在Derbot测光程序中应用ADC 303

11.4.1 ADC的配置 304

11.4.2采集时间 304

11.4.3数据转换 304

11.5一些简单的数据处理技术 305

11.5.1定点与浮点算术 305

11.5.2二进制数向BCD码的转换 306

11.5.3乘法 307

11.5.4比例缩放与Derbot测光示例 307

11.5.5使用参考电压实现比例缩放 308

11.6 Derbot寻光程序 309

11.7比较器模块 311

11.7.1比较器动作概述 311

11.7.2 16F87XA的比较器与参考电压 311

11.8将Derbot电路用于其他测量 312

11.8.1电子测距仪 312

11.8.2测光仪 313

11.8.3电压计 314

11.8.4其他测量系统 314

11.9将Derbot配置为寻光机器人 314

小结 314

参考文献 315

第12章 更灵巧的系统与PIC?18 FXX2 318

12.1 PIC 18系列及18FXX2概述 319

12.2 18F2X2结构图与状态寄存器 320

12.3 18系列指令集 324

12.3.1未变化的指令 327

12.3.2经过升级的指令 328

12.3.3变化而来的新指令 328

12.3.4全新指令 328

12.4数据存储器与特殊功能寄存器 329

12.4.1数据存储器映射 329

12.4.2存取RAM 329

12.4.3间接寻址以及在数据存储器中访问表格 329

12.5程序存储器 332

12.5.1程序存储器映射 332

12.5.2程序计数器 332

12.5.3在16系列基础上增强的计算goto指令 333

12.5.4配置寄存器 334

12.6栈 335

12.6.1自动栈操作 335

12.6.2程序员对栈的访问 336

12.6.3快速寄存器栈 336

12.7中断 336

12.7.1中断结构概览 337

12.7.2中断源的启用与优先级划分 337

12.7.3总体中断优先级启用 338

12.7.4全局启用 338

12.7.5中断逻辑的其他方面 338

12.7.6中断寄存器 339

12.7.7中断的上下文保护 343

12.8电源与复位 343

12.8.1电源 343

12.8.2上电与复位 343

12.9振荡源 345

12.9.1 LP、 XT、 HS和RC振荡器模式 345

12.9.2 EC、 ECIO和RCIO振荡器模式 345

12.9.3 HS+PLL振荡器模式 346

12.9.4时钟源切换 346

12.10 18F242编程入门 346

12.10.1使用18系列MPLABIDE 347

12.10.2斐波那契程序 347

小结 349

参考文献 349

第13章PIC?18FXX2外围设备 350

13.1 18FXX2外围设备概述 350

13.2并行端口 351

13.2.1 18FXX2的端口A 351

13.2.2 18FXX2的端口B 352

13.2.3 18FXX2的端口C 353

13.2.4并行从动端口 353

13.3定时器 353

13.3.1 Timer 0. 353

13.3.2 Timer 1. 355

13.3.3 Timer 2. 356

13.3.4 Timer 3. 356

13.3.5看门狗定时器 357

13.4比较/捕捉/PWM(CCP)模块 358

13.4.1控制寄存器 358

13.4.2捕捉模式 359

13.4.3比较模式 359

13.4.4脉宽调制 360

13.5串行端口 360

13.5.1 SPI模式下的MSSP 360

13.5.2 I2C模式下的MSSP 361

13.5.3 USART 361

13.6模数转换器(ADC) 361

13.7低压检测 361

13.8在Derbot-18中应用18系列 363

13.9 18F2420与扩展指令集 363

13.9.1纳瓦技术 364

13.9.2扩展指令集 364

13.9.3增强型外围设备 365

小结 365

参考文献 365

第14章C语言入门 366

14.1为何选择C语言 366

14.2 C语言简介 367

14.2.1简史 367

14.2.2第一个C程序 367

14.2.3程序结构——声明、语句、注释和空格 368

14.2.4 C语言关键字 370

14.2.5 C语言函数 370

14.2.6数据类型与存储 371

14.2.7 C运算符 372

14.2.8程序流的控制以及while关键字 372

14.2.9 C预处理器及其伪指令 373

14.2.10使用库和标准库 373

14.3编译C程序 373

14.4 MPLAB C18编译器 374

14.4.1数制规范 375

14.4.2算术运算 375

14.5C18指南 375

14.5.1连接器和连接器脚本 375

14.5.2连接头文件和库文件 376

14.5.3构建项目 377

14.5.4项目文件 378

14.6仿真C程序 378

14.7第2个C例程——斐波那契程序 380

14.7.1程序初步——进一步认识变量声明 381

14.7.2 do-while结构 381

14.7.3标号和goto关键字 381

14.7.4仿真斐波那契程序 381

14.8 MPLAB C18库 382

14.8.1硬件外围设备函数 382

14.8.2软件外围设备库 382

14.8.3通用软件库 383

14.8.4数学库 384

14.9深度阅读 385

小结 385

参考文献 385

第15章C语言与嵌入式环境 387

15.1使C语言适用于嵌入式环境 387

15.2位值的控制与分支 387

15.2.1控制各个位 389

15.2.2 if与if-else条件分支结构 389

15.2.3设置配置位 390

15.2.4仿真并运行例程 390

15.3进一步认识函数 391

15.3.1函数原型 391

15.3.2函数定义 392

15.3.3函数调用与数据传递 392

15.3.4延时库函数和Delay10KTCYx() 393

15.4更多的分支与循环指令 393

15.4.1使用break关键字 393

15.4.2使用for关键字 394

15.5使用定时器与PWM外围设备 395

15.5.1使用定时器外围设备 397

15.5.2使用PWM 398

15.5.3主程序循环 399

小结 399

第16章 使用C语言实现数据的采集与使用 400

16.1用C语言实现数据处理 400

16.2使用18FXX2 ADC 400

16.2.1寻光程序的结构 404

16.2.2使用ADC 405

16.2.3 if-else的更多应用 406

16.2.4寻光程序的仿真 406

16.3指针、数组与字符串 408

16.3.1指针 408

16.3.2数组 408

16.3.3对数组使用指针 409

16.3.4字符串 409

16.3.5指针、数组和字符串的应用例程 409

16.3.6对while条件的补充说明 411

16.3.7仿真例程 411

16.4使用I2C外围设备 413

16.4.1 I2C例程 413

16.4.2使用++和--运算符 415

16.5格式化显示数据 416

16.5.1例程概览 416

16.5.2使用库函数实现数据的格式化 418

16.5.3程序分析 418

小结 419

第17章 深入学习C语言编程和更丰富的C语言编程环境 420

17.1深入学习C语言编程和更丰富的C语言编程环境 420

17.2插入汇编 421

17.3控制存储器分配 422

17.3.1存储器分配伪指令pragma 422

17.3.2设置配置字 423

17.4中断 424

17.4.1中断服务程序 424

17.4.2定位和识别中断服务程序 424

17.5使用溢出中断的例子——闪烁AGV上的LED 425

17.5.1使用Timer 0. 426

17.5.2中断的使用和中断服务程序的动作 427

17.5.3仿真闪烁LED程序 427

17.6变量的存储类型及其应用 429

17.6.1存储类型 429

17.6.2可见性 430

17.6.3生存期 430

17.6.4连接 430

17.6.5 18系列中指定变量的存储器类型 431

17.6.6存储类型举例 431

17.7启动文件:c018i.c 432

17.7.1 C18启动文件 432

17.7.2 c018i.c文件的结构 433

17.7.3仿真c018i.c文件 433

17.8结构体、联合体和位域 435

17.9处理器相关的头文件 436

17.9.1 SFR定义 436

17.9.2头文件中汇编相关的定义 437

17.10深入学习——MPLAB连接器和.map文件 437

17.10.1连接器的功能 437

17.10.2连接器脚本 438

17.10.3.map文件 439

小结 440

参考文献 441

第18章 多任务实时操作系统 442

18.1由多任务和实时引发的挑战 442

18.1.1多任务——任务、优先权、截止时间 443

18.1.2“实时”的含义 444

18.2通过顺序编程来实现多任务 444

18.2.1分析超循环 445

18.2.2时间触发和事件触发的任务 445

18.2.3使用中断来区分优先级——前台/后台结构 445

18.2.4引入“时钟滴答”来同步程序活动 446

18.2.5一个通用的“操作系统” 446

18.2.6顺序编程实现多任务的限制 448

18.3实时操作系统 448

18.4调度策略和调度器 448

18.4.1循环调度 449

18.4.2时间片轮转调度和上下文切换 449

18.4.3任务状态 450

18.4.4抢占式优先级调度 451

18.4.5协作式调度 452

18.4.6中断在任务调度中的作用 452

18.5任务开发 453

18.5.1任务定义 453

18.5.2编写任务以及设置任务优先级 453

18.6数据和资源保护——信号量 454

18.7后面我们将学习什么 454

小结 455

参考文献 455

第19章SalvoTM实时操作系统 456

19.1 Salvo实时操作系统概述 456

19.1.1 Salvo的基本特性 456

19.1.2 Salvo版本和相关的参考文献 457

19.2配置Salvo应用程序 458

19.2.1构建Salvo应用程序——构建库 458

19.2.2 Salvo库 458

19.2.3 C18和Salvo版本 459

19.3编写Salvo程序 460

19.3.1初始化和调度 460

19.3.2编写Salvo任务 461

19.4第一个Salvo例程 461

19.4.1程序的总体结构和main函数 463

19.4.2任务和调度 464

19.4.3创建一个Salvo/C18项目 464

19.4.4配置文件的设置 465

19.4.5构建Salvo例子 465

19.4.6仿真Salvo程序 466

19.5在Salvo程序中使用中断、延迟和信号量 467

19.5.1一个使用中断驱动的时钟滴答的例程 468

19.5.2选择库和配置 470

19.5.3使用中断和产生时钟滴答 470

19.5.4使用延迟 472

19.5.5使用一个二元信号量 472

19.5.6程序仿真 474

19.5.7运行程序 475

19.6使用Salvo消息和增加RTOS复杂度 475

19.7一个使用消息的例程 476

19.7.1选择库和配置 481

19.7.2任务:USnd Task 481

19.7.3任务:Motor Task 481

19.7.4消息的用法 482

19.7.5中断的使用和ISR 483

19.7.6仿真或者运行程序 485

19.8 RTOS开销 485

小结 485

参考文献 486

第20章 互连与网络 488

20.1网络互连概述 488

20.2红外线连接 490

20.3无线电连接 491

20.3.1蓝牙 491

20.3.2紫蜂 492

20.3.3紫峰和PIC微控制器 492

20.4控制器局域网和局域互联网 493

20.4.1控制器局域网 493

20.4.2 CAN和PIC微控器 494

20.4.3局域互联网 495

20.4.4 LIN和PIC微控制器 496

20.5嵌入式系统和互联网 497

20.6总结 498

小结 498

参考文献 499

附录1 PIC?16系列指令集 500

附录2电子乒乓球游戏 502

附录3 Derbot AGV硬件设计细节 507

附录4自主导向车的一些基本知识 511

附录5 PIC?18系列指令集(非扩展) 515

附录6 C语言要点 519

索引 523