《Keil C51單片機高級語言套用編程與實踐》是2013年電子工業出版社出版的圖書,作者是徐愛鈞、徐陽。
基本介紹
- 中文名:Keil C51單片機高級語言套用編程與實踐
- 外文名:Keil C51
- 出版社:電子工業出版社
- 定價:99.00元
- ISBN:9787121215964
- 出版時間:2013年11月
- 頁數:740頁
- 開本:16開
- 作者:徐愛鈞、徐陽
內容簡介,目錄,作者簡介,前言,
內容簡介
本書詳細介紹了V9.00版本的Keil C51編譯器和Vision4的強大功能和具體使用方法,完整地介紹了最新版本C51編譯器控制命令,給出了全部C51運行庫函式及其套用範例,對Keil C51軟體包中各種套用工具都作了詳細介紹,闡述了Vision4新增加的各種功能和套用方法,包括軟體模擬調試和硬體目標板實時線上仿真。本書的特點是強調先進性和實用性,給出了大量套用實例。
目錄
第1章 8051單片機與KeilC51基礎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.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編譯器對ANSIC的擴展235
4.3.1 存儲器類型與編譯模式 235
4.3.2 關於bit,sbit,sfr,sfr16數據類型 237
4.3.3 一般指針與基於存儲器的指針及其轉換 241
4.3.4 C51編譯器對ANSIC函式定義的擴展 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和AtmelWM系列的雙數據指針 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.H318
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 使用RTX51TINY的要求和限定 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.3LCD液晶模組顯示接口套用編程 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章 KeilC51綜合套用編程實例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
附錄AKeilC51與ANSI C的差別 717
附錄BKeilC51不同版本的差別 719
附錄C 代碼最佳化723
附錄DC51編譯器的限制 726
附錄E 關於配套光碟及硬體目標板727
參考文獻 728
作者簡介
徐愛鈞,長江大學教授,中國科協湖北省自動化學會理事,湖北省精品課程《單片機原理及套用》負責人。長期從事自動化及單片機與嵌入式系統套用的教學、科研工作,獲得湖北省科學技術進步獎等多項獎勵。公開出版《智慧型化測量控制儀表原理與設計》(第3版)、《Keil Cx51 V7.0單片機高級語言編程與uVsion2套用實踐》(第2版)、《單片機原理實用教程》(第2版)、《ARM嵌入式套用技術》、《IAR EWARM V5嵌入式系統套用編程與開發》等著作和教材10餘部。在《儀器儀表學報》等核心期刊上發表學術論文60多篇。
前言
德國Keil公司*推出的C51編譯器是一種符合工業標準的8051 C語言開發工具,在業界獲得了廣泛套用,被公認為是最有效的單片機開發手段之一。Keil公司於2010年推出了全新的開發環境Vision4,其中集成了V9.00版本的C51編譯器、Debug調試器、RTX51 Tiny實時作業系統等,全面支持8051單片機主流產品及其眾多的派生系列。
Keil C51編譯器具有如下優點。
(1)經過最佳化編譯後生成的代碼,其效率接近於彙編語言生成的代碼。
(2)支持所有8051系列單片機,提供對所有外圍硬體部件的操作。
(3)無論在有無工作暫存器區轉換的情況下,都能產生快速中斷代碼。
(4)支持Atmel,Dallas,Infineon,Philips和Temic等公司8051衍生產品上的雙數據指針及高速算術單元(arithmeticunits)。
(5)能夠在整個應用程式中執行全局暫存器最佳化。
(6)所有套用工具均可產生詳細警告信息和錯誤信息,幫助用戶處理難以尋找的問題。
(7)支持再入功能和暫存器區的獨立代碼,便於中斷服務程式和多任務應用程式的執行。
(8)採用分組方式執行代碼分組和調試,用戶程式代碼可以輕鬆突破64KB空間的限制。
全新集成開發環境Vision4具有強大的項目管理功能,包括源程式檔案、開發工具選項以及編程說明等。Vision4內部集成了一個器件資料庫(devicedatabase),其中儲存了各種型號單片機的片上存儲器和集成外圍功能信息,通過器件資料庫可以自動設定C51編譯器、A51彙編器、BL51/Lx51連線定位器、Debug調試器等開發工具的功能選項,充分滿足用戶使用特定單片機的要求。集成仿真調試功能允許在統一的Vision4環境下進入Debug調試器,提供純軟體模擬仿真(Simulator)和多種硬體驅動調試。Simulator可以在沒有單片機硬體的條件下在PC上用純軟體模擬方式完成單片機應用程式仿真調試,硬體驅動Monitor-51可以將帶有MON51監控程式的硬體目標板與Vision4無縫連線,直接對目標板進行仿真調試而無須採用昂貴的硬體仿真器。
本書完整地闡述了Keil C51開發工具的功能和使用方法,力求先進性和實用性,給出了大量具體套用實例,不僅介紹了Keil C51自帶Simulator軟體模擬仿真調試方法,還介紹了Keil C51與Proteus軟體在線上,實現8051單片機線上虛擬仿真調試方法,同時對廣大讀者所關心的利用MON51監控程式設計自己硬體目標板的方法做了詳細介紹,並在隨書光碟中給出了硬體目標板的電路原理圖。
全書共分10章:
第1章闡述8051單片機存儲器結構,以及在Vision4集成開發環境下進行C51程式設計和編譯調試的基本方法。
第2章闡述C51程式設計基礎知識,詳細介紹C51的數據類型、基本語法、變數及其存儲模式、函式、數組與指針等。
第3章闡述Vision4集成開發環境,詳細介紹了工作環境、目標程式的仿真調試以及各種套用選項的設定方法。
第4章闡述Keil C51編譯器,介紹了各種編譯控制命令、數據調用協定,給出了全部C51庫函式及其套用範例。
第5章闡述A51宏彙編器,介紹了各種彙編偽指令、宏處理以及彙編控制命令。
第6章闡述BL51/Lx51連結定位器與實用工具,詳細介紹了各種連結控制命令、符號轉換工具OH51、庫管理工具LIB51的使用方法。
第7章闡述RTX51實時多任務作業系統,介紹了RTX51 TINY的功能和使用方法。
第8章闡述8051單片機片內資源的C51套用編程,介紹了C51編程的基本原則、常見問題與解決方法,給出了中斷系統、定時器/計數器、串列口、片內FLASH IAP等資源的具體套用實例。
第9章闡述8051單片機片外擴展的C51套用編程,給出了LED數碼管、非編碼矩陣鍵盤、點陣字元型和點陣圖型LCD、D/A及A/D轉換、I2C匯流排擴展、外部存儲器擴展等具體套用實例。
第10章闡述Keil C51綜合套用編程,介紹了C51編程的若干實際套用技巧,C51與彙編語言混合編程方法以及如何在Vision4中套用硬體目標板,給出了紅外遙控系統、簡易電子琴、帶農曆的電子萬年曆、電子密碼鎖、DS18B20多點溫度監測系統、STH11數字溫-濕度測量系統、單片機SD卡讀寫接口等大量綜合套用實例。