標準80C51單片機基礎教程:原理篇

標準80C51單片機基礎教程:原理篇

8051系列單片機是國際上流行多年的代表機型,是國內高校教學和初學者入門首選的主流機型,也是在各種技術期刊和專業書籍中出現頻率最高的經典機型。本書以標準80C51為教學模型,並適當兼顧8051系列的共性和常用型號的特性。內容主要包括:硬體架構、ROM、RAM、指令系統、彙編程式基礎和彙編語言工具鏈、並行連線埠、定時器、中斷邏輯、復位邏輯、時鐘電路、電源電路等功能電路的結構和工作原理,以及片內程式存儲器編程原理。

作者簡介

李學海,副教授,先後攻讀過通信電源、電子工程和通信系統等專業。

從事教學20餘年,教過:物理、電路分析、數字電路、模擬電路、程控交換原理、電信組織與管理、電信概要、電信終端設備、微機原理、微機接口技術、80X86彙編程式設計、電子測量、8051單片機、PIC單片機、EM78單片機等課程。

曾經參加過幾次全國性的單片機套用開發大獎賽並均從中獲獎,如“第二屆力源杯單片機開發製作大獎賽”二等獎、“第三屆MOTORO[一A杯單片機套用設計大獎賽”優秀獎;還曾獲得過4項國家專利和發明成果展覽會金獎。

自1983年以來,在《電子技術套用》、《電子產品世界》、《單片機與嵌入式系統套用》、《電子世界》、《無線電》、《現代通信》等30餘種電子和通信類核心期刊、科普期刊上發表專業論文、譯文、科普文章和科研成果總計290餘篇,內容涉及電子、電信、電腦和電器等領域。

章節目錄

第0章 背景知識和學科簡介

0.1 學習單片機有什麼必要1

0.2 單片機令人著迷的理由是什麼3

0.3 學習單片機有什麼意義5

0.4 單片機到底是什麼7

0.5 單片機有什麼用處9

0.6 單片機有什麼特點10

0.7 51系列單片機的發展背景是什麼11

0.7.1 MCS-48系列單片機簡介11

0.7.2 MCS-51系列單片機簡介11

0.7.3 51系列單片機簡介14

0.7.4 51系列單片機常規命名規則16

0.7.5 51系列單片機燒寫方式比較17

0.7.6 標準8051單片機的性能特點17

0.8 學習51系列單片機有什麼優勢18

0.8.1 技術方面的優勢18

0.8.2 資料方面的優勢19

0.8.3 硬體方面的優勢19

0.8.4 軟體方面的優勢20

0.8.5 軟體工具鏈方面的優勢20

0.8.6 硬體工具鏈方面的優勢21

0.9 專業名詞和技術術語21

0.9.1 硬體方面的專業術語22

0.9.2 軟體方面的專業術語25

0.10 本書的寫作思路和寫作目標26

思考與練習28

第1章 標準80C51硬體系統概況

1.1 晶片內部總體結構29

1.1.1 核心區單元電路及其功能32

1.1.2 中央處理單元32

1.1.3 功能部件及其功能36

1.1.4 外圍模組及其功能36

1.2 晶片外部封裝和引腳37

1.2.1 封裝形式37

1.2.2 引腳功能39

1.2.3 引腳功能簡化40

1.3 存儲器組織方式42

1.4 程式存儲器(ROM)43

1.5 數據存儲器(RAM)45

1.5.1 外部數據存儲器空間45

1.5.2 內部數據存儲器空間46

1.5.3 堆疊48

1.5.3.1 堆疊的概念48

1.5.3.2 堆疊的用途48

1.5.3.3 堆疊的結構48

1.5.3.4 堆疊的操作49

1.5.3.5 注意事項50

1.6 特殊功能暫存器(SFR)空間50

1.6.1 SFR的布局和配置51

1.6.2 SFR的功能53

1.7 布爾處理器(位處理器)54

思考與練習55

第2章 80C51指令系統分類解析

2.1 80C51指令系統概述57

2.1.1 指令的描述方法58

2.1.2 指令的執行時序59

2.1.3 指令的編碼格式61

2.2 定址方式62

2.2.1 與位元組數據相關的定址方式63

2.2.1.1 立即定址63

2.2.1.2 直接定址63

2.2.1.3 隱含定址64

2.2.1.4 暫存器定址64

2.2.1.5 間接定址65

2.2.1.6 變址定址66

2.2.2 與跳轉地址有關的定址方式66

2.2.2.1 相對跳轉定址67

2.2.2.2 絕對跳轉定址67

2.2.2.3 變址跳轉定址68

2.2.3 與位數據有關的定址方式68

2.2.3.1 隱含位定址69

2.2.3.2 直接位定址69

2.2.4 定址方式與定址空間的對應關係69

2.3 80C51指令的分類方法70

2.3.1 按實現功能分類71

2.3.2 按編碼位元組數分類71

2.3.3 按執行周期數分類71

2.3.4 按定址方式分類71

2.3.5 按攜帶運算元分類71

2.3.6 按影響標誌分類72

2.3.7 按使用頻度分類72

2.4 80C51指令功能的分類解析73

2.4.1 數據傳送類指令73

2.4.2 算術運算類指令78

2.4.3 邏輯運算類指令83

2.4.4 程式跳轉類指令86

2.4.5 位操作類指令90

2.5 80C51指令系統的內在規律94

2.6 80C51指令的套用技巧95

2.6.1 位置1操作技巧95

2.6.2 位清0操作技巧95

2.6.3 位取反操作技巧96

2.6.4 位測試操作技巧97

2.7 “CPU—SFR—模組”的相互關係98

思考與練習99

第3章 彙編程式設計基礎和彙編語言工具鏈

3.1 概述101

3.1.1 背景知識101

3.1.2 彙編語言的語句格式103

3.1.3 程式流程和整體結構107

3.1.4 源程式檔案的書寫格式107

3.2 常用偽指令110

3.2.1 符號名定義類偽指令110

3.2.2 存儲器空間初始化類偽指令113

3.2.3 彙編狀態控制類偽指令114

3.2.4 其他115

3.3 4種基本程式結構117

3.3.1 順序程式結構117

【例程3.1】 位元組拆分117

3.3.2 分支程式結構118

【例程3.2】 數值比較118

3.3.3 循環程式結構120

【例程3.3】 RAM區間填充120

3.3.4 子程式結構121

【例程3.4】 挑選極值122

3.4 5種個性化實用程式的設計方法123

3.4.1 初始化程式段設計124

3.4.2 延時程式設計124

【例程3.5】 軟體延時125

3.4.3 查表程式設計126

【例程3.6】 階乘函式127

3.4.4 散轉程式設計129

【例程3.7】 跳轉指令表法130

【例程3.8】 地址偏移量表法131

3.4.5 布爾程式設計132

【例程3.9】 組合邏輯軟體模擬133

3.5 彙編語言工具鏈134

3.5.1 彙編語言工具鏈134

3.5.2 彙編語言工具鏈套用舉例136

【例程3.10】 8位二進制計時器137

3.6 輸出檔案(LST和HEX)的解讀141

3.6.1 解讀列表檔案(.LST)141

3.6.2 解讀最終目標檔案(.HEX)143

思考與練習144

第4章 通用並行輸入/輸出連線埠及其連線埠引腳

4.1 概述146

4.2 並行連線埠的內部結構147

4.3 並行連線埠的工作原理148

4.3.1 從連線埠引腳輸出數據148

4.3.2 從連線埠引腳輸入數據149

4.3.3 讀取連線埠數據鎖存器內容149

4.4 並行連線埠的操作指令149

4.5 各個並行連線埠的個性差異150

4.5.1 P0連線埠150

4.5.2 P1連線埠151

4.5.3 P2連線埠151

4.5.4 P3連線埠152

4.6 並行連線埠特性小結153

4.7 並行連線埠特性的套用技巧154

4.7.1 漏極開路結構的妙用154

4.7.2 弱上拉功能的妙用156

4.7.3 非對稱輸出級的用法157

思考與練習158

第5章 定時器/計數器

5.1 定時器/計數器模組的基本用途159

5.2 80C51中定時器/計數器T0和T1的特性160

5.3 定時器/計數器T0和T1相關的暫存器160

5.4 T0和T1模組的電路結構和工作原理162

5.4.1 循環累加計數暫存器163

5.4.2 脈源選擇電路164

5.4.3 脈源控制電路164

5.5 定時器/計數器的4種工作方式165

5.5.1 方式1(16位計數暫存器)166

5.5.2 方式0(13位計數暫存器)166

5.5.3 方式2(自動重裝載8位計數暫存器)167

5.5.4 方式3(2×8位計數暫存器)168

思考與練習169

第6章 中斷概念和中斷邏輯

6.1 中斷的基本概念171

6.2 80C51的中斷源和中斷邏輯173

6.2.1 中斷源173

6.2.2 中斷邏輯173

6.2.3 中斷優先權174

6.3 中斷相關的暫存器175

6.4 中斷處理177

6.4.1 中斷功能的編程方法177

6.4.2 中斷回響的延遲時間180

6.4.3 需要注意的一些問題180

思考與練習181

第7章 串列通信原理和串列通信接口

7.1 串列通信的基本概念183

7.1.1 串列通信的兩種基本方式184

7.1.1.1 異步傳送方式184

7.1.1.2 同步傳送方式185

7.1.2 串列通信中數據傳送方向185

7.1.2.1 單工傳送方式185

7.1.2.2 半雙工傳送方式186

7.1.2.3 全雙工傳送方式186

7.1.3 串列通信中的控制方式186

7.1.3.1 主控器方式186

7.1.3.2 被控器方式186

7.1.4 串列通信中的碼型、編碼方式和幀結構187

7.1.5 串列通信中的檢錯和糾錯方式188

7.1.5.1 奇偶校驗188

7.1.5.2 累加和校驗188

7.1.5.3 循環冗餘校驗CRC188

7.1.5.4 通信中的糾錯188

7.1.6 串列通信組網方式190

7.1.6.1 雙機通信方式190

7.1.6.2 多機通信方式191

7.1.6.3 多主機通信方式191

7.1.7 串列通信接口電路和參數192

7.1.8 串列通信的傳輸速率194

7.1.8.1 信息傳輸速率R194

7.1.8.2 符號傳輸速率N195

7.1.9 串列通信協定195

7.2 80C51中的通用同步/異步收/發器USART模組196

7.2.1 USART模組相關的暫存器198

7.2.2 USART模組的電路結構200

7.2.3 波特率發生器201

7.2.4 USART模組的工作原理204

7.2.4.1 方式1——異步/雙工/10位幀結構——雙機通信204

7.2.4.2 方式2和3——異步/雙工/11位幀結構——多機通信205

7.2.4.3 方式0——同步/主控/半雙工/8位數據——移位暫存器206

7.2.5 多機通信的實現原理208

7.2.5.1 多機通信的接線方式208

7.2.5.2 多機通信的實現方法209

7.2.5.3 多機通信的操作步驟210

7.2.5.4 多機通信的通信協定211

7.2.6 UART接口的擴充方法和設計技巧211

7.2.6.1 選擇具有多個UART模組的單片機211

7.2.6.2 採用軟體虛擬技術211

7.2.6.3 選用專用晶片212

思考與練習212

第8章 並行匯流排、並行匯流排接口和並行匯流排擴展

8.1 並行匯流排的概念214

8.1.1 數據匯流排(DB)215

8.1.2 地址匯流排(AB)215

8.1.3 控制匯流排(CB)215

8.2 並行匯流排接口216

8.3 並行匯流排擴展217

8.3.1 擴展程式存儲器ROM217

8.3.1.1 不提倡外擴ROM的理由217

8.3.1.2 掌握擴展技術的必要性218

8.3.1.3 外擴ROM的接線圖218

8.3.1.4 外擴ROM的信號時序219

8.3.1.5 外擴ROM的器件類型219

8.3.2 擴展數據存儲器RAM221

8.3.2.1 外擴RAM的器件類型221

8.3.2.2 外擴RAM的接線圖222

8.3.2.3 外擴RAM的信號時序222

8.3.3 擴展並行I/O連線埠223

8.3.3.1 利用並行匯流排擴展法實現224

8.3.3.2 利用通用器件擴展225

8.3.3.3 利用專用器件擴展228

8.3.4 補充幾點說明228

思考與練習228

第9章 系統復位源設計和擴充技術

9.1 單片機的工作狀態及其狀態遷移230

9.2 復位源、復位操作和復位狀態231

9.2.1 什麼叫復位源231

9.2.2 復位操作有哪些具體內容232

9.2.3 復位狀態有哪些具體表現232

9.2.4 幾點補充說明232

9.3 上電復位(POR)和復位延時233

9.3.1 上電復位時序233

9.3.2 3種上電復位電路234

9.3.3 上電復位失敗的2種案例分析235

9.4 人工復位(MRST)和復位電路237

9.4.1 3種人工復位電路237

9.4.2 人工復位時序237

9.5 欠壓復位(LVR)、欠壓檢測(LVD)和欠壓中斷(LVI)238

9.5.1 什麼叫電源電壓跌落238

9.5.2 電源跌落會帶來哪些具體危害239

9.5.3 欠壓復位電路的分立件搭建方法239

9.5.4 欠壓檢測門限的選定方法240

9.5.5 欠壓中斷(LVI)功能的設計方法242

9.5.6 幾點補充說明243

9.6 80C51外擴電壓檢測專用晶片244

9.6.1 外接電壓檢測器HT70xx244

9.6.2 外接帶延時的電壓檢測器MAX810245

9.6.3 外接帶人工復位的電壓檢測器MAX812245

9.6.4 外接帶電源故障預警的電壓檢測器MAX707/708246

9.7 看門狗復位(WDR)和看門狗定時器(WDT)248

9.7.1 配備WDT有何必要248

9.7.2 程式失控的原因、後果和回復249

9.7.2.1 實際單片機系統中程式失控的原因249

9.7.2.2 實際單片機系統中程式失控的後果249

9.7.2.3 程式失控後的回覆措施249

9.7.2.4 失控回復之後的後續處理250

9.7.3 WDT的電路結構和工作原理250

9.7.4 幾點補充說明251

9.8 80C51如何增設看門狗功能252

9.8.1 內設軟體看門狗252

9.8.1.1 軟體看門狗的設計思想252

9.8.1.2 軟體看門狗的編程方法252

9.8.1.3 軟體看門狗的局限性253

9.8.2 外擴看門狗專用晶片DS1232254

9.8.3 外擴看門狗專用晶片MAX813255

9.9 3種非常規復位擴展方式256

9.9.1 什麼叫軟體陷阱257

9.9.2 什麼叫軟體復位(SWR)257

9.9.3 什麼叫軟硬體復位(SHR)259

9.9.4 什麼叫非法地址復位(IAR)260

9.10 復位方式小結261

9.11 復位標誌位的設定和套用262

9.11.1 復位標誌位的設定方法262

9.11.2 復位標誌位的套用方法265

思考與練習266

第10章 系統時鐘源和電源設計及節電技術

10.1 系統時鐘源設計267

10.1.1 自建時鐘源267

10.1.2 外引時鐘源268

10.1.3 時鐘振盪器原理分析269

10.1.4 時鐘電路的設計考慮273

10.2 系統電源設計274

10.2.1 電源的獲取方式和統籌規劃274

10.2.2 穩壓電源的電路設計276

10.2.3 晶片電源引腳特點和抗干擾措施280

10.3 節電技術(睡眠與喚醒)281

10.3.1 節電技術背景和概念281

10.3.1.1 背景知識281

10.3.1.2 支持硬體282

10.3.1.3 節電模式相關的暫存器283

10.3.2 停機模式(PD)284

10.3.2.1 停機模式的進入284

10.3.2.2 停機模式的退出(3種方式)285

10.3.3 待機模式(IDL)286

10.3.3.1 待機模式的進入286

10.3.3.2 待機模式的退出(3種方式)287

10.3.4 節電模式下的引腳降耗安排288

思考與練習289

第11章 片載程式存儲器編程技術和保護方法

11.1 傳統的並行編程方法291

11.1.1 編程概念和編程工具291

11.1.2 晶片內部的編程邏輯292

11.1.3 80C51系列的程式保護機制293

11.1.3.1 封鎖程式代碼的鎖定位(LB3~LB1)294

11.1.3.2 加密程式代碼的密碼陣列295

11.1.4 晶片標記位元組296

11.1.5 並行編程的實現方法298

11.2 新興的串列編程方法300

11.2.1 利用SPI接口的串列編程方法300

11.2.2 利用UART接口的串列編程方法303

11.2.3 SPI和UART串列編程的對比305

11.2.4 ISP和IAP編程技術簡介306

思考與練習307

附錄A ASCII碼錶308

附錄B 英文指令一覽表309

附錄C 宏彙編器的系統保留字313

附錄D 電壓檢測器HT70xx系列專用晶片

D.1 封裝形式和引腳功能315

D.2 內部結構和工作原理315

D.3 選型參考316

D.4 電氣參數317

D.5 套用舉例319

附錄E 帶延時復位功能的電源監控器MAX809/810

E.1 概述321

E.2 內部結構和引腳功能321

E.3 功能說明322

E.4 特性參數和時序圖323

E.5 套用舉例325

附錄F 帶延時和人工復位的電源監控器MAX811/812

F.1 概述326

F.2 內部結構和引腳功能326

F.3 功能說明327

F.4 特性參數和時序圖328

F.5 套用舉例330

附錄G 帶延時、人工復位及電源故障檢測的電壓監控器MAX707/708

G.1 概述331

G.2 內部結構和引腳功能331

G.3 功能說明332

G.4 電氣參數和時序圖333

G.5 套用舉例335

附錄H 多功能系統監控器DS1232

H.1 概述336

H.2 內部結構和引腳功能336

H.3 工作原理338

H.4 電氣參數和時序圖338

H.5 套用舉例339

附錄I 多功能監控器MAX705/706/813

I.1 概述340

I.2 內部結構和引腳功能340

I.3 功能說明342

I.4 電氣參數和時序圖344

I.5 典型套用實例346

參考文獻347

相關詞條

熱門詞條

聯絡我們