图书介绍

PIC嵌入式系统开发PDF|Epub|txt|kindle电子书版本下载

PIC嵌入式系统开发
  • (英)威尔姆舍斯特(TimWilmshurst)著;陈小文,闫志强等译 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:9787115182654
  • 出版时间:2008
  • 标注页数:532页
  • 文件大小:122MB
  • 文件页数:551页
  • 主题词:单片微型计算机,PIC系列-系统开发

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

PIC嵌入式系统开发PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第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和RISC8

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系列和16F84A22

2.1 PIC 16系列22

2.1.1 PIC 16系列概述22

2.1.2 16F84A24

2.1.3谨慎升级24

2.2 16F84A体系结构概述24

2.3存储器技术回顾27

2.3.1静态RAM27

2.3.2 EPROM28

2.3.3 EEPROM28

2.3.4 Flash29

2.4 16F84A的存储器29

2.4.1 16F84A程序存储器29

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

2.4.3配置字32

2.4.4 EEPROM33

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端口B52

3.4.2 16F84A端口A53

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系列指令集和ALU66

4.2.1 PIC 16系列ALU66

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?16F873A138

7.1 PIC16F87XA概述139

7.2 16F873A的结构图和CPU140

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的端口A153

7.7.2 16F873A的端口B155

7.7.3 16F873A的端口C155

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: DerbotAGV163

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 2168

7.11.3在程序中设置配置字169

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

小结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 LCD188

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和Timer214

9.2.1 Timer 0214

9.2.2 Timer 1214

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 2220

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软件产生PWM231

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/O253

10.2.3 Microwire和SPI254

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的MSSP263

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

10.7.2 I2C从动模式下的MSSP267

10.7.3 I2C主控模式下的MSSP269

10.8在Derbot AGV中应用I2C270

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控制ADC297

11.3.3模拟输入模型300

11.3.4计算采集时间301

11.3.5重复转换302

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

11.4在Derbot测光程序中应用ADC303

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 FXX2318

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存取RAM329

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系列MPLABIDE347

12.10.2斐波那契程序347

小结349

参考文献349

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

13.1 18FXX2外围设备概述350

13.2并行端口351

13.2.1 18FXX2的端口A351

13.2.2 18FXX2的端口B352

13.2.3 18FXX2的端口C353

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模式下的MSSP360

13.5.2 I2C模式下的MSSP361

13.5.3 USART361

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使用PWM398

15.5.3主程序循环399

小结399

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

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

16.2使用18FXX2 ADC400

16.2.1寻光程序的结构404

16.2.2使用ADC405

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存储器分配伪指令pragma422

17.3.2设置配置字423

17.4中断424

17.4.1中断服务程序424

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

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

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.c432

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 Task481

19.7.3任务:Motor Task481

19.7.4消息的用法482

19.7.5中断的使用和ISR483

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

热门推荐