PIC嵌入式系統開發

PIC嵌入式系統開發

《PIC嵌入式系統開發》本書適合嵌入式系統開發工程師閱讀,也可作為高等院校電子、機電和計算機工程相關專業嵌入式系統課程的教材或參考書。

基本信息

適合人群

本書適合嵌入式系統開發工程師閱讀,也可作為高等院校電子、機電和計算機工程相關專業嵌入式系統課程的教材或參考書。

目錄

第一部分 嵌入式系統入門

第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

第二部分 最小的系統和PIC16F84A

第2章 PIC16系列和16F84A 22

2.1 PIC16系列 22

2.1.1 PIC16系列概述 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 其他微控制器——AtmelAT89C2051微控制器 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 PIC16F84A並行連線埠 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 PIC16系列指令集和ALU 66

4.2.1 PIC16系列ALU 66

4.2.2 PIC16系列指令集 67

4.3 彙編器和彙編格式 68

4.3.1 彙編器及MicrochipMPASMTM彙編器簡介 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 16F84ATimer0模組 128

6.4 16F84ATimer0的使用——以電子桌球遊戲為例 130

6.4.1 對目標或事件計數 130

6.4.2 硬體產生的延時 131

6.5 看門狗定時器 133

6.6 休眠模式 133

6.7 其他中斷 134

6.8 更多的了解——中斷回響延時 135

小結 136

第三部分 較大的系統和PIC16F873A

第7章 較大的系統和PIC16F873A 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 電路內串列編程(ICSPTM) 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 使用ICD2下載、測試和運行一個簡單的程式 166

7.11.1 第一個AGV程式 166

7.11.2 套用電路內調試器ICD2 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 16F87XATimer0和Timer1 214

9.2.1 Timer0 214

9.2.2 Timer1 214

9.2.3 使用Timer0和Timer1作為AGV里程表的計數器 216

9.2.4 使用Timer0和Timer1產生重複性中斷 219

9.3 16F87XA的Timer2、比較器和PR2暫存器 220

9.3.1 Timer2 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.3Microwire和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 I2C的主要特性與物理連線 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 在DerbotAGV中套用I2C 270

10.8.1 將Derbot手動控制器用作串列節點 270

10.8.2 將AGV用作I2C主控器 271

10.8.3 將手動控制器用作I2C從動器 275

10.8.4 DerbotI2C程式驗證 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 不藉助串列連線埠實現串列通信——“bitbanging” 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

第四部分 更靈巧的系統與PIC18FXX2

第12章 更靈巧的系統與PIC18FXX2 318

12.1 PIC18系列及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章 PIC18FXX2外圍設備 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 Timer0 353

13.3.2 Timer1 355

13.3.3 Timer2 356

13.3.4 Timer3 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.4C語言關鍵字370

14.2.5C語言函式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 MPLABC18編譯器 374

14.4.1 數制規範 375

14.4.2 算術運算 375

14.5 C18指南 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 MPLABC18庫 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 使用18FXX2ADC 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 例程概覽 419

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 使用Timer0 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 連線器的功能 737

17.10.2 連線器腳本 738

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 PIC16系列指令集 500

附錄2 電子桌球遊戲 502

附錄3 DerbotAGV硬體設計細節 507

附錄4 自主導向車的一些基本知識 511

附錄5 PIC18系列指令集(非擴展) 515

附錄6 C語言要點 519

索引 523

……

相關詞條

相關搜尋

熱門詞條

聯絡我們