圖書信息
21天學編程系列 21天學通51單片機開發(第2版)(含DVD光碟1張) 陸彬 編著
ISBN 978-7-121-14160-7
2011年9月出版
定價:49.80元(含DVD光碟1張)
16開
416頁
內 容 簡 介
本書系統地介紹了51系列單片機的基本概念、程式設計語言及硬體編程,並給出了一些常用的典型案例。本書言簡意賅、通俗易懂,知識點覆蓋全面,詳細講述了每個指令及功能的編程指南和實例,使讀者能夠更好地掌握51系列單片機的知識。
本書分25章,全面詳細地講述了單片機的原理、程式設計方法、編程指南及套用案例。首先介紹了51系列單片機的基礎知識及基本結構,接著介紹了單片機的程式設計語言,包括彙編語言和單片機C51語言,其中C51語言是重點內容。然後結合單片機的各個功能部件詳細講解了單片機的硬體編程方法。最後還給出了在各個領域中常用到的一些典型案例,供讀者在學習和工作中參考。
本書附贈DVD光碟1張,內容包括超大容量手把手教學視頻、電子教案(PPT)。
前 言
為什麼要寫這樣一本書
單片機憑藉其強大的可程式能力及高性價比,在現代電子設計領域中具有重要的地位。在越來越多的產品中可以看到單片機的身影。其中,51系列單片機是市場上套用最廣泛、性價比最高的單片機之一,使用51系列單片機進行設計的項目和開發人員都非常多。目前市面上關於單片機開發的書籍非常多,但是這些書有些過於技術化,入門者根本無法入手,有些書籍內容不全,無法讓初學者對該技術得到全面的認識。
為了能讓初次接觸51系列單片機開發的愛好者快速而又輕鬆地學會單片機及其程式開發,筆者總結了自己學習單片機程式設計的經驗,並結合多年實際開發的經驗,編寫了這本51系列單片機的基礎教程。在本書中,筆者從最基礎的概念入手,循序漸進地將51系列單片機開發和程式設計中的每個技術點展現在讀者面前,力求讓讀者在最短的時間內高效地掌握51系列單片機開發的基礎概念及技術要點。
本書有何特色
1.細緻體貼的講解
為了讓讀者更快地上手,本書特別設計了適合初學者的學習方式,用準確的語言總結概念用直觀的圖示演示過程用詳細的注釋解釋代碼用形象的比方幫助記憶。效果如下:
知識點介紹 準確、清晰是其顯著特點,一般放在每一節開始位置,讓零基礎的讀者了解相關概念,順利入門。
範例 書中出現的完整實例,以章節順序編號,便於檢索和循序漸進地學習、實踐,放在每節知識點介紹之後。
範例代碼 與範例編號對應,層次清楚、語句簡潔、注釋豐富,體現了代碼優美的原則,有利於讀者養成良好的代碼編寫習慣。對於大段程式,均在每行代碼前設定編號,便於學習。
運行結果 對範例給出運行結果和對應圖示,幫助讀者更直觀地理解範例代碼。
代碼解析 將範例代碼中的關鍵代碼行逐一解釋,有助於讀者掌握相關概念和知識。
綜合練習 為了便於讀者鞏固所學內容,本書每章中均提供了綜合練習,並給出了操作提示和結果,配合讀者自己動手實踐。
習題 每章最後提供專門的測試習題,供讀者檢驗所學知識是否牢固掌握,題目的提示或答案放在光碟中。
貼心的提示 為了便於讀者閱讀,全書還穿插著一些技巧、提示等小貼士,體例約定如下:
提示:通常是一些貼心的提醒,讓讀者加深印象或提供建議,或者解決問題的方法。
注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。
警告:對操作不當或理解偏差將會造成的災難性後果做警示,以加深讀者印象。
經作者多年的培訓和授課證明,以上講解方式是最適合初學者學習的方式,讀者按照這種方式,會非常輕鬆、順利地掌握本書知識。
2.實用超值的DVD光碟
為了幫助讀者比較直觀地學習,本書附贈DVD光碟,內容包括多媒體視頻、電子教案(PPT)、各章習題答案和實例原始碼等。
多媒體視頻
配有長達16小時手把手教學視頻,講解關鍵知識點界面操作和書中的一些綜合練習題。作者親自配音、演示,手把手教會讀者使用。
電子教案(PPT)
本書可以作為高校相關課程的教材或課外輔導書,所以筆者特別為本書製作了電子教案(PPT),以方便老師教學使用。
推薦的學習計畫
本書作者在長期從事相關培訓或教學實踐過程中,歸納了最適合初學者的學習模式,並參考了多位專家的意見,為讀者總結了合理的學習時間分配方式,列表如下:
推薦時間安排 自學目標(框內打鉤表示已掌握) 難度指數
第1周 第1天 了解單片機發展歷史、套用領域和發展方向
熟悉典型的51系列單片機引腳結構和功能
掌握51系列單片機的內部結構
了解51系列單片機的中央處理器結構
熟悉51系列單片機的存儲器結構
掌握51系列單片機的指令時序
了解51系列單片機的掉電保護和低功耗模式
第2天 能夠根據自己的需要進行單片機的選型
能夠順利地搭建一個51單片機的硬體最小電路
能夠順利地搭建一個Keil C51軟體開發環境
熟悉Keil C51軟體的集成開發環境
第3天 熟悉和掌握彙編語言偽指令
掌握單片機彙編語言程式的格式
了解典型的彙編程式結構
能夠在Keil μVision3集成開發環境中使用彙編語言
第4天 了解單片機C51語言的標識符和關鍵字
熟悉單片機C51語言的數據類型和變數作用域
掌握各種常用的運算符和表達式
第5天 熟練掌握C51語言中的各種語句結構
熟悉C51不同語句的程式設計方法和功能用途
了解C51語言中常用的控制流程結構
續表
推薦時間安排 自學目標(框內打鉤表示已掌握) 難度指數
第1周 第6天 了解數組的聲明和表示
掌握數組元素的初始化方法
掌握和熟練運用一維數組和二位數組的使用
掌握和熟練運用字元串數組的使用
熟悉多維數組的使用
第7天 了解地址和指針的基本概念
掌握和熟悉指針變數的使用
掌握和熟悉數組指針和指針數組的區別及使用
掌握和熟練運用字元指針的使用
第2周 第8天 了解結構的聲明和初始化
掌握和熟練運用結構數組的使用
掌握和熟練運用結構指針的使用
掌握嵌套結構的使用
掌握位結構的使用
第9天 掌握和熟悉聯合類型的使用及其與結構的區別
掌握枚舉類型的使用
了解類型聲明的使用
了解位域的使用
第10天 了解函式的概念及函式的聲明
了解函式的參數、返回值
掌握函式的調用方法
了解函式的作用域
第11天 掌握和熟練運用各種常用的庫函式 □
第12天 了解和掌握宏定義指令
掌握和熟悉檔案包含指令
了解條件編譯指令
第13天 了解51單片機的存儲結構
掌握和熟練C51的各種存儲類型
了解存儲模式
掌握C51的存儲器指針
第14天 了解單片機定時器/計數器的結構
掌握定時器/計數器的功能及控制暫存器
掌握和熟練運用定時器/計數器的各種工作模式及程式設計
第3周 第15天 了解單片機的中斷系統
掌握中斷的類型、程式訪問和回響過程
掌握和熟練運用外部中斷源及其程式設計
掌握和熟練運用定時中斷源及其程式設計
掌握和熟練運用串列中斷源及其程式設計
續表
推薦時間安排 自學目標(框內打鉤表示已掌握) 難度指數
第3周 第16天 了解基本的串列通信概念
掌握51系列單片機串列接口的程式控制
掌握和熟練運用各種串口工作模式的原理
掌握和熟練運用各種串口工作模式的程式設計思路
第17天 了解鍵盤的種類
掌握鍵盤的基本原理
掌握和熟練運用陣列式鍵盤的使用
第18天 掌握LED數碼管的基本原理
掌握和熟練運用單個LED數碼管的直接驅動
掌握和熟練運用靜態驅動多個LED數碼管的方法
掌握和熟練運用LED驅動器的使用方法
第19天 了解I2C匯流排的工作原理
掌握I2C匯流排的定址方式
掌握和熟練運用I2C匯流排的協定
掌握I2C匯流排接口的EEPROM
掌握和熟練運用I2C匯流排的程式設計方法
第20天 了解各種常用的串列通信接口
掌握串列通信接口晶片的使用
掌握和熟練運用單片機與PC之間的串列通信方法
第21天 了解RTX-51實時多任務作業系統
了解RTX-51 Tiny的任務管理
掌握和熟練運用RTX-51 Tiny的系統函式
掌握RTX-51多任務程式與單任務程式的區別
掌握和熟練運用RTX-51 Tiny的程式設計
本書適合哪些讀者閱讀
本書非常適合以下人員閱讀:
從未接觸過51單片機開發技術的人員;
有一定硬體開發技術基礎,但還需要進一步學習的人員;
想學習單片機C51語言的開發人員;
其他編程愛好者。
目 錄
第1章 51系列單片機基礎知識
( 教學視頻:33分鐘) 15
1.1 51系列單片機概述 15
1.1.1 單片機的發展歷史 15
1.1.2 51系列單片機簡介 16
1.1.3 51系列單片機的套用領域 16
1.1.4 51系列單片機的發展方向 17
1.2 典型引腳結構 17
1.2.1 電源引腳 18
1.2.2 時鐘引腳 18
1.2.3 並行I/O引腳 19
1.2.4 復位引腳 22
1.2.5 ALE/ 引腳 23
1.2.6 引腳 23
1.2.7 /VPP引腳 23
1.3 51系列單片機內部結構 24
1.4 中央處理器結構 26
1.4.1 算術邏輯部件(ALU) 26
1.4.2 控制器 26
1.4.3 通用暫存器 26
1.4.4 專用暫存器 27
1.4.5 特殊功能暫存器 29
1.5 存儲器結構 30
1.5.1 程式存儲器 30
1.5.2 擴展外部程式存儲器 31
1.5.3 數據存儲器 31
1.5.4 擴展外部數據存儲器 33
1.6 單片機指令時序 34
1.6.1 幾個基本概念 34
1.6.2 指令執行的時序 35
1.6.3 訪問外部ROM的操作時序 37
1.6.4 訪問外部RAM的操作時序 38
1.7 掉電保護 38
1.8 低功耗模式 39
1.8.1 省電保持模式 39
1.8.2 休眠運行模式 39
1.9 小結 40
1.10 習題 40
第2章 搭建51單片機開發環境
( 教學視頻:29分鐘) 42
2.1 搭建51單片機硬體開發系統 42
2.1.1 單片機選型 42
2.1.2 一個單片機最小開發系統 43
2.2 搭建Keil C51軟體開發環境 44
2.2.1 Keil μ Vision3簡介 44
2.2.2 Keil μ Vision3系統安裝需求 45
2.2.3 Keil μ Vision 3的安裝 45
2.2.4 Keil μ Vision3集成開發環境
總攬 46
2.2.5 Keil μ Vision3的選單欄 47
2.2.6 Keil μ Vision3的工具列 50
2.2.7 Keil μ Vision3的快捷鍵 53
2.3 小結 53
2.4 習題 54
第3章 單片機彙編語言
( 教學視頻:46分鐘) 56
3.1 單片機彙編語言概述 56
3.1.1 單片機彙編語言簡介 56
3.1.2 簡單的單片機彙編語言程式 57
3.2 偽指令 57
3.2.1 起始偽指令ORG 57
3.2.2 結束偽指令END 58
3.2.3 等值偽指令EQU 58
3.2.4 地址賦值偽指令DATA 58
3.2.5 位元組保存偽指令DB 58
3.2.6 字保存偽指令DW 59
3.2.7 空間預留偽指令DS 59
3.2.8 位變數偽指令BIT 59
3.3 單片機的指令 60
3.3.1 單片機指令系統簡介 60
3.3.2 單片機指令格式 60
3.3.3 單片機指令的定址方式 61
3.3.4 51系列單片機指令集 64
3.5 單片機彙編語言的程式結構 69
3.5.1 順序結構 69
3.5.2 分支結構 70
3.5.3 循環結構 71
3.5.4 子程式結構 72
3.5.5 查表程式結構 73
3.6 Keil μVision3使用單片機彙編
程式 74
3.6.1 創建項目 74
3.6.2 編輯源檔案 76
3.6.3 編譯項目 76
3.6.4 仿真調試 77
3.7 綜合練習 77
3.8 小結 79
3.9 習題 79
第4章 單片機C51語言基礎
( 教學視頻:69分鐘) 82
4.1 單片機C51語言概述 82
4.1.1 單片機C51語言的主要特點 82
4.1.2 “Hello world”程式 82
4.1.3 良好的編程規範 83
4.2 標識符和關鍵字 84
4.2.1 標識符 84
4.2.2 關鍵字 84
4.3 數據類型 86
4.3.1 變數和常量 86
4.3.2 整型數據 87
4.3.3 字元型數據 88
4.3.4 浮點型數據 90
4.4 分隔設定 91
4.5 const修飾符 91
4.6 變數作用域 92
4.6.1 一般規則 92
4.6.2 不同存儲類型變數的作用域 93
4.7 運算符 95
4.7.1 算術運算符 95
4.7.2 邏輯運算符 97
4.7.3 關係運算符 98
4.7.4 位運算符 99
4.7.5 特殊運算符 102
4.7.6 運算符的優先權 106
4.7.7 運算符的結合性 106
4.8 表達式 106
4.8.1 算術表達式 107
4.8.2 賦值表達式 107
4.8.3 逗號表達式 108
4.8.4 關係和邏輯表達式 108
4.9 綜合練習 109
4.10 小結 110
4.11 習題 110
第5章 C51的語句
( 教學視頻:32分鐘) 112
5.1 聲明語句 112
5.2 表達式語句 112
5.3 複合語句 113
5.4 循環語句 114
5.4.1 for語句 114
5.4.2 while語句 115
5.4.3 do-while語句 116
5.5 條件語句 117
5.5.1 單分支if語句 117
5.5.2 雙分支if語句 118
5.5.3 多分支if語句 119
5.6 開關語句 120
5.7 跳轉語句 121
5.7.1 goto語句 121
5.7.2 break語句 122
5.7.3 continue語句 123
5.8 函式調用語句 123
5.9 空語句 124
5.10 返回語句 124
5.11 綜合練習 125
5.12 小結 126
5.13 習題 126
第6章 C51的數組
( 教學視頻:48分鐘) 129
6.1 數組的聲明和表示 129
6.2 初始化數組元素 131
6.2.1 在聲明數組時初始化 131
6.2.2 動態初始化 132
6.3 一維數組 132
6.3.1 一維數組的記憶體分配 132
6.3.2 一維數組的引用 133
6.3.3 一維字元串數組 134
6.4 二維數組 135
6.4.1 二維數組的聲明 135
6.4.2 二維數組的初始化 136
6.4.3 二維數組的記憶體分配 137
6.4.4 二維字元串數組 138
6.5 多維數組 139
6.6 綜合練習 140
6.7 小結 141
6.8 習題 141
第7章 C51的指針
( 教學視頻:71分鐘) 143
7.1 地址和指針概述 143
7.2 指針變數的聲明 143
7.3 指針變數的賦值 144
7.3.1 在聲明時賦值 144
7.3.2 動態賦值 144
7.3.3 指針變數之間傳遞 145
7.3.4 特殊的指針變數賦值——
數組 145
7.3.5 特殊的指針變數賦值——
字元串 145
7.3.6 特殊的指針變數賦值——
函式入口 146
7.4 指針變數的運算符 146
7.4.1 取地址運算符& 146
7.4.2 取值運算符* 146
7.4.3 指針變數的運算 147
7.5 特殊的指針類型——數組
指針 148
7.5.1 指向一維數組的指針 149
7.5.2 指向二維數組的指針 150
7.5.3 指向一個由n個元素所
組成的數組指針 151
7.5.4 指針和數組的關係總結 152
7.5.5 數組指針和指針數組 153
7.6 特殊的指針類型——字元
指針 154
7.7 綜合練習 155
7.8 小結 156
7.9 習題 156
第8章 C51的結構
( 教學視頻:35分鐘) 158
8.1 結構的聲明 158
8.1.1 定義結構 158
8.1.2 聲明結構變數 159
8.2 結構變數的初始化 160
8.3 結構變數的使用 162
8.4 結構數組 163
8.4.1 定義結構數組 163
8.4.2 初始化結構數組 164
8.5 結構指針 165
8.5.1 定義結構指針 165
8.5.2 使用結構指針 166
8.5.3 指向結構數組的結構指針 167
8.6 嵌套結構 168
8.7 位結構 169
8.8 綜合練習 170
8.9 小結 171
8.10 習題 172
第9章 C51的聚合類型
( 教學視頻:46分鐘) 173
9.1 聯合類型 173
9.1.1 聯合的定義 173
9.1.2 聯合變數的聲明 173
9.1.3 聯合變數成員的引用 175
9.1.4 聯合變數數組 175
9.1.5 聯合變數指針 176
9.1.6 聯合和結構的嵌套與區別 177
9.2 枚舉類型 178
9.2.1 定義枚舉類型 179
9.2.2 聲明枚舉變數 179
9.2.3 枚舉變數的賦值和引用 180
9.3 類型聲明 181
9.4 位域 182
9.4.1 定義位域 183
9.4.2 聲明位域變數 184
9.4.3 位域變數的引用 184
9.4.4 位域指針 185
9.5 綜合練習 186
9.6 小結 187
9.7 習題 187
第10章 C51的函式
( 教學視頻:56分鐘) 189
10.1 函式 189
10.1.1 函式概述 189
10.1.2 函式的分類 189
10.1.3 main函式 191
10.2 函式的聲明 191
10.2.1 函式聲明一 191
10.2.2 函式聲明二 192
10.2.3 函式聲明三 193
10.3 函式的參數和返回值 194
10.3.1 形參和實參 194
10.3.2 數組元素作為函式參數 195
10.3.3 數組名作為函式參數 196
10.3.4 二維數組作為函式參數 196
10.3.5 指針變數作為函式參數 197
10.3.6 函式的返回值 198
10.4 函式的調用 198
10.4.1 函式調用的方式 198
10.4.2 賦值調用 199
10.4.3 引用調用 199
10.4.4 遞歸調用 200
10.4.5 嵌套調用 201
10.5 作用域 202
10.5.1 函式的作用域 202
10.5.2 函式代碼的作用域 203
10.5.3 函式內部變數的作用域 203
10.6 C51常用庫函式 203
10.6.1 字元函式館 204
10.6.2 字元串函式館 216
10.6.3 輸入/輸出函式館 231
10.6.4 數學函式館 241
10.6.5 標準函式館 246
10.6.6 內部函式館 253
10.7 綜合練習 256
10.8 小結 257
10.9 習題 257
第11章 C51的預處理
( 教學視頻:36分鐘) 260
11.1 預處理命令概述 260
11.2 宏定義指令 261
11.2.1 #define指令 261
11.2.2 帶參數的#define指令 262
11.2.3 #undef指令 263
11.3 檔案包含指令 264
11.3.1 #include指令 264
11.3.2 常用的頭檔案 265
11.4 條件編譯指令 266
11.4.1 雙分支條件編譯指令 266
11.4.2 多分支條件編譯指令 267
11.4.3 宏名判斷指令 267
11.5 其他預處理指令 268
11.5.1 #line指令 269
11.5.2 #error指令 269
11.5.3 #pragma指令 270
11.6 綜合練習 270
11.7 小結 271
11.8 習題 271
第12章 C51的存儲結構
( 教學視頻:40分鐘) 273
12.1 單片機存儲結構 273
12.1.1 51系列單片機的存儲區域 273
12.1.2 片內低128位元組RAM區 273
12.1.3 特殊功能暫存器區(SFR) 274
12.2 存儲類型 274
12.2.1 data存儲類型 274
12.2.2 bdata存儲類型 275
12.2.3 idata存儲類型 275
12.2.4 pdata存儲類型 276
12.2.5 xdata存儲類型 276
12.2.6 code存儲類型 276
12.2.7 sfr存儲類型 277
12.2.8 sfr16存儲類型 277
12.2.9 sbit存儲類型 277
12.2.10 bit型變數 278
12.3 存儲模式 278
12.3.1 Small模式 279
12.3.2 Compact模式 279
12.3.3 Large模式 279
12.3.4 存儲模式的選擇 279
12.4 存儲器指針 280
12.4.1 指針存儲類型 280
12.4.2 存儲器指針 281
12.5 綜合練習 282
12.6 小結 283
12.7 習題 284
第13章 51系列單片機的定時器/計數器
( 教學視頻:53分鐘) 286
13.1 單片機的定時器/計數器 286
13.1.1 定時器/計數器的概述 286
13.1.2 定時器/計數器的控制
暫存器 287
13.1.3 定時器/計數器的初始化 290
13.2 定時器/計數器工作模式0及其
程式設計 290
13.3 定時器/計數器工作模式1及其
程式設計 292
13.4 定時器/計數器工作模式2及其
程式設計 294
13.5 定時器/計數器工作模式3及其
程式設計 295
13.6 綜合練習 297
13.7 小結 299
13.8 習題 299
第14章 51系列單片機的中斷系統
( 教學視頻:62分鐘) 302
14.1 中斷系統概述 302
14.1.1 中斷概述 302
14.1.2 中斷的典型概念 303
14.2 單片機中斷的類型 304
14.2.1 外部中斷源 304
14.2.2 定時中斷源 304
14.2.3 串列中斷源 304
14.3 中斷系統的程式訪問 305
14.3.1 中斷標誌控制暫存器
TCON 305
14.3.2 中斷標誌控制暫存器
SCON 306
14.3.3 中斷允許標誌暫存器IE 306
14.3.4 中斷優先權標誌暫存器IP 307
14.4 中斷的回響過程 308
14.4.1 中斷識別 308
14.4.2 中斷回響 309
14.4.3 中斷處理 310
14.4.4 中斷撤離 310
14.5 外部中斷源及其程式設計 310
14.6 定時中斷源及其程式設計 311
14.7 串列中斷源及其程式設計 312
14.8 綜合練習 313
14.9 小結 314
14.10 習題 315
第15章 51系列單片機的串列接口
( 教學視頻:66分鐘) 317
15.1 串列通信概述 317
15.1.1 串列通信與並行通信 317
15.1.2 異步串列通信與同步
串列通信 318
15.1.3 異步串列通信的波特率 319
15.1.4 串列通信的數據傳送方式 319
15.2 51系列單片機的串列接口 320
15.2.1 單片機串列接口的內部結構 320
15.2.2 串列接口控制暫存器SCON 321
15.2.3 波特率選擇暫存器PCON 323
15.2.4 波特率的程式設計 324
15.3 串列接口工作模式0及其程式
設計 326
15.4 串列接口工作模式1及其程式
設計 327
15.5 串列接口工作模式2及其程式
設計 329
15.6 串列接口工作模式3及其程式
設計 330
15.7 綜合練習 331
15.8 小結 332
15.9 習題 332
第16章 51系列單片機擴展鍵盤
( 教學視頻:41分鐘) 335
16.1 鍵盤的種類 335
16.1.1 直接式按鍵鍵盤 335
16.1.2 陣列式按鍵鍵盤 336
16.2 鍵盤的基本原理 337
16.2.1 按鍵編碼 337
16.2.2 按鍵確認 337
16.2.3 按鍵消抖 338
16.2.4 讀取鍵值 340
16.2.5 避免重複回響 340
16.2.6 多按鍵回響 340
16.3 鍵盤程式設計 340
16.3.1 直接式按鍵鍵盤的查詢方式 340
16.3.2 陣列式按鍵鍵盤的掃描方式 341
16.3.3 陣列式按鍵鍵盤的線反轉
方式 344
16.3.4 陣列式按鍵鍵盤的中斷
方式 346
16.4 單片機擴展鍵盤實例 348
16.4.1 電路原理圖 348
16.4.2 程式設計 349
16.5 綜合練習 351
16.6 小結 352
16.7 習題 353
第17章 51系列單片機的顯示接口
( 教學視頻:45分鐘) 354
17.1 LED數碼管的基本原理 354
17.2 單個LED數碼管的直接驅動
實例 356
17.3 靜態驅動多個LED數碼管
實例 358
17.4 使用LED驅動器驅動多個LED
數碼管實例 360
17.4.1 LED驅動器功能簡介 360
17.4.2 LED驅動器的數據傳輸
方式 361
17.4.3 LED驅動器的控制暫存器 361
17.4.4 使用LED驅動器的電路圖 364
17.4.5 程式設計 365
17.5 綜合練習 368
17.6 小結 368
17.7 習題 369
第18章 51系列單片機擴展I2C接口
( 教學視頻:46分鐘) 371
18.1 I2C匯流排的工作原理 371
18.2 I2C匯流排的定址方式 372
18.3 I2C匯流排的協定 372
18.3.1 起始信號 373
18.3.2 終止信號 373
18.3.3 應答信號 373
18.3.4 非應答信號 373
18.3.5 匯流排數據位 373
18.3.6 數據寫入 374
18.3.7 數據讀出 374
18.4 I2C匯流排接口的EEPROM 375
18.5 I2C匯流排擴展實例——硬體
加密 375
18.6 綜合練習 379
18.7 小結 382
18.8 習題 382
第19章 51系列單片機與PC的
串列通信
( 教學視頻:44分鐘) 384
19.1 串列通信接口概述 384
19.1.1 RS-232C串列通信接口
標準 384
19.1.2 RS-449串列通信接口標準 387
19.1.3 RS-423A串列通信接口
標準 388
19.1.4 RS-422A串列通信接口
標準 388
19.1.5 RS-485串列通信接口標準 389
19.1.6 20mA電流環串列通信
接口 389
19.2 串列通信接口晶片 390
19.3 單片機與PC的串列通信實例 391
19.3.1 電路圖 391
19.3.2 程式設計 392
19.4 綜合練習 394
19.5 小結 396
19.6 習題 396
第20章 51系列單片機的多任務
作業系統
( 教學視頻:62分鐘) 398
20.1 RTX-51實時多任務作業系統
簡介 398
20.1.1 多任務系統簡介 398
20.1.2 RTX-51實時多任務系統 399
20.1.3 RTX-51實時多任務系統
特點 399
20.2 RTX-51 Tiny的任務管理 400
20.3 RTX-51 Tiny的系統函式 401
20.3.1 信號傳送函式isr_send_
signal 401
20.3.2 信號標誌清除函式
os_clear_signal 402
20.3.3 任務啟動函式os_create_
task 402
20.3.4 任務刪除函式os_delete_
task 403
20.3.5 當前任務號函式
os_running_task_id 403
20.3.6 信號傳送函式
os_send_signal 403
20.3.7 等待函式os_wait 404
20.3.8 等待函式os_wait1 405
20.3.9 等待函式os_wait2 405
20.4 RTX-51與單任務程式的比較 406
20.4.1 簡單的單任務C51程式 406
20.4.2 多任務循環C51程式 407
20.4.3 多任務RTX-51程式 408
20.5 RTX-51循環任務調度程式
設計 409
20.6 RTX-51事件任務調度程式
設計 410
20.7 RTX-51信號任務調度程式
設計 411
20.8 RTX-51優先權及搶先任務
切換程式設計 412
20.9 綜合練習 414
20.10 小結 414
20.11 習題 415