第1章 簡介 1
1.1 微算機系統結構與應用 1
1.1.1 微處理器與微算機 2
1.1.2 個人電腦 3
1.1.3 嵌入式系統 7
1.2 MCS-51/52微控制器 9
1.2.1 MCS-51/52微控制器 9
1.2.2 微控制器選用準則 12
1.3 文數字碼與數碼 14
1.3.1 文數字碼 15
1.3.2 數碼 17
1.4 數系轉換 19
1.4.1 二進制數目系統 19
1.4.2 十六進制數目系統 23
1.5 二進制算術 26
1.5.1 二進制的四則運算 27
1.5.2 數目表示法 29
1.5.3 2補數算術運算 30
1.6 浮點數算術 32
1.6.1 浮點數表示方法 33
1.6.2 浮點數的四則運算 37
1.7 參考資料 40
1.8 習題 41
第2章 微算機基本工作原理 43
2.1 計算機基本功能與原理 43
2.1.1 基本程式設計觀念 44
2.1.2 微算機原理 47
2.1.3 更詳細的微算機基本動作 48
2.2 CPU基本組織與動作 49
2.2.1 暫存器轉移層次 50
2.2.2 一個簡化的MCS-51 RTL架構 63
2.2.3 指令的執行 65
2.2.4 基本的MCS-51組合語言指令 69
2.3 組譯程式與組合語言程式 71
2.3.1 基本組合語言程式例 72
2.3.2 基本組合語言程式結構 73
2.3.3 組合語言常數與運算子 74
2.3.4 基本組譯程式假指令 76
2.4 組合語言程式的建立與執行 78
2.4.1 組合語言程式的建立 79
2.4.2 MCS-51程式發展工具 80
2.4.3 組合語言程式的建立實例 81
2.4.4 組合語言程式的執行 85
2.5 參考資料 86
2.6 習題 87
第3章MCS-51軟體模式 89
3.1 規劃模式 89
3.1.1 資料暫存器 90
3.1.2 位址暫存器 92
3.1.3 特殊用途暫存器 93
3.2 資料類型與記憶器組織 95
3.2.1 記憶器組織 95
3.2.2 位元可存取區 97
3.2.3 資料類型 99
3.3 定址方式與指令格式 101
3.3.1 MCS-51定址方式 102
3.3.2 指令格式與編碼 110
3.4 組譯程式假指令 112
3.4.1 節區定義假指令 112
3.4.2 符號定義假指令 116
3.4.3 程式連繫假指令 118
3.4.4 其它假指令 119
3.5* 組譯程式與組譯程序 120
3.5.1 組譯程式 121
3.5.2 組譯程序與實例 124
3.6 參考資料 126
3.7 習題 126
第4章 基本組合語言程式設計 129
4.1 定址方式與指令使用 129
4.1.1 定址方式格式 129
4.1.2 使用指令的基本概念 131
4.2 資料轉移指令 133
4.2.1 基本資料轉移指令 133
4.2.2* 雙資料指示暫存器 140
4.3 算術運算指令 141
4.3.1 二進制算術運算 142
4.3.2 單運算元指令 150
4.3.3 乘法與除法運算 151
4.3.4 BCD算術 153
4.4 分歧(跳躍)指令 156
4.4.1 條件性分歧(跳躍)指令 156
4.4.2 無條件分歧(跳躍)指令 165
4.4.3 迴路指令 168
4.5 參考資料 172
4.6 習題 172
第5章 組合語言程式設計 177
5.1 邏輯與位元運算指令 177
5.1.1 MCS-51邏輯運算指令 178
5.1.2 MCS-51位元運算指令 184
5.1.3 MCS-51位元測試指令 187
5.2 移位與循環移位指令 189
5.2.1 基本移位與循環移位指令 190
5.2.2 MCS-51移位與循環移位指令 192
5.3 CPU控制與旗號位元指令 195
5.3.1 MCS-51 CPU控制指令 195
5.3.2 旗號位元指令 196
5.4 參考資料 197
5.5 習題 198
第6章 模組化程式設計 201
6.1 程式設計基本技巧 202
6.1.1 模組化程式設計 202
6.1.2 結構化程式設計 203
6.2 程式的連結與模組宣告 208
6.2.1 程式的連結與重置位 208
6.2.2 外部變數 209
6.3 副程式 211
6.3.1 堆疊 211
6.3.2 副程式呼叫與歸回指令 216
6.3.3 巢路副程式 219
6.3.4* 副程式參數傳遞方式 222
6.3.5* 可重入與遞迴副程式 227
6.4* 巨集指令 236
6.4.1 巨集指令定義與擴展 236
6.4.2 標記問題與局部標記 241
6.4.3 巢路巨集指令 244
6.5 參考資料 245
6.6 習題 246
第7章 綜合程式設計 249
7.1 數碼轉換 249
7.1.1 轉換十六進制數字為七段顯示碼 250
7.1.2 二進制對BCD轉換 254
7.1.3 BCD對二進制轉換 257
7.2 資料的排序與搜尋 260
7.2.1 插入排序演算法 260
7.2.2 二分搜尋演算法 263
7.3 多精確制乘法運算 266
7.3.1 基本乘法運算方法 266
7.3.2 使用移位相加的方法 267
7.3.3 使用乘法指令MUL 271
7.3.4 乘法運算---Booth演算法 274
7.4 多精確制除法運算 278
7.4.1 除法運算-恢復式除法 279
7.4.2 除法運算-非恢復式除法 283
7.5 參考資料 288
7.6 習題 289
第8章 C語言程式設計 293
8.1 基本C語言程式 294
8.1.1 基本C語言程式例 294
8.1.2 程式的基本要素 295
8.1.3 資料類型與變數宣告 298
8.1.4 C51的記憶器類型 302
8.1.5 C51擴充的資料類型 303
8.1.6 運算子 305
8.1.7 程式流程控制指述 307
8.2 函式與指標 311
8.2.1 函式 312
8.2.2 指標 316
8.2.3 副程式參數傳遞 320
8.3 C語言與組合語言程式的連結 323
8.3.1 行內(In-Line)組合語言 323
8.3.2 C語言與組合語言程式的連結 325
8.4 參考資料 330
8.5 習題 331
第9章 MCS-51硬體模式 335
9.1 MCS-51硬體模式 335
9.1.1 內部功能 336
9.1.2 CPU時序 337
9.1.3 硬體界面 339
9.1.4 基本時序 346
9.2 內部程式記憶器規劃 353
9.2.1 並列規劃模式 353
9.2.2 串列規劃模式 357
9.2.3 程式記憶器的清除 360
9.2.4 鎖住位元的規劃 361
9.3 基本的MCS-51模組 362
9.3.1 基本界面問題 362
9.3.2 最小(單一晶片)模組 363
9.3.3 擴充(多重晶片)模組 364
9.4 MCS-51衍生微控制器 365
9.4.1 AT89S52 366
9.4.2 8xC51Fx 367
9.4.3 8xC51GB 368
9.4.4 P89V51Rx2 368
9.4.5 MPC82G516A 370
9.5 參考資料 371
9.6 習題 371
第10章 記憶器元件與應用 373
10.1 記憶器類型 373
10.1.1 記憶器類型 373
10.1.2 快閃記憶器 376
10.2 商用記憶器元件 378
10.2.1 SRAM 379
10.2.3 快閃記憶器(X28系列) 385
10.3 記憶器容量與語句寬度的擴充 392
10.3.1 容量擴展方法 393
10.3.2 語句寬度擴展方法 394
10.3.3 容量與語句寬度同時擴展方法 394
10.4 記憶器位址解碼電路設計 395
10.4.1 記憶器位址解碼原理 395
10.4.2 位址解碼電路設計 399
10.5 MCS-51與記憶器界接 406
10.5.1 外部RAM 406
10.5.2 外部程式記憶器 410
10.5.3 共用程式與資料記憶器 413
10.6 參考資料 414
10.7 習題 415
第11章 中斷、系統重置與功率控制 417
11.1 中斷與處理 417
11.1.1 中斷的主要應用 417
11.1.2 中斷類型 418
11.1.3 CPU對外部中斷的反應 420
11.2 多重中斷與優先權 422
11.2.1 中斷優先權 422
11.2.2 輪呼 424
11.2.3 鍵結優先權結構 429
11.2.4 中斷優先權仲裁器 430
11.3 MCS-51中斷 432
11.3.1 MCS-51中斷結構 433
11.3.2 中斷處理程序 437
11.3.3 MCS-51中斷擴展 440
11.4 中斷服務程式 443
11.4.1 中斷服務程式設計 443
11.4.2 巢路中斷 445
11.5 系統重置與功率控制 446
11.5.1 MCS-51/52系統重置 446
11.5.2 功率控制 449
11.5.3 監視定時器 455
11.6 參考資料 458
11.7 習題 458
第12章 基本I/O觀念與界面 461
12.1 I/O基本結構 461
12.1.1 I/O裝置與界面電路 462
12.1.2 輸入埠與輸出埠 463
12.1.3 獨立式I/O結構 466
12.1.4 記憶器映成I/O結構 468
12.2 I/O資料轉移方式 470
12.2.1 I/O資料轉移基本方式 470
12.2.2 輪呼式(程式)I/O 471
12.2.3 中斷式I/O 472
12.2.4 直接記憶器存取(DMA) 473
12.3 實際的界面問題 478
12.3.1 資料觸取系統 478
12.3.2 邏輯位準匹配問題 482
12.3.3 推動能力的考慮 484
12.4 DAC與ADC 487
12.4.1 數位對類比轉換器(DAC) 487
12.4.2 類比對數位轉換器(ADC) 494
12.4.3 MCS-51的ADC擴充 500
12.5 參考資料 503
12.6 習題 504
第13章 並列I/O與界面 507
13.1 並列資料轉移 508
13.1.1 同步並列資料轉移 508
13.1.2 閃脈控制方式 509
13.1.3 交握式控制方式 511
13.1.4 三線交握式控制方式 517
13.2 MCS-51 I/O埠結構與動作 518
13.2.1 I/O埠結構與動作 519
13.2.2 RMW指令組 521
13.3 可規劃並列周邊界面(82C55A) 522
13.3.1 內部功能 522
13.3.2 硬體界面 524
13.3.3 模式規劃與動作 525
13.3.4 82C55A與MCS-51模組界接 538
13.4 參考資料 543
13.5 習題 543
第14章 定時器與應用 547
14.1 定時器0與1 548
14.1.1 基本動作 548
14.1.2 模式設定 549
14.1.3 操作模式與應用 550
14.2 定時器2 559
14.2.1 模式設定 560
14.2.2 操作模式與應用 562
14.3* 可規劃計數器陣列 572
14.3.1 基本結構 572
14.3.2 模式設定 574
14.3.3 操作模式與應用 577
14.4 應用實例---步進馬達控制 596
14.4.1 步進馬達原理 596
14.4.2 步進馬達驅動電路與程式 600
14.5 參考資料 604
14.6 習題 605
第15章 鍵盤與顯示器電路 609
15.1 鍵盤電路設計 609
15.1.1 開關類型 609
15.1.2 鍵盤電路設計原理 613
15.1.3 輸呼式鍵盤電路設計 614
15.1.4 中斷式鍵盤電路設計 624
15.2 LED顯示器電路 626
15.2.1 簡單的LED顯示器 626
15.2.2 直接推動方式七段LED顯示器 629
15.2.3 多工推動方式七段LED顯示器 631
15.3 液晶顯示器 637
15.3.1 液晶顯示器原理 637
15.3.2 商用液晶顯示器 638
15.3.3 與MCS-51界接 644
15.4 參考資料 650
15.5 習題 650
第16章 串列I/O、界面與應用 655
16.1 串列資料轉移 655
16.1.1 基本概念 656
16.1.2 非同步串列資料轉移 659
16.1.3 同步串列資料轉移 662
16.1.4 資訊錯誤的偵測與更正 666
16.2 串列界面標準 670
16.2.1 數據通信基本原理 670
16.2.2 EIA-232 (RS-232)界面標準 673
16.2.3 其它串列界面標準 677
16.3 MCS-51串列通信埠 681
16.3.1 基本結構 682
16.3.2 規劃模式 683
16.3.3 鮑速率 685
16.3.4 操作模式與應用 689
16.3.5 自動位址偵測 698
16.4 串列界面基本應用 700
16.4.1 MCS-51 I/O埠擴充 700
16.4.2 MCS-51 SPI擴充 704
16.5 I2C匯流排標準 711
16.5.1 I2C匯流排界面標準 711
16.5.2 與24Cxx序列元件界接 717
16.6 參考資料 731
16.7 習題 732
附錄 MCS-51 相關資料 739
A. MCS-51/52特殊功能暫存器(SFR) 740
A.1 特殊功能暫存器(SFR)位址圖 740
A.2 中斷向量表(MCS-51/52) 740
A.3 狀態語句(PSW) 741
A.4 電源控制暫存器(PCON) 741
A.5 中斷致能暫存器(IE) 742
A.6 中斷優先權暫存器(IP) 742
A.7 定時器0/1控制暫存器(TCON) 743
A.8 定時器0/1模式暫存器(TMOD) 744
A.9 定時器2控制暫存器(T2CON) 744
A.10 串列通信埠控制暫存器(SCON) 746
B. MCS-51指令組詳細資料 747
B.1 MCS-51指令分類表 747
B.2 MCS-51指令碼、執行週期與長度 754
B.3 MCS-51指令詳細動作 758