《51單片機開發與應用技術詳解》

《51單片機開發與應用技術詳解》

《8051單片機開發與應用技術詳解》



GITHUB: https://github.com/jash-git/Jash-good-idea-20220101-001/tree/main/HW/8051


封面 ; 1

內 容 簡 介 ; 3
前 言 Introduction ; 4
第一篇 51系列單片機基礎 ; 36
    第1章 51系列單片機概述 ; 36
        1.1 單片機的產生與發展 ; 36
        1.2 51系列單片機介紹 ; 37
            1.2.1 51系列單片機簡介 ; 37
            1.2.2 51系列單片機的應用領域 ; 37
        1.3 最新51內核單片機介紹 ; 38
            1.3.1 Atmel單片機介紹 ; 38
            1.3.2 Cypress單片機介紹 ; 38
            1.3.3 Infineon單片機介紹 ; 39
            1.3.4 Silicon單片機介紹 ; 39
            1.3.5 Maxim單片機介紹 ; 40
            1.3.6 NXP單片機介紹 ; 40
            1.3.7 Winbond單片機介紹 ; 40
            1.3.8 Analog Devices單片機介紹 ; 40
            1.3.9 TI單片機介紹 ; 41
            1.3.10 其他單片機介紹 ; 41
        1.4 51系列單片機開發概述 ; 41
            1.4.1 分析測控系統 ; 42
            1.4.2 單片機選型 ; 42
            1.4.3 硬體資源配置 ; 42
            1.4.4 程式設計 ; 43
            1.4.5 模擬測試 ; 43
            1.4.6 實際硬體測試 ; 43
        1.5 小結 ; 43
    第2 章 51系列單片機基本結構 ; 44
        2.1 51系列單片機的內部結構 ; 44
            2.1.1 內部結構的主要組成部分 ; 44
            2.1.2 單片機結構的類型 ; 45
        2.2 51系列單片機的引腳功能 ; 46
            2.2.1 51系列單片機的引腳封裝 ; 46
            2.2.2 51系列單片機引腳功能 ; 46
        2.3 中央處理器(CPU) ; 48
            2.3.1 算術邏輯部件(ALU) ; 48
            2.3.2 控制器 ; 48
            2.3.3 通用寄存器 ; 49
            2.3.4 專用寄存器 ; 49
        2.4 記憶體結構 ; 51
            2.4.1 程式記憶體及其擴展 ; 51
            2.4.2 資料記憶體及其擴展 ; 52
        2.5 51系列單片機的重定 ; 56
            2.5.1 單片機的重定模式 ; 56
            2.5.2 單片機的重定電路 ; 56
        2.6 51系列單片機的時鐘和時序 ; 58
            2.6.1 振盪器和時鐘電路 ; 58
            2.6.2 CPU的時序 ; 59
            2.6.3 指令執行的時序 ; 59
            2.6.4 訪問外部ROM/RAM的操作時序 ; 61
        2.7 51系列單片機的並行I/O口 ; 62
            2.7.1 並行I/O口 ; 62
            2.7.2 並行I/O口的應用 ; 65
            2.7.3 並行I/O口的擴展 ; 65
        2.8 系統掉電保護和低功耗設計 ; 67
            2.8.1 掉電保護 ; 67
            2.8.2 低功耗設計 ; 68
        2.9 51系列單片機的最小系統 ; 69
        2.10 小結 ; 70
    第3章Keil C51開發工具簡介 ; 71
        3.1 KeilμVision3簡介 ; 71
        3.2 μVision3安裝 ; 71
        3.3 μVision3整合式開發環境 ; 72
            3.3.1 μVision3專案管理視窗 ; 73
            3.3.2 μVision3的功能表列 ; 73
            3.3.3 μVision3的工具列 ; 78
            3.3.4 μVision3的管理配置 ; 80
            3.3.5 μVision3的各種常用窗口 ; 82
        3.4 小結 ; 85
第二篇 程式設計篇——組合語言 ; 86
    第4 章 組合語言程式設計 ; 86
        4.1 組合語言程式概述 ; 86
            4.1.1 組合語言簡介 ; 86
            4.1.2 組合語言程式設計步驟 ; 87
            4.1.3 組合語言程式實例 ; 87
        4.2 虛擬指令 ; 88
            4.2.1 組合語言程式起始虛擬指令ORG ; 88
            4.2.2 組合語言程式結束虛擬指令END ; 88
            4.2.3 等值虛擬指令EQU(或=) ; 88
            4.2.4 資料位址賦值虛擬指令DATA ; 89
            4.2.5 定義位元組虛擬指令DB ; 89
            4.2.6 定義字虛擬指令DW ; 89
            4.2.7 定義空間虛擬指令DS ; 90
            4.2.8 位元位址符號虛擬指令BIT ; 90
        4.3 組合語言程式的格式 ; 90
        4.4 來源程式的彙編 ; 91
        4.5 KeilμVision3中運行組合語言實例 ; 91
            4.5.1 創建項目 ; 91
            4.5.2 創建原始檔案 ; 92
            4.5.3 編譯項目 ; 93
            4.5.4 模擬調試 ; 94
        4.6 小結 ; 94
    第5 章 組合語言程式結構 ; 95
        5.1 順序結構程式 ; 95
        5.2 分支結構程式 ; 96
            5.2.1 雙分支結構 ; 96
            5.2.2 多分支結構 ; 98
        5.3 迴圈結構程式 ; 98
            5.3.1 迴圈程式的結構和組成 ; 98
            5.3.2 迴圈程式示例 ; 99
            5.3.3 多重迴圈程式結構 ; 101
        5.4 副程式結構 ; 101
            5.4.1 副程式的結構 ; 101
            5.4.2 副程式的調用與返回 ; 102
            5.4.3 副程式設計實例 ; 102
        5.5 查表結構程式 ; 103
        5.6 運算類程式 ; 105
            5.6.1 8位元帶符號整數的乘法副程式 ; 105
            5.6.2 8位元帶符號整數的除法副程式 ; 106
        5.7 小結 ; 107
第三篇 程式設計篇——C51 ; 108
    第6 章 單片機C語言程式設計基礎 ; 108
        6.1 單片機C語言概述 ; 108
            6.1.1 單片機C語言和組合語言對比 ; 108
            6.1.2 C51語言的主要特點 ; 108
        6.2 單片機C語言在KeilμVision3中應用實例 ; 109
            6.2.1 創建項目 ; 109
            6.2.2 創建原始檔案 ; 110
            6.2.3 編譯項目 ; 110
            6.2.4 模擬調試 ; 111
        6.3 C51的識別字與關鍵字 ; 112
            6.3.1 識別字 ; 112
            6.3.2 關鍵字 ; 112
        6.4 C51的資料類型 ; 113
            6.4.1 常量與變數 ; 114
            6.4.2 整型數據 ; 115
            6.4.3 浮點型數據 ; 116
            6.4.4 字元型資料 ; 117
            6.4.5 指標型數據 ; 120
            6.4.6 無值型數據 ; 120
        6.5 C51的變數作用域 ; 120
            6.5.1 基本規則 ; 120
            6.5.2 自動變數 ; 121
            6.5.3 外部變數 ; 122
            6.5.4 靜態變數 ; 123
            6.5.5 寄存器變數 ; 124
        6.6 分隔符號與const修飾符 ; 124
            6.6.1 C51分隔符號 ; 124
            6.6.2 const修飾符 ; 124
        6.7 運算子 ; 125
            6.7.1 算術運算子 ; 125
            6.7.2 邏輯運算子和關係運算子 ; 127
            6.7.3 位運算子 ; 129
            6.7.4 特殊運算子 ; 131
            6.7.5 運算子優先順序和結合性 ; 134
        6.8 運算式 ; 135
            6.8.1 算術運算式 ; 135
            6.8.2 賦值運算式 ; 135
            6.8.3 逗號運算式 ; 137
            6.8.4 關係和邏輯運算式 ; 137
        6.9 小結 ; 139
    第7 章 陣列 ; 140
        7.1 陣列類型說明 ; 140
        7.2 陣列元素的表示 ; 141
        7.3 陣列元素的初始化賦值 ; 142
        7.4 一維陣列 ; 143
            7.4.1 一維陣列聲明 ; 143
            7.4.2 向函數傳遞一維陣列 ; 143
            7.4.3 一維字串陣列 ; 144
        7.5 二維陣列 ; 145
            7.5.1 二維陣列聲明 ; 145
            7.5.2 二維陣列初始化 ; 146
            7.5.3 二維字串陣列 ; 147
        7.6 多維陣列 ; 148
        7.7 小結 ; 148
    第8 章 指針 ; 149
        8.1 位址、指標和指標變數的概念 ; 149
        8.2 指標變數的聲明 ; 149
        8.3 指標變數的賦值 ; 150
            8.3.1 初始化賦值 ; 150
            8.3.2 取地址賦值 ; 150
            8.3.3 指針之間賦值 ; 150
            8.3.4 陣列賦值 ; 151
            8.3.5 字串賦值 ; 151
            8.3.6 函數入口賦值 ; 151
        8.4 指標變數的引用 ; 151
            8.4.1 取地址運算子“&” ; 151
            8.4.2 取內容運算子“*” ; 152
        8.5 指標變數的運算 ; 153
            8.5.1 關係運算 ; 153
            8.5.2 算數運算 ; 153
        8.6 陣列指標 ; 154
            8.6.1 指向一維陣列的指標 ; 154
            8.6.2 指向二維陣列的指標 ; 155
            8.6.3 指向一個由n個元素所組成的陣列指標 ; 157
            8.6.4 指標和陣列的關係 ; 157
        8.7 字元指標 ; 158
        8.8 指標陣列 ; 159
        8.9 小結 ; 160
    第9 章 結構 ; 161
        9.1 結構的定義 ; 161
        9.2 結構變數的定義 ; 162
            9.2.1 先定義結構,再定義結構變數 ; 162
            9.2.2 在定義結構的同時,定義結構變數 ; 162
            9.2.3 直接說明結構變數 ; 163
        9.3 結構變數的使用 ; 163
        9.4 多重結構變數的賦值 ; 164
        9.5 結構變數的初始化 ; 164
        9.6 結構陣列 ; 165
            9.6.1 結構陣列的定義 ; 166
            9.6.2 結構陣列的初始化賦值 ; 166
        9.7 結構指標 ; 167
        9.8 特殊結構 ; 170
            9.8.1 嵌套結構 ; 170
            9.8.2 位元結構 ; 170
        9.9 小結 ; 171
    第10 章 聯合、枚舉、類型說明和位域 ; 172
        10.1 聯合類型 ; 172
            10.1.1 聯合和聯合變數的定義 ; 172
            10.1.2 聯合變數成員的引用 ; 173
        10.2 結構和聯合的區別 ; 175
        10.3 枚舉類型 ; 176
            10.3.1 枚舉的定義 ; 176
            10.3.2 枚舉變數的聲明 ; 177
            10.3.3 枚舉類型變數的賦值 ; 178
        10.4 類型說明 ; 179
        10.5 位域 ; 180
            10.5.1 位元域的定義和位元域變數的聲明 ; 180
            10.5.2 位元域變數的使用 ; 181
        10.6 小結 ; 182
    第11 章 C51語言的函數 ; 183
        11.1 函數的概念和分類 ; 183
            11.1.1 從函式定義角度 ; 183
            11.1.2 從有無返回值角度 ; 184
            11.1.3 從資料傳送角度 ; 184
        11.2 函數的定義 ; 184
        11.3 函數的參數 ; 186
            11.3.1 形參和實參 ; 186
            11.3.2 陣列作為函數參數 ; 187
            11.3.3 多維陣列作為函數參數 ; 189
            11.3.4 指標作為函數參數 ; 189
        11.4 函數的返回值 ; 190
        11.5 函式呼叫 ; 190
            11.5.1 賦值調用與引用調用 ; 191
            11.5.2 遞迴呼叫 ; 191
            11.5.3 嵌套調用 ; 193
        11.6 函數及其變數的作用域 ; 194
            11.6.1 函數的作用域 ; 194
            11.6.2 函數的變數作用域 ; 194
        11.7 main函數 ; 195
        11.8 小結 ; 195
    第12 章 C51語言的常用庫函數詳解 ; 196
        12.1 字元函數 ; 196
            12.1.1 檢查英文字母函數 ; 196
            12.1.2 檢查字母數位函數 ; 197
            12.1.3 檢查控制字元函數 ; 197
            12.1.4 十進位數字字檢查函數 ; 198
            12.1.5 可列印字元檢查函數 ; 198
            12.1.6 包含空格的可列印字元檢查函數 ; 199
            12.1.7 格式字元檢查函數 ; 200
            12.1.8 小寫英文字母檢查函數 ; 200
            12.1.9 大寫英文字母檢查函數 ; 201
            12.1.10 控制字元檢查函數 ; 201
            12.1.11 十六進位數位檢查函數 ; 202
            12.1.12 十六進位數位轉換函數 ; 203
            12.1.13 大寫字元轉換函數 ; 203
            12.1.14 小寫字元轉換函數 ; 204
            12.1.15 ASCII字元轉換函數 ; 205
            12.1.16 大寫字元巨集轉換函數 ; 205
            12.1.17 小寫字元巨集轉換函數 ; 206
        12.2 字串函數 ; 207
            12.2.1 字元查找函數 ; 207
            12.2.2 指定長度的字串比較函數 ; 207
            12.2.3 字串複製函數 ; 208
            12.2.4 帶終止字元的字串複製函數 ; 209
            12.2.5 字串移動函數 ; 209
            12.2.6 字串填充函數 ; 210
            12.2.7 字串追加函數 ; 211
            12.2.8 指定長度的字串追加函數 ; 211
            12.2.9 字串比較函數 ; 212
            12.2.10 包含結束符的字串比較函數 ; 213
            12.2.11 字串覆蓋函數 ; 213
            12.2.12 指定長度的字串覆蓋函數 ; 214
            12.2.13 獲取字串個數函數 ; 215
            12.2.14 搜索字串函數 ; 215
            12.2.15 搜索字元函數 ; 216
            12.2.16 返回位置值的字元搜索函數 ; 217
            12.2.17 字元包含函數 ; 217
            12.2.18 返回位置值的字元包含函數 ; 218
            12.2.19 在指定字元集中查找不包含字元函數 ; 219
            12.2.20 在指定字元集中查找包含字元函數 ; 219
            12.2.21 查找第一個包含字元函數 ; 220
            12.2.22 查找最後一個包含字元函數 ; 221
        12.3 I/O函數 ; 221
            12.3.1 字元讀入函數 ; 222
            12.3.2 字元讀入輸出函數 ; 222
            12.3.3 字串讀入函數 ; 223
            12.3.4 字元回送函數 ; 223
            12.3.5 字元輸出函數 ; 224
            12.3.6 格式化輸出函數 ; 225
            12.3.7 格式化記憶體緩衝區輸出函數 ; 226
            12.3.8 字串輸出函數 ; 227
            12.3.9 格式化輸入函數 ; 228
            12.3.10 格式化記憶體緩衝區輸入函數 ; 229
            12.3.11 字串記憶體輸出函數 ; 230
            12.3.12 指向緩衝區的輸出函數 ; 231
        12.4 數學函數 ; 232
            12.4.1 絕對值函數 ; 232
            12.4.2 指數及對數函數 ; 233
            12.4.3 三角函數 ; 233
            12.4.4 取整函數 ; 235
            12.4.5 浮點型分離函數 ; 235
            12.4.6 冪函數 ; 236
        12.5 標準函數 ; 236
            12.5.1 字串轉換函數 ; 237
            12.5.2 帶返回指標的字串轉換函數 ; 238
            12.5.3 隨機函數 ; 239
            12.5.4 陣列記憶體分配函數 ; 239
            12.5.5 釋放記憶體函數 ; 240
            12.5.6 初始化記憶體函數 ; 241
            12.5.7 記憶體分配函數 ; 242
            12.5.8 調整記憶體大小函數 ; 242
        12.6 內建函式 ; 243
            12.6.1 迴圈左移函數 ; 243
            12.6.2 迴圈右移函數 ; 244
            12.6.3 延時函數 ; 245
            12.6.4 位元測試函數 ; 245
        12.7 絕對位址訪問函數 ; 246
            12.7.1 BYTE型存儲空間訪問函數 ; 246
            12.7.2 WORD型存儲空間訪問函數 ; 247
            12.7.3 far存儲區訪問函數 ; 247
            12.7.4 far存儲區陣列訪問函數 ; 248
        12.8 變數參數表函數 ; 248
        12.9 全程跳轉函數 ; 249
        12.10 計算結構體成員的偏移量函數 ; 250
        12.11 小結 ; 251
    第13 章 C51語句和流程 ; 252
        13.1 說明語句 ; 252
        13.2 運算式語句 ; 252
        13.3 複合陳述式 ; 253
        13.4 迴圈語句 ; 254
            13.4.1 while語句 ; 254
            13.4.2 do-while語句 ; 255
            13.4.3 for語句 ; 255
        13.5 條件陳述式 ; 256
            13.5.1 單分支結構 ; 256
            13.5.2 雙分支結構 ; 257
            13.5.3 階梯式if-else-if結構 ; 257
        13.6 開關語句 ; 259
        13.7 跳躍陳述式 ; 260
            13.7.1 goto語句 ; 260
            13.7.2 break語句 ; 261
            13.7.3 continue 語句 ; 262
        13.8 函式呼叫語句 ; 262
        13.9 空語句 ; 263
        13.10 返回語句 ; 263
        13.11 C51語言的流程控制結構 ; 264
        13.12 小結 ; 265
    第14 章 預處理及使用者設定檔 ; 266
        14.1 預處理命令概述 ; 266
        14.2 巨集定義指令 ; 266
            14.2.1 \#define命令 ; 267
            14.2.2 \#undef命令 ; 268
        14.3 檔包含指令 ; 269
        14.4 條件編譯指令 ; 270
            14.4.1 \#if、\#else、\#endif命令 ; 270
            14.4.2 \#elif命令 ; 271
            14.4.3 \#ifdef、\#ifndef命令 ; 272
        14.5 其他編譯指令 ; 272
            14.5.1 \#line命令 ; 273
            14.5.2 \#error ; 273
            14.5.3 \#pragma ; 274
        14.6 C51語言編譯器的控制指令 ; 274
            14.6.1 原始檔案控制類 ; 274
            14.6.2 目的檔案(Object)控制類 ; 275
            14.6.3 列表文件(Listing)控制類 ; 275
        14.7 C51語言的使用者設定檔 ; 275
            14.7.1 C51語言啟動代碼檔 ; 275
            14.7.2 C51語言啟動代碼分析 ; 279
            14.7.3 變數初始設定檔案 ; 280
            14.7.4 基本I/O函數檔 ; 281
            14.7.5 分組設定檔 ; 281
        14.8 小結 ; 281
    第15 章 C51語言的存儲結構 ; 283
        15.1 記憶體結構 ; 283
            15.1.1 51系列單片機的存儲區域 ; 283
            15.1.2 片內資料記憶體(RAM)的結構 ; 283
        15.2 存儲類型 ; 284
            15.2.1 data存儲類型 ; 284
            15.2.2 bdata存儲類型 ; 284
            15.2.3 idata存儲類型 ; 285
            15.2.4 pdata存儲類型 ; 285
            15.2.5 xdata存儲類型 ; 285
            15.2.6 code存儲類型 ; 285
        15.3 擴展資料類型 ; 286
            15.3.1 sfr和sfr16 ; 286
            15.3.2 sbit ; 287
            15.3.3 bit型變數 ; 287
        15.4 存儲模式 ; 287
            15.4.1 Small模式 ; 287
            15.4.2 Compact模式 ; 288
            15.4.3 Large模式 ; 288
            15.4.4 存儲模式的選擇 ; 288
        15.5 C51語言的記憶體指標 ; 288
            15.5.1 一般指針 ; 288
            15.5.2 記憶體指針 ; 289
            15.5.3 指標存儲類型與指標所指向的資料的存儲類型的關係 ; 290
        15.6 動態記憶體分配 ; 290
            15.6.1 C51語言的動態分配函數 ; 291
            15.6.2 malloc和calloc函數 ; 291
        15.7 小結 ; 291
第四篇 51系列單片機程式設計指南篇 ; 292
    第16 章 51系列單片機的指令系統 ; 292
        16.1 指令系統簡介 ; 292
            16.1.1 指令格式 ; 292
            16.1.2 指令符號 ; 293
        16.2 定址方式 ; 294
            16.2.1 即時定位 ; 294
            16.2.2 直接定址 ; 295
            16.2.3 寄存器定址 ; 296
            16.2.4 寄存器間接定址 ; 297
            16.2.5 變址定址 ; 299
            16.2.6 相對定址 ; 300
            16.2.7 位定址 ; 301
        16.3 資料傳送指令 ; 302
            16.3.1 內部RAM資料傳送指令 ; 302
            16.3.2 外部RAM資料傳送指令 ; 306
            16.3.3 程式記憶體資料傳送指令 ; 307
            16.3.4 資料交換指令 ; 308
            16.3.5 堆疊操作指令 ; 310
        16.4 算數運算指令 ; 311
            16.4.1 加法指令 ; 311
            16.4.2 帶進位元的加法指令 ; 313
            16.4.3 帶借位的減法指令 ; 314
            16.4.4 加1指令 ; 316
            16.4.5 減1指令 ; 317
            16.4.6 乘除法指令 ; 318
            16.4.7 十進位調整指令 ; 319
        16.5 邏輯運算及移位元指令 ; 321
            16.5.1 邏輯與指令 ; 321
            16.5.2 邏輯或指令 ; 322
            16.5.3 邏輯異或指令 ; 323
            16.5.4 累加器清零指令 ; 325
            16.5.5 累加器取反指令 ; 325
            16.5.6 組合邏輯電路的實現 ; 326
            16.5.7 迴圈移位元指令 ; 327
        16.6 控制轉移指令 ; 328
            16.6.1 無條件轉移指令 ; 329
            16.6.2 條件轉移指令 ; 333
            16.6.3 副程式調用及返回指令 ; 336
        16.7 位元操作指令 ; 339
            16.7.1 位元變數傳送指令 ; 340
            16.7.2 置位元與清零指令 ; 341
            16.7.3 位元邏輯運算指令 ; 341
            16.7.4 位元控制轉移指令 ; 343
        16.8 空操作指令 ; 344
        16.9 51系列單片機指令匯總 ; 345
        16.10 小結 ; 349
    第17 章 51系列單片機的計時器/計數器 ; 350
        17.1 計時器/計數器0和1 ; 350
            17.1.1 計時器/計數器的結構 ; 350
            17.1.2 計時器/計數器的功能 ; 351
            17.1.3 T0和T1的控制寄存器 ; 351
        17.2 計時器/計數器0和1的工作模式 ; 354
            17.2.1 工作模式0及其程式設計 ; 354
            17.2.2 工作模式1及其程式設計 ; 356
            17.2.3 工作模式2及其程式設計 ; 358
            17.2.4 工作模式3及其程式設計 ; 360
        17.3 計時器/計數器2 ; 363
            17.3.1 T2的控制寄存器T2CON和T2MOD及其程式訪問 ; 363
            17.3.2 計時器/計數器2的工作模式 ; 365
        17.4 小結 ; 369
    第18 章 51系列單片機中斷系統及其程式設計 ; 370
        18.1 中斷系統概述 ; 370
            18.1.1 什麼是中斷 ; 370
            18.1.2 中斷的用途 ; 370
            18.1.3 中斷需要解決的問題 ; 371
        18.2 51系列單片機的中斷類型 ; 372
            18.2.1 外部中斷源 ; 373
            18.2.2 定時中斷源 ; 373
            18.2.3 串列中斷源 ; 373
        18.3 51系列單片機的中斷系統 ; 373
            18.3.1 插斷要求標誌及其訪問 ; 374
            18.3.2 中斷允許標誌及其訪問 ; 375
            18.3.3 中斷優先順序標誌及其訪問 ; 376
        18.4 中斷的處理過程 ; 377
            18.4.1 中斷回應 ; 377
            18.4.2 中斷處理 ; 378
            18.4.3 中斷返回 ; 380
            18.4.4 插斷要求的撤離 ; 380
        18.5 中斷源的程式設計 ; 380
            18.5.1 外部中斷源的程式設計 ; 380
            18.5.2 定時中斷源的程式設計 ; 381
            18.5.3 串列中斷源的程式設計 ; 383
        18.6 外部中斷源的擴展 ; 384
            18.6.1 計時器/計數器擴展外部中斷源 ; 384
            18.6.2 查詢方式擴展外部中斷源 ; 386
        18.7 小結 ; 388
    第19章 51系列單片機的序列介面 ; 389
        19.1 串列通信概述 ; 389
            19.1.1 串列通信簡介 ; 389
            19.1.2 串列通信的資料傳送方式 ; 391
        19.2 51系列單片機的序列介面 ; 392
            19.2.1 單片機序列介面的內部結構 ; 392
            19.2.2 單片機序列介面的程式控制 ; 393
            19.2.3 串列傳輸速率的程式設計 ; 395
        19.3 串列口的工作模式0 ; 398
            19.3.1 模式0的發送及擴展輸出埠 ; 398
            19.3.2 模式0的接收及擴展輸入埠 ; 399
        19.4 串列口的工作模式1 ; 401
            19.4.1 模式1的發送 ; 401
            19.4.2 模式1的接收 ; 403
        19.5 串列口的工作模式2 ; 404
            19.5.1 模式2的發送 ; 404
            19.5.2 模式2的接收 ; 405
        19.6 串列口的工作模式3 ; 407
            19.6.1 模式3的發送 ; 407
            19.6.2 模式3的接收 ; 408
        19.7 雙機通信程式設計 ; 409
            19.7.1 查詢方式 ; 409
            19.7.2 中斷方式 ; 410
        19.8 多機通信程式設計 ; 412
            19.8.1 多機通信原理 ; 413
            19.8.2 多機通信協議約定 ; 413
            19.8.3 多機通信程式設計 ; 413
        19.9 小結 ; 418
    第20 章 C51下的RTX-51即時多工作業系統 ; 419
        20.1 RTX-51即時多工作業系統簡介 ; 419
            20.1.1 RTX-51種類 ; 419
            20.1.2 RTX-51與單任務程式的比較 ; 420
        20.2 RTX-51的任務調度 ; 422
            20.2.1 RTX-51迴圈任務調度 ; 422
            20.2.2 RTX-51事件任務調度 ; 422
            20.2.3 RTX-51信號任務調度 ; 423
            20.2.4 優先順序及搶先任務切換 ; 423
            20.2.5 RTX-51的其他特性 ; 424
        20.3 RTX-51 Tiny的系統函數 ; 425
            20.3.1 發送信號函數isr_send_signal ; 425
            20.3.2 清除信號標誌函數os_clear_signal ; 426
            20.3.3 啟動任務函數os_create_task ; 426
            20.3.4 刪除任務函數os_delete_task ; 426
            20.3.5 當前任務號函數os_running_task_id ; 427
            20.3.6 發送信號函數os_send_signal ; 427
            20.3.7 等待函數os_wait ; 428
            20.3.8 等待函數os_wait1 ; 429
            20.3.9 等待函數os_wait2 ; 429
        20.4 RTX-51 Tiny的任務管理 ; 430
            20.4.1 RTX-51 Tiny的任務狀態 ; 430
            20.4.2 RTX-51 Tiny的事件 ; 430
            20.4.3 RTX-51 Tiny的任務切換 ; 431
        20.5 RTX-51 Tiny的設定檔 ; 431
        20.6 RTX-51 Tiny的要求及限定 ; 434
            20.6.1使用RTX-51 Tiny的要求 ; 434
            20.6.2 RTX-51 Tiny的注意事項 ; 434
        20.7 RTX-51 FULL的系統函數及技術參數 ; 435
            20.7.1 RTX-51 FULL函數一覽 ; 435
            20.7.2 RTX-51的技術參數 ; 437
        20.8 小結 ; 437
    第21 章 Keil μVision3中的單片機硬體資源模擬 ; 438
        21.1 模擬概述 ; 438
        21.2 並行I/O埠的模擬 ; 438
        21.3 計時器/計數器的模擬 ; 440
            21.3.1 計時器/計數器T0和T1的模擬介面 ; 440
            21.3.2 計時器/計數器T2的模擬介面 ; 441
            21.3.3 計時器/計數器的模擬操作 ; 441
        21.4 序列介面的模擬 ; 444
            21.4.1 序列介面的模擬介面 ; 444
            21.4.2 序列介面的模擬操作 ; 445
            21.4.3 字串輸入輸出的模擬操作 ; 446
        21.5 中斷模擬 ; 448
            21.5.1 中斷系統的模擬介面 ; 448
            21.5.2 中斷系統的模擬操作 ; 448
        21.6 看門狗計時器的模擬 ; 450
            21.6.1 看門狗計時器的模擬介面 ; 450
            21.6.2 看門狗計時器的模擬操作 ; 450
        21.7 A/D模擬 ; 451
            21.7.1 A/D轉換器的模擬介面 ; 451
            21.7.2 A/D轉換器的模擬操作 ; 452
        21.8 D/A模擬 ; 454
            21.8.1 D/A轉換器的模擬介面 ; 454
            21.8.2 D/A轉換器的模擬操作 ; 455
        21.9 寄存器模擬 ; 456
            21.9.1 寄存器的模擬介面 ; 457
            21.9.2 寄存器的模擬操作 ; 457
        21.10 低功耗模擬 ; 458
        21.11 小結 ; 459
    第22 章 Keil μVision3中的程式調試 ; 460
        22.1 KeilμVision3的程式調試器概述 ; 460
        22.2 性能分析器 ; 460
        22.3 代碼覆蓋分析器 ; 461
        22.4 中斷點 ; 462
        22.5 KeilμVision3調試命令 ; 463
            22.5.1 通用命令 ; 463
            22.5.2 程式命令 ; 467
            22.5.3 中斷點命令 ; 469
            22.5.4 記憶體命令 ; 471
        22.6 小結 ; 473
第五篇 典型案例篇 ; 474
    第23 章 鍵盤程式設計 ; 474
        23.1 鍵盤介面概述 ; 474
            23.1.1 按鍵編碼 ; 474
            23.1.2 輸入的可靠性 ; 474
            23.1.3 程式檢測及回應 ; 475
        23.2 獨立式按鍵及其程式設計介面 ; 475
            23.2.1 獨立式按鍵結構 ; 475
            23.2.2 獨立式按鍵程式設計 ; 476
        23.3 4×4矩陣式鍵盤及其程式設計介面 ; 477
            23.3.1 掃描法及其程式設計 ; 477
            23.3.2 線反轉法及其程式設計 ; 479
            23.3.3 中斷法及其程式設計 ; 481
        23.4 矩陣式鍵盤的介面實例 ; 482
            23.4.1 電路圖 ; 482
            23.4.2 程式設計 ; 483
            23.4.3 程式模擬 ; 485
        23.5 小結 ; 487
    第24 章 LED數碼管顯示 ; 488
        24.1 LED數碼管概述 ; 488
            24.1.1 7段共陽極LED結構及顯示段碼 ; 488
            24.1.2 7段共陰極LED結構及顯示段碼 ; 489
        24.2 單個LED驅動實例 ; 490
            24.2.1 電路圖 ; 490
            24.2.2 程式設計 ; 492
        24.3 多個LED驅動方式 ; 494
            24.3.1 靜態驅動顯示 ; 495
            24.3.2 動態驅動顯示 ; 499
            24.3.3 LED驅動器 ; 501
        24.4 多個LED驅動實例 ; 505
            24.4.1 LED驅動器電路圖 ; 505
            24.4.2 程式設計 ; 506
        24.5 小結 ; 510
    第25 章 LCD液晶顯示模組 ; 511
        25.1 LCD液晶顯示概述 ; 511
            25.1.1 液晶的來源 ; 511
            25.1.2 LCD液晶顯示器結構及原理 ; 511
            25.1.3 液晶顯示模組的種類 ; 512
            25.1.4 液晶顯示模組的優點 ; 513
        25.2 液晶顯示模組控制介面 ; 513
            25.2.1 LCD控制驅動器ST7920概述 ; 513
            25.2.2 ST7920功能說明 ; 514
            25.2.3 ST7920基本指令集 ; 518
            25.2.4 ST7920擴充指令集 ; 520
            25.2.5 ST7920的操作方式 ; 521
            25.2.6 圖形點陣式液晶顯示模組 ; 523
            25.2.7 圖形點陣式液晶讀寫子函數 ; 524
        25.3 漢字及圖形顯示實例 ; 526
            25.3.1 電路設計 ; 527
            25.3.2 建立專案 ; 527
            25.3.3 漢字顯示實例 ; 528
            25.3.4 圖形顯示實例 ; 530
            25.3.5 任意位置圖形顯示實例 ; 532
        25.4 小結 ; 534
    第26 章 D/A轉換實例 ; 535
        26.1 D/A轉換概述 ; 535
            26.1.1 D/A轉換原理 ; 535
            26.1.2 D/A轉換器的類型 ; 536
            26.1.3 D/A轉換器的技術參數 ; 537
        26.2 高速D/A轉換晶片AD558 ; 538
            26.2.1 AD558簡介 ; 538
            26.2.2 AD558電壓輸出模式 ; 539
            26.2.3 AD558的數據鎖存 ; 540
        26.3 光通信電壓調製電路實例——電路部分 ; 541
            26.3.1 相位調製的原理 ; 541
            26.3.2 電壓調製系統 ; 542
            26.3.3 電路圖 ; 543
        26.4 光通信電壓調製電路實例——程式部分 ; 546
            26.4.1 系統狀態編碼 ; 546
            26.4.2 建立專案 ; 546
            26.4.3 主程序 ; 546
            26.4.4 無調製模式函數 ; 548
            26.4.5 調製模式1函數 ; 548
            26.4.6 調製模式2函數 ; 549
            26.4.7 調製模式3函數 ; 549
            26.4.8 調製模式4函數 ; 549
        26.5 光通信電壓調製電路實例——模擬部分 ; 549
            26.5.1 程式模擬 ; 550
            26.5.2 運行效果 ; 550
        26.6 小結 ; 550
    第27 章 可程式設計邏輯器件CPLD ; 551
        27.1 可程式設計邏輯器件概述 ; 551
            27.1.1 可程式設計邏輯器件的發展 ; 551
            27.1.2 CPLD的結構及其邏輯實現 ; 551
            27.1.3 FPGA的結構及其邏輯實現 ; 553
        27.2 硬體描述語言簡述 ; 554
            27.2.1 硬體描述語言VHDL概述 ; 555
            27.2.2 VHDL程式結構 ; 555
        27.3 Altera常用CPLD晶片介紹 ; 557
        27.4 使用CPLD擴展51單片機I/O介面 ; 559
            27.4.1 CPLD擴展單片機I/O介面原理 ; 559
            27.4.2 電路圖 ; 560
        27.5 單片機程式設計 ; 561
            27.5.1 專案建立 ; 561
            27.5.2 主程序 ; 562
        27.6 VHDL程式設計 ; 562
            27.6.1 專案建立 ; 562
            27.6.2 程式設計 ; 563
        27.7 程式模擬 ; 565
            27.7.1 設計CPLD引腳 ; 565
            27.7.2 模擬操作 ; 566
        27.8 程式下載 ; 567
        27.9 小結 ; 569
    第28 章 51系列單片機讀寫I2C匯流排 ; 570
        28.1 I2C匯流排概述 ; 570
            28.1.1 I2C匯流排工作原理 ; 570
            28.1.2 I2C匯流排的電氣結構和負載能力 ; 571
            28.1.3 I2C匯流排器件的定址方式 ; 571
        28.2 I2C匯流排資料傳輸協定及其程式詳解 ; 571
            28.2.1 起始信號 ; 572
            28.2.2 終止信號 ; 573
            28.2.3 應答信號 ; 573
            28.2.4 非應答信號 ; 574
            28.2.5 應答位檢查 ; 575
            28.2.6 匯流排資料位元 ; 575
            28.2.7 寫數據 ; 575
            28.2.8 讀數據 ; 578
        28.3 51單片機讀寫EEPROM ; 581
            28.3.1 串列EEPROM記憶體簡介 ; 581
            28.3.2 電路設計 ; 582
            28.3.3 程式設計 ; 583
            28.3.4 模擬分析 ; 584
        28.4 小結 ; 585
    第29 章 單片機音樂播放 ; 586
        29.1 單片機發音概述 ; 586
            29.1.1 音調 ; 586
            29.1.2 節拍 ; 588
            29.1.3 單片機音樂播放的方法及音樂示例 ; 588
        29.2 單片機音樂播放實例——電路圖 ; 591
        29.3 單片機音樂播放實例——程式設計 ; 592
            29.3.1 建立專案 ; 592
            29.3.2 程式設計 ; 593
        29.4 小結 ; 595
    第30 章 即時時鐘晶片應用 ; 596
        30.1 即時時鐘晶片DS1302概述 ; 596
            30.1.1 即時時鐘晶片DS1302概述 ; 596
            30.1.2 即時時鐘晶片DS1302命令字節 ; 597
            30.1.3 即時時鐘晶片DS1302資料格式 ; 597
            30.1.4 即時時鐘晶片DS1302資料傳輸方式 ; 599
        30.2 單片機讀寫實時時鐘晶片實例 ; 600
            30.2.1 電路圖 ; 600
            30.2.2 建立專案 ; 601
            30.2.3 主程序 ; 601
            30.2.4 重定函數 ; 604
            30.2.5 位元組讀取函數 ; 604
            30.2.6 位元組寫入函數 ; 604
            30.2.7 初始化函數 ; 604
            30.2.8 時鐘位元組寫入函數 ; 605
            30.2.9 RAM位元組寫入函數 ; 606
            30.2.10 時鐘寄存器內容顯示函數 ; 606
            30.2.11 多位元組突發方式讀取RAM函數 ; 607
            30.2.12 多位元組突發方式寫入RAM函數 ; 608
        30.3 小結 ; 608
    第31 章 靜態RAM記憶體應用 ; 609
        31.1 靜態RAM記憶體概述 ; 609
            31.1.1 RAM記憶體概述 ; 609
            31.1.2 靜態RAM晶片HM628128 ; 610
            31.1.3 靜態RAM晶片HM628128的讀寫 ; 610
        31.2 靜態RAM記憶體讀寫實例 ; 611
            31.2.1 系統原理 ; 612
            31.2.2 串列通信介面概述 ; 612
            31.2.3 單片機與RS-232C的介面 ; 617
            31.2.4 系統電路原理圖 ; 618
            31.2.5 建立專案 ; 620
            31.2.6 主程序設計 ; 620
            31.2.7 系統運行 ; 623
        31.3 小結 ; 624
    第32 章 道路交通燈控制系統 ; 625
        32.1 交通燈控制系統概述 ; 625
            32.1.1 道路交通燈概述 ; 625
            32.1.2 交通燈控制系統 ; 625
        32.2 交通燈控制系統原理圖 ; 626
        32.3 多工交通燈控制系統程式 ; 627
            32.3.1 建立專案 ; 627
            32.3.2 多工劃分及程式設計 ; 628
            32.3.3 串列通信函數 ; 634
            32.3.4 獲取命令函數 ; 637
        32.4 小結 ; 638
    第33 章 單匯流排溫度感測器DS18S20 ; 640
        33.1 單匯流排概述 ; 640
        33.2 單匯流排溫度感測器DS18S20 ; 641
            33.2.1 溫度感測器DS18S20概述 ; 641
            33.2.2 DS18S20的供電方式 ; 642
            33.2.3 DS18S20的資料操作 ; 642
        33.3 單片機讀寫溫度感測器DS18S20實例 ; 645
            33.3.1 電路圖 ; 645
            33.3.2 建立專案 ; 646
            33.3.3 DS18S20讀寫子函數 ; 646
            33.3.4 主函數 ; 652
            33.3.5 程式模擬 ; 654
        33.4 小結 ; 654
    第34 章 Microware串列匯流排EEPROM的應用 ; 656
        34.1 三線制Microware串列匯流排概述 ; 656
        34.2 Microware串列匯流排界面的EEPROM ; 657
            34.2.1 Microware串列匯流排界面EEPROM概述 ; 657
            34.2.2 Microware串列匯流排界面EEPROM的指令 ; 657
            34.2.3 Microware串列匯流排界面EEPROM的指令時序 ; 658
        34.3 51系列單片機讀寫三線制EEPROM實例 ; 660
            34.3.1 電路圖 ; 661
            34.3.2 建立專案 ; 661
            34.3.3 三線制Microware串列匯流排讀寫子函數 ; 662
            34.3.4 主程序 ; 664
            34.3.5 Microware串列匯流排模擬 ; 666
        34.4 小結 ; 667
    第35 章 單片機控制印表機實例 ; 668
        35.1 印表機概述 ; 668
            35.1.1 LASER PP40印表機概述 ; 668
            35.1.2 LASER PP40的文字模式 ; 669
            35.1.3 LASER PP40的圖形模式 ; 670
        35.2 51系列單片機控制印表機實例 ; 671
            35.2.1 電路圖 ; 671
            35.2.2 建立專案 ; 671
            35.2.3 程式設計 ; 672
        35.3 小結 ; 673
    第36 章 A/D轉換實例 ; 674
        36.1 A/D轉換概述 ; 674
            36.1.1 A/D轉換原理 ; 674
            36.1.2 A/D轉換器的技術參數 ; 676
            36.1.3 A/D轉換器的選擇原則 ; 677
        36.2 8通道A/D轉換器MAX197 ; 677
            36.2.1 MAX197的特性及引腳功能 ; 677
            36.2.2 MAX197的介面、控制字及時序 ; 679
        36.3 單片機讀寫A/D轉換器實例 ; 681
            36.3.1 電路圖 ; 681
            36.3.2 建立專案 ; 683
            36.3.3 程式設計 ; 683
            36.3.4 程式模擬 ; 686
        36.4 小結 ; 686
    第37 章 單片機讀寫智能IC卡 ; 687
        37.1 智能IC卡概述 ; 687
            37.1.1 智能IC卡分類 ; 687
            37.1.2 接觸式IC卡 ; 687
            37.1.3 非接觸式IC卡 ; 688
        37.2 智慧IC卡晶片 ; 688
            37.2.1 IC卡晶片AT45DB041簡介 ; 688
            37.2.2 AT45DB041D的記憶體空間及其讀寫 ; 689
            37.2.3 AT45DB041D的指令 ; 690
        37.3 單片機讀寫智慧IC卡實例 ; 691
            37.3.1 電路圖 ; 691
            37.3.2 SPI介面單片機AT89S8253簡介 ; 692
            37.3.3 建立專案 ; 693
            37.3.4 IC卡晶片AT45DB041D讀寫子函數 ; 694
            37.3.5 主程序 ; 696
        37.4 小結 ; 698
    第38 章 單片機智慧鋰電池充電管理 ; 700
        38.1 鋰電池及其充電概述 ; 700
            38.1.1 鋰電池概述 ; 700
            38.1.2 鋰電池充電概述 ; 701
        38.2 智慧充電管理晶片MAX1898 ; 701
            38.2.1 智慧充電管理晶片MAX1898概述 ; 701
            38.2.2 MAX1898充電工作原理 ; 702
        38.3 單片機智慧控制鋰電池充電實例 ; 703
            38.3.1 電路圖 ; 704
            38.3.2 智慧充電器的功能 ; 705
            38.3.3 建立專案 ; 705
            38.3.4 程式設計 ; 706
        38.4 小結 ; 707
    《51單片機開發與應用技術詳解》讀者交流區 ; 709
反侵權盜版聲明 ; 711

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *