第一章單晶片基礎知識 1
1.18051單晶片的特點 1
1.28051的內部結構 3
1.2.1中央處理器 4
1.2.2記憶體組織 6
1.2.3內部並列介面 10
1.2.48051的內部資源 12
1.2.58051的晶片接腳 13
1.2.6單晶片的工作模式 14
1.38051的系統擴展 17
1.3.1外部匯流排的擴展 17
1.3.2外部程式記憶體的擴展 19
1.3.3外部資料記憶體的擴展 22
1.48051指令系統 25
1.4.1定址方式 26
1.4.2指令說明 27
1.4.3虛擬指令 35
1.4.4指令系統表 37
1.5實用程式設計 42
習題一 45
第二章C與805 149
2.18051的程式設計語言 49
2.2Cx51編譯器 50
2.3KEIL8051開發工具 52
2.4KEILCx51程式設計實例 57
2.5Cx51程式結構 63
習題二 65
第三章Cx51資料與運算 66
3.1資料與資料類型 66
3.2常數與變數 67
3.3Cx51資料的儲存類型與8051記憶體結構 71
3.48051特殊功能暫存器(SFR)及其Cx51定義 76
3.58051並列介面及其Cx51定義 79
3.6位元變數(BIT)及其Cx51定義 81
3.7Cx51運算符號、運算式及其規則 83
3.7.1Cx51算術運算符號及其運算式 83
3.7.2Cx51關係運算符號、運算式及優先順序 85
3.7.3Cx51邏輯運算符號、運算式及優先順序 86
3.7.4Cx51位元運算及其運算式 87
3.7.5自增減運算符號、複合運算符號及其運算式 94
習題三 96
第四章Cx51流程控制指令 97
4.1C語言程式的基本結構及其流程圖 97
4.1.1順序結構及其流程圖 97
4.1.2選擇結構及其流程圖 97
4.1.3迴圈結構及其流程圖 99
4.2選擇指令 101
4.2.1選擇指令if 101
4.2.2switch/case指令 104
4.3迴圈指令 105
4.3.1while指令 106
4.3.2dowhile指令 107
4.3.3for迴圈指令 108
習題四 112
第五章Cx51構造資料類型 114
5.1數組 114
5.1.1一維陣列 114
5.1.2二維陣列 118
5.1.3字元陣列 119
5.1.4查表 121
5.1.5陣列與儲存空間 122
5.2指標 122
5.2.1指標的基本概念 122
5.2.2陣列指標和指向陣列的指標變數 127
5.2.3指向多維陣列的指標和指標變數 131
5.2.4關於KEILCx51的指標類型 132
5.3結構 135
5.3.1結構的定義和引用 135
5.3.2結構陣列 139
5.3.3指向結構類型資料的指標 141
5.4共用體 144
5.5列舉 146
習題五 148
第六章Cx51函數 150
6.1函數的分類 151
6.2函數的定義 152
6.3函數的參數和函數值 154
6.4函數的呼叫 156
6.4.1函數呼叫的一般形式 156
6.4.2函數呼叫的方式 157
6.4.3對被呼叫函數的說明 157
6.4.4函數的套用和遞迴呼叫 159
6.4.5函數的遞迴呼叫 160
6.4.6用函數指標變數呼叫函數 162
6.5陣列、指標作為函數的參數 164
6.5.1用陣列作為函數的參數 164
6.5.2用指向函數的指標變數作為函數的參數 166
6.5.3用指向結構的指標變數作為函數的參數 169
6.5.4返回指標的函數 170
習題六 172
第七章模組化程式設計 173
7.1基本概念 173
7.1.1程式的組成 173
7.1.2常用術語 173
7.1.3檔命名常規 176
7.2模組化程式開發 177
7.2.1採用模組程式設計的優點 177
7.2.2模組化程式開發過程 177
7.3組譯和編譯 179
7.3.1使用組合語言的模組化設計 179
7.3.2使用C語言的模組化設計 182
7.4覆蓋和共用 184
7.4.1覆蓋 184
7.4.2共享 184
7.5庫和鏈結器/定位器 186
7.5.1庫 186
7.5.2鏈結器/定位器 187
7.6混合程式設計 193
7.6.1混合程式設計介紹 193
7.6.2參數傳遞 194
7.6.3混合程式設計實例 199
7.6.4根據硬體環境的配置 205
7.7程式最佳化 206
習題七 207
第八章8051內部資源的C程式設計 208
8.1中斷 208
8.1.1中斷源 209
8.1.2中斷的控制 210
8.1.3中斷回應 212
8.1.4暫存器組切換 214
8.1.5中斷程式設計 216
8.2計時器/計數器 219
8.2.1與T/C有關的特殊功能暫存器 219
8.2.2計時器/計數器的工作模式 221
8.2.3計時器/計數器的初始化 223
8.2.4計時器/計數器的應用實例 224
8.3串列埠232
8.3.1與串列埠有關的SFR 232
8.3.2串列埠的工作模式 234
8.3.3串列埠初始化 235
8.3.4串列埠應用範例 236
習題八 244
第九章8051擴展資源的C程式設計 246
9.1可程式週邊計時器8253 246
9.1.18253的結構和接腳 246
9.1.28253的工作模式和控制字 248
9.1.38253與8051的介面 249
9.2可程式週邊並列介面8255 252
9.2.18255的結構和接腳 252
9.2.28255的命令字和工作模式 253
9.2.38255與8051的介面 256
9.3即時時脈/日曆晶片 146818 257
9.3.1MC 146818晶片的接腳 257
9.3.2內部結構和暫存器 258
9.3.3MC 146818與8051的介面電路 261
9.4可程式介面晶片8155 263
9.4.18155的結構和接腳 263
9.4.28155的命令字、狀態字及工作模式 264
9.4.38155與8051的介面 267
習題九 269
第十章8051輸出控制的C程式設計 270
10.18位元D/A晶片DAC0832 270
10.1.1DAC0832的結構和接腳 270
10.1.28051與DAC0832的介面電路 271
10.212位元D/A晶片AD7521 274
10.2.1AD7521的接腳 275
10.2.2AD7521與8051的介面 275
10.3步進馬達控制 276
10.3.1步進馬達及其工作模式 276
10.3.2步進馬達與單晶片的介面 277
習題十 283
第十一章8051資料擷取的C程式設計284
11.18位元A/D晶片ADC0809284
11.1.1ADC0809的結構和接腳284
11.1.2ADC0809與8051的介面285
11.212位元A/D晶片AD574288
11.2.1AD574的結構和接腳288
11.2.2AD574與8051的介面290
11.3V/F變換晶片AD650292
11.4頻率量的測量296
11.4.1測量頻率法296
11.4.2頻率脈衝的測量週期法298
習題十一 300
第十二章8051之間通信的C程式設計 302
12.1點對點的串列非同步通信 302
12.1.1通信雙方的硬體連接 302
12.1.2通信雙方的約定 302
12.1.3點對點通信程式設計 304
12.2多機通信 306
12.2.1通信介面 306
12.2.2通信協議 306
12.2.3通信程式 307
習題十二 315
第十三章8051人機交互的C程式設計 316
13.1鍵盤和數位顯示 316
13.1.1行列式鍵盤與8051的介面 316
13.1.2七段數位顯示與8051的介面 319
13.2可程式鍵盤/顯示介面晶片8279 322
13.2.18279內部結構和接腳 322
13.2.28279的命令字和狀態字 325
13.2.38279和8051的介面 328
13.3語音晶片TSP5220 331
13.3.1TSP5220內部結構和接腳 331
13.3.2TSP5220的命令字和狀態字 333
13.3.3TSP5220語音合成器與單晶片的介面 334
13.4TPμp印表機 336
13.4.1TPμp印表機的介面信號 336
13.4.2字元代碼和中文字 337
13.4.3列印命令 339
13.4.4TPμp-TF與8051的介面和程式設計 341
13.5字元型LCD顯示模組 343
13.5.1字元型LCD的結構和接腳 343
13.5.2顯示板控制器的指令系統 346
13.5.3LCD顯示板與單晶片的介面和程式設計 347
13.6點陣型LCD顯示模組 350
13.6.1HD61830的特點和接腳 350
13.6.2HD61830指令集 351
13.6.3與內藏HD61830液晶模組的介面和程式設計 354
習題十三 364
附錄AμVision2整合開發環境使用 365
A.1功能表欄命令 365
A.2建立應用 371
A.2.1建立項目 371
A.2.2專案目標和檔組 377
A.3除錯程式 378
A.3.1μVision2除錯器 378
A.3.2HELLO:第一個80C51C程式 384
附錄BKEILCx51上機指南 389
B.1編譯器 389
B.1.1Cx51編譯器控制命令 390
B.1.2預處理器 402
B.1.3Cx51執行庫 403
B.2Ax51巨集組譯器 416
B.2.1組譯虛擬指令 416
B.2.2組譯控制命令 418
B.3鏈結器/定位器和實用工具 420
B.3.1鏈結器/定位器的控制命令 420
B.3.2庫管理器LIBx51 423
B.3.3Object-Hex轉換器 424