第1章 8051單片機與Keil C51基礎 1
1.1 8051單片機的存儲器組織結構 1
1.2 Keil C51開發工具 6
1.3 C51簡單編程與調試 6
第2章 C51程序設計基礎 16
2.1 標識符與關鍵字 16
2.2 C51程序設計的基本語法 18
2.2.1 數據類型 18
2.2.2 常量 20
2.2.3 變量及其存儲模式 22
2.2.4 用typedef重新定義數據類型 25
2.2.5 運算符與錶達式 26
2.3 C51程序的基本語句 39
2.3.1 錶達式語句 39
2.3.2 復閤語句 40
2.3.3 條件語句 41
2.3.4 開關語句 43
2.3.5 循環語句 45
2.3.6 返迴語句 50
2.4 函數 51
2.4.1 函數的定義 51
2.4.2 函數的調用形式 54
2.4.3 對被調用函數的說明 54
2.4.4 函數的參數與返迴值 56
2.4.5 實際參數的傳遞方式 58
2.4.6 函數的遞歸調用與再入函數 59
2.4.7 中斷函數與寄存器組定義 60
2.5 函數變量的存儲方式 62
2.5.1 局部變量與全局變量 62
2.5.2 變量的存儲種類 64
2.5.3 函數的參數和局部變量的存儲器模式 68
2.6 數組 69
2.6.1 數組的定義與引用 69
2.6.2 字符數組 70
2.6.3 數組作為函數的參數 73
2.7 指針 76
2.7.1 指針與地址 76
2.7.2 指針變量的定義 77
2.7.3 指針變量的引用 79
2.7.4 指針變量作為函數的參數 80
2.8 數組的指針 81
2.8.1 用指針引用數組元素 81
2.8.2 字符數組指針 83
2.8.3 指針的地址計算 84
2.9 函數型指針 86
2.10 返迴指針型數據的函數 88
2.11 指針數組與指針型指針 89
2.11.1 指針數組 89
2.11.2 指針型指針 92
2.11.3 抽象型指針 94
2.12 結構體、聯閤體與枚舉 95
2.12.1 結構體變量的定義與引用 95
2.12.2 結構體變量的初值 98
2.12.3 結構體數組 99
2.12.4 結構體型指針 100
2.12.5 將結構體作為函數的參數 101
2.12.6 將結構體型指針作為函數的參數 103
2.13 聯閤體變量的定義與引用 105
2.14 枚舉變量的定義與引用 109
2.15 預處理器 110
2.15.1 不帶參數的宏定義 111
2.15.2 帶參數的宏定義 112
2.15.3 文件包含 114
2.15.4 條件編譯 114
2.15.5 其他預處理命令 117
第3章 Vision4集成開發環境 118
3.1 Vision4的下拉菜單 120
3.1.1 File菜單 121
3.1.2 Edit菜單 122
3.1.3 View菜單 126
3.1.4 Project菜單 128
3.1.5 Flash菜單 139
3.1.6 Tools菜單 139
3.1.7 SVCS菜單 141
3.1.8 Window菜單 142
3.1.9 Help菜單 142
3.2 Vision4中的調試器 143
3.2.1 Debug狀態下窗口分配與View菜單 145
3.2.2 通過Debug菜單進行程序代碼調試 150
3.2.3 通過Peripherals菜單觀察仿真結果 156
3.3 Vision4的調試命令 157
3.3.1 顯示和更新存儲器內容命令 159
3.3.2 程序執行控製命令 163
3.3.3 斷點管理命令 166
3.3.4 其他通用命令 169
3.4 Vision4的錶達式 178
3.4.1 錶達式的組成 178
3.4.2 Vision4錶達式與C語言錶達式之間的差彆 183
3.4.3 Vision4錶達式應用舉例 183
3.5 Vision4的函數 186
3.5.1 內部函數 187
3.5.2 用戶函數 192
3.5.3 信號函數 194
3.5.4 Vision4函數與C51函數的差彆 196
第4章 C51編譯器 197
4.1 C51編譯器簡介 197
4.2 C51編譯器控製命令詳解 200
4.2.1 源控製命令 200
4.2.2 列錶控製命令 203
4.2.3 目標控製命令 208
4.3 Keil C51編譯器對ANSI C的擴展 235
4.3.1 存儲器類型與編譯模式 235
4.3.2 關於bit,sbit,sfr,sfr16數據類型 237
4.3.3 一般指針與基於存儲器的指針及其轉換 241
4.3.4 C51編譯器對ANSI C函數定義的擴展 242
4.4 C51編譯器的數據調用協議 249
4.4.1 數據在內存中的存儲格式 249
4.4.2 目標代碼的段管理 250
4.5 C51編譯器的特殊支持 252
4.5.1 Analog Device公司的Aduc8xxB2係列 253
4.5.2 Atmel 89x8252及衍生産品 253
4.5.3 Dallas 80C320/420/520/530 254
4.5.4 Dallas 80C390/400/5240及衍生産品 254
4.5.5 Infineon 80517/509/537及衍生産品 255
4.5.6 NXP 8xC750/751/752 256
4.5.7 NXP 8xC51Mx 256
4.5.8 NXP和Atmel WM係列的雙數據指針 256
4.6 用戶配置文件 257
4.6.1 啓動代碼文件 257
4.6.2 變量初始化文件 259
4.6.3 基本I/O函數文件 260
4.6.4 分組配置文件 261
4.7 與匯編語言程序的接口 262
4.8 與PL/M51程序的接口 272
4.9 絕對地址訪問 273
4.9.1 采用擴展關鍵字“_at_”或指針定義變量的絕對地址 273
4.9.2 采用預定義宏指定變量的絕對地址 274
4.9.3 采用鏈接定位控製命令指定變量的絕對地址 275
4.10 C51的庫函數 276
4.10.1 字符函數CTYPE.H 277
4.10.2 標準I/O函數STDIO.H 283
4.10.3 字符串函數STRING.H 291
4.10.4 標準函數STDLIB.H 299
4.10.5 數學函數MATH.H 305
4.10.6 絕對地址訪問ABSACC.H 312
4.10.7 內部函數INTRINS.H 313
4.10.8 變量參數錶STDARG.H 317
4.10.9 全程跳轉SETJMP.H 318
4.10.10 計算結構體成員的偏移量STDDEF.H 319
4.10.11 創建測試條件ASSERT.H 319
第5章 A51宏匯編器 321
5.1 符號與錶達式 323
5.2 匯編僞指令 327
5.2.1 段控製指令 328
5.2.2 符號定義指令 331
5.2.3 存儲器初始化指令 334
5.2.4 存儲器保留指令 335
5.2.5 過程聲明指令(僅用於Ax51) 336
5.2.6 程序鏈接指令 338
5.2.7 地址控製指令 339
5.2.8 其他指令 340
5.3 宏處理器 340
5.3.1 標準宏處理器 341
5.3.2 嵌套宏定義 344
5.3.3 宏調用 345
5.3.4 C宏處理器 349
5.3.5 MPL宏處理器 351
5.3.6 MPL函數 353
5.3.7 MPL條件處理函數 357
5.3.8 MPL字符串處理函數 360
5.4 匯編控製命令 362
5.4.1 匯編控製命令詳解 363
5.4.2 條件匯編命令 371
第6章 BL51/Lx51鏈接定位器與實用工具 375
6.1 BL51/Lx51的鏈接定位方式 375
6.1.1 鏈接定位中的數據段處理 375
6.1.2 鏈接定位器的引用 378
6.1.3 應用程序在存儲器空間中的定位 379
6.1.4 數據覆蓋 381
6.1.5 代碼分組 383
6.1.6 分組配置 385
6.2 鏈接定位控製命令詳解 393
6.2.1 列錶文件控製命令 393
6.2.2 輸齣文件控製命令 397
6.2.3 段與存儲器定位控製命令 401
6.2.4 高級語言控製命令 418
6.3 符號轉換工具 425
6.3.1 Intel HEX文件格式與符號轉換工具 425
6.3.2 引用符號轉換工具OH51/OHX51 426
6.3.3 引用分組目標文件轉換工具OC51 428
6.4 庫管理器LIBx51 428
第7章 RTX51實時多任務操作係統 432
7.1 RTX51一般介紹 432
7.2 RTX51技術參數 437
7.3 使用RTX51 TINY的要求和限定 439
7.4 RTX51 TINY的任務管理 440
7.5 RTX51 TINY的配置 442
7.6 RTX51 TINY的係統函數 444
7.7 RTX51 TINY應用係統調試 449
第8章 8051單片機片內資源的C51應用
編程 464
8.1 編寫C51應用程序的基本原則 464
8.2 C51應用中的一些常見問題與解決方法 465
8.3 8051單片機中斷係統應用編程 468
8.3.1 外部中斷源擴展 468
8.3.2 中斷嵌套 470
8.4 8051單片機定時器/計數器應用編程 473
8.4.1 定時器方式應用 474
8.4.2 計數器方式應用 478
8.6 8051單片機串行口應用編程 483
8.6.1 8051串行口實現串/並轉換應用編程 483
8.6.2 8051串行口的通信方式應用編程 487
8.7 P89C51RD2單片機片內FLASH在應用中編程的C51驅動程序 504
8.8 80C552單片機內部A/D轉換器的C51驅動程序 517
8.8.1 80C552單片機簡介 517
8.8.2 80C552內部ADC的應用 519
8.8.3 使用80C552內部ADC的C51驅動程序 523
第9章 8051單片機片外擴展的C51應用編程 529
9.1 LED數碼管顯示接口應用編程 529
9.1.1 軟件譯碼和動態掃描的LED數碼管顯示接口應用編程 530
9.1.2 8位共陰極LED數碼管驅動器MAX7219應用編程 532
9.2 非編碼矩陣鍵盤接口應用編程 538
9.2.1 采用8155實現的矩陣鍵盤及數碼管顯示接口應用編程 539
9.2.2 采用8279實現的矩陣鍵盤及數碼管顯示接口應用編程 544
9.3 LCD液晶模塊顯示接口應用編程 550
9.3.1 點陣字符型LCD顯示接口應用編程 551
9.3.2 12864點陣圖型LCD顯示接口應用編程 562
9.3.3 內置T6963C控製器的點陣圖型LCD顯示接口應用編程 570
9.4 D/A與A/D轉換接口應用編程 580
9.4.1 DAC0832轉換接口應用編程 581
9.4.2 串行接口DAC芯片MAX517應用編程 584
9.4.3 ADC0809轉換接口應用編程 588
9.4.4 ICL7135轉換接口應用編程 592
9.4.5 串行接口ADC芯片TLC549應用編程 596
9.5 單片機I2C總綫擴展應用編程 600
9.5.1 I2C總綫簡介 600
9.5.2 I2C總綫通用驅動程序 603
9.5.3 I2C接口器件24C04的讀/寫程序 606
9.6 8051單片機存儲器擴展與測試應用編程 610
9.6.1 測試8051應用係統總綫與擴展存儲器的C51驅動程序 610
9.6.2 8051擴展FLASH存儲器在係統編程的C51驅動程序 613
第10章 Keil C51綜閤應用編程實例 626
10.1 有關C51編程的若乾實際應用技巧 626
10.2 C51與匯編語言混閤編程與生成應用庫文件 632
10.2.1 C51與匯編語言混閤編程 632
10.2.2 在Vision4中生成應用庫文件 634
10.3 在Vision4中應用硬件目標闆 635
10.3.1 帶MON51監控程序的硬件目標闆 636
10.3.2 帶FLASHMON51監控程序的硬件目標闆 640
10.4 紅外遙控係統設計 642
10.4.1 功能要求 642
10.4.2 硬件電路設計 642
10.4.3 軟件程序設計 643
10.5 簡易電子琴設計 650
10.5.1 功能要求 650
10.5.2 硬件電路設計 650
10.5.3 軟件程序設計 650
10.6 帶農曆的電子萬年曆設計 655
10.6.1 功能要求 655
10.6.2 硬件電路設計 655
10.6.3 軟件程序設計 658
10.7 電子密碼鎖設計 671
10.7.1 功能要求 671
10.7.2 硬件電路設計 671
10.7.3 軟件程序設計 671
10.8 DS18B20多點溫度監測係統設計 687
10.8.1 功能要求 687
10.8.2 硬件電路設計 688
10.8.3 軟件程序設計 692
10.9 STH11數字溫-濕度測量係統設計 700
10.9.1 功能要求 700
10.9.2 硬件電路設計 700
10.9.3 軟件程序設計 704
10.10 單片機SD卡讀/寫接口設計 710
10.10.1 功能要求 710
10.10.2 硬件電路設計 710
10.10.3 軟件程序設計 712
附錄A Keil C51與ANSI C的差彆 717
附錄B Keil C51不同版本的差彆 719
附錄C 代碼優化 723
附錄D C51編譯器的限製 726
附錄E 關於配套光盤及硬件目標闆 727
參考文獻 728
· · · · · · (
收起)