本書以飛思卡爾全國大學生智能汽車競賽組委會推薦芯片MC9S12XS128為藍本,深入講解CPU及片內外設工作原理,介紹單片機嵌入式應用的開發(fā)方法。本書首先簡要介紹了單片機的基本概念,從門電路到單片機的硬件演進過程;然后按CPU、存儲器、I/O口、時鐘和復位的順序,講述MCU內部結構和工作原理,對中斷系統(tǒng)、串行口、定時計數模塊和A/D轉換模塊進行了詳細分析,介紹了單片機嵌入式應用的開發(fā)方法,并給出相應的范例。
本書系統(tǒng)介紹了Freescale (飛思卡爾) 公司的S12XS 微控制器( MCU) 的硬件結構和工作原理。 以MC9S12XS128 為例詳細分析了各個片內外設功能模塊的硬件結構、工作原理和使用方法。 同時介紹了MCU 最小系統(tǒng)。 程序設計、下載和動態(tài)調試方法。 單片機嵌入式應用系統(tǒng)的設計方法。單片機的學習不僅要學習硬件。 還要學習軟件。 根據我們多年的教學實踐。 學生在學習單片機時。 由于前期電類基礎不盡相同。 如何能夠深入理解單片機的工作原理。 并盡快上手操作。 實現針對硬件編程、調試。 一直是單片機教學和學習過程中的難點。 為此。 本書在章節(jié)的編排和內容的選取上。 盡量做到零基礎起步。 采用從原理到實踐。 最后到系統(tǒng)設計的方法。 使得電類基礎薄弱的讀者也能盡快掌握單片機的工作原理。
本書在硬件上講述單片機內部結構和工作原理時。 采用CPU、存儲器、I/ O 口、時鐘和復位的順序。 讀者在了解單片機內部結構之后。 馬上就能夠組成單片機最小系統(tǒng)。 并上手操作。只要有一點計算機基礎的讀者。 就能夠通過范例操作。 看到I/ O 控制發(fā)光二極管的亮滅。激發(fā)讀者的學習興趣。 達到快速入門的目的。本書是在第1 版的基礎上。 根據讀者和任課教師的反饋意見進行了章節(jié)調整和部分內容的修改。 具體如下: 由于目前使用C 語言編程比匯編語言編程更加簡單易學。 而且原書中給出的范例也是C 語言編程。 所以將第4 章指令系統(tǒng)刪掉。 考慮到篇幅所限。 刪掉了第11 章飛思卡爾智能車設計范例。 這部分內容在相關網站上有許多高手的經驗介紹和交流文章。 各章都增加了思考題與習題。 便于讀者對所學章節(jié)的內容進行復習和總結。第1 章簡要講述單片機的概念。 單片機的廣泛應用。 單片機的發(fā)展歷程。 從門電路到單片機的硬件演進過程。 并對常用的數制轉換進行了介紹。 對飛思卡爾16 位單片機的特點及命名規(guī)則也進行了介紹。第2 章主要介紹S12XS 單片機的內部模塊及引腳功能。 以MC9S12XS128 為例。 從硬件上詳細分析CPU 取指、譯碼、操作以及標志設定和堆棧使用過程。 存儲器結構及地址映射管理過程的地址管理、I/ O 口管理方法。 通過內部鎖相環(huán)獲得內部總線時鐘的相關寄存器設置方法。 介紹了復位的工作原理。第3 章講述如何用最簡單的硬件和軟件使單片機運行起來。 通過實例告訴你。 其實單片機入門并不難。第4 章講述中斷的概念、MC9S12XS128 中斷源、中斷響應和執(zhí)行過程、中斷優(yōu)先級和中斷嵌套。 通過外部中斷范例。 理解中斷響應是如何實現的。第5 章從總體上介紹串行通信的基本知識。 包括并行通信與串行通信。 同步串行通信和異步串行通信及數據格式。 常用異步串行通信標準。 介紹S12XS 同步串行模塊SPI 和異步串行模塊SCI 的工作原理及相關寄存器的功能和設置方法。第6 章講述定時中斷PIT、定時器TIM 和PWM 等內容。 每部分內容都有相應的范例。第7 章介紹A ̄D 轉換模塊中包含的逐次比較式A ̄D 轉換器的工作原理。 MC9S12XS128的A ̄D 轉換模塊結構和工作原理。 按功能分類介紹了相關寄存器的設置方法。 通過范例 MC9S12 單片機原理及嵌入式應用開發(fā)技術(第2 版)Ⅳ 理解相關寄存器的設置和使用方法。第8 章講述了MC9S12XS128 單片機嵌入式應用的開發(fā)方法。 介紹μC/ OSⅡ的概念及其移植和任務編寫方法。 通過范例介紹單片機嵌入式應用系統(tǒng)的開發(fā)流程。第9 章介紹了單片機測控系統(tǒng)的設計原則。 闡述了鍵盤、顯示接口擴展方法。本書原理的講述力求簡潔透徹。 范例的選擇具有工程背景。 便于讀者移植使用。 本書對寄存器是按功能分類介紹的。
本書由陳萬忠擔任主編。 李洪霞、趙靜榮擔任副主編。 參加編寫的人員還有: 顧海軍、馬海濤、洪偉、劉聰、康冰、逄鵬、封淑玲。 感謝研究生李勇強、姜瑞、孫保峰、高韌杰、崔冰一、雷俊、張勇和范越宇在調試程序和繪制插圖方面的貢獻。 本書編寫過程中參考了許多單片機專家的著作。 謹向作者致以崇高的敬意。感謝清華大學飛思卡爾中心的支持和幫助。本書為讀者提供了一個單片機學習的快速入門方法。 作者深感自己知識的局限。 深入的內容未作討論。 書中難免會有疏漏和不妥之處。 誠請讀者指正。
作 者
前 言
第1 章 單片機概述 1
1 1 單片機簡介 1
1. 2 單片機的廣泛應用 1
1. 3 單片機的發(fā)展歷史 3
1. 4 從門電路到單片機 4
1. 4. 1 半導體晶體管的開關特性 4
1. 4. 2 組合邏輯電路 4
1. 4. 3 時序邏輯電路 9
1. 4. 4 單片機的硬件構成 10
1. 5 數制轉換 11
1. 6 飛思卡爾16 位單片機 13
1. 6. 1 Freescale 16 位單片機命名參考
規(guī)則 13
1. 6. 2 MC9S12X 系列單片機 14
思考題與習題 15
第2 章 S12XS 單片機的內部結構
分析 16
2. 1 MC9S12XS 單片機的性能 16
2. 1. 1 MC9S12XS 內部模塊 16
2. 1. 2 MC9S12XS 單片機的引腳及
功能 18
2. 2 CPU 的構成 21
2. 2. 1 算術邏輯單元(ALU) 21
2. 2. 2 控制單元 21
2. 2. 3 核心寄存器組 22
2. 3 存儲器 24
2. 3. 1 基本存儲空間 24
2. 3. 2 擴展地址空間 24
2. 3. 3 全局存儲器映射 25
2. 3. 4 MC9S12XS128 全局存儲器
映射 27
2. 4 并行I/ O 口 29
2. 4. 1 A、B、E 和K 口 29
2. 4. 2 T、S、M、P、H 和J 口 30
2. 4. 3 AD 口 32
2. 5 時鐘與復位模塊 32
2. 5. 1 時鐘模塊 32
2. 5. 2 鎖相環(huán)應用范例 36
2. 5. 3 復位 38
思考題與習題 39
第3 章 單片機最小系統(tǒng)與軟件運行
環(huán)境 40
3. 1 硬件電路設計 40
3. 1. 1 單片機電源電路設計 40
3. 1. 2 S12 單片機時鐘電路設計 41
3. 1. 3 復位電路設計 42
3. 1. 4 BDM 接口電路設計 42
3. 2 Code Warrior V5. 1 軟件使用指南 43
3. 2. 1 軟件安裝 43
3. 2. 2 關于BDM 驅動 44
3. 2. 3 創(chuàng)建一個新的工程 45
3. 2. 4 編譯與調試 48
3. 3 并口輸出范例 50
3. 3. 1 編寫簡單的應用程序 51
3. 3. 2 LED 閃動程序 52
3. 3. 3 復位自檢程序 52
3. 3. 4 流水燈程序 54
思考題與習題 55
第4 章 中斷系統(tǒng) 56
4. 1 中斷的概念 56
4. 2 中斷源 56
4. 3 S12XS 單片機的中斷響應和中斷
返回 59
4. 4 優(yōu)先權排隊 60
4. 5 中斷嵌套 60
4. 6 中斷服務子程序設計 61
4. 6. 1 IRQ 使用范例 62
4. 6. 2 XIRQ 使用范例 64
思考題與習題 66
第5 章 串行口 67
5. 1 串行通信概述 67
5. 1. 1 串行通信的兩種基本方式 67
5. 1. 2 發(fā)送時鐘和接收時鐘 68
5. 1. 3 串行通信標準 69
MC9S12 單片機原理及嵌入式應用開發(fā)技術(第2 版)
Ⅵ
5. 2 同步外設接口SPI 模塊 71
5. 2. 1 SPI 模塊概述 71
5. 2. 2 SPI 寄存器 72
5. 2. 3 SPI 應用范例 76
5. 3 SCI 模塊 79
5. 3. 1 SCI 模塊的結構及功能 79
5. 3. 2 SCI 模塊寄存器 80
5. 3. 3 SCI 應用范例 84
思考題與習題 97
第6 章 定時器相關模塊 98
6. 1 定時器/計數器概述 98
6. 2 TIM 模塊 98
6. 2. 1 TIM 模塊的結構及功能 99
6. 2. 2 TIM 模塊寄存器 100
6. 2. 3 TIM 模塊應用范例 106
6. 3 PIT 模塊 112
6. 3. 1 PIT 模塊的結構及功能 113
6. 3. 2 PIT 模塊寄存器 114
6. 3. 3 PIT 模塊應用范例 117
6. 4 PWM 模塊 122
6. 4. 1 PWM 功能 123
6. 4. 2 PWM 模塊寄存器 123
6. 4. 3 PWM 模塊應用范例 127
思考題與習題 132
第7 章 A ̄D 轉換模塊 133
7. 1 A ̄D 轉換模塊概述 133
7. 1. 1 A ̄D 轉換原理 133
7. 1. 2 S12XS 系列MCU 內置A ̄D 轉換
模塊 134
7. 2 A ̄D 轉換寄存器 135
7. 2. 1 A ̄D 輸入使能寄存器 135
7. 2. 2 A ̄D 控制寄存器 135
7. 2. 3 A ̄D 比較寄存器 139
7. 2. 4 A ̄D 轉換狀態(tài)寄存器 140
7. 2. 5 A ̄D 結果寄存器 140
7. 3 A ̄D 轉換應用范例 141
7. 3. 1 應用注意事項 141
7. 3. 2 應用范例 142
思考題與習題 143
第8 章 嵌入式實時操作系統(tǒng)使用
范例 144
8. 1 嵌入式實時操作系統(tǒng) 144
8. 1. 1 嵌入式實時操作系統(tǒng)簡介 144
8. 1. 2 嵌入式實時操作系統(tǒng)
μC/ OS ̄II 144
8. 2 移植μC/ OS ̄II 146
8. 2. 1 重新定義內核的大小和功能 147
8. 2. 2 OS—CPU. H 150
8. 2. 3 編寫與硬件相關的代碼 152
8. 2. 4 中斷服務子程序OSTickISR() 152
8. 2. 5 任務堆棧初始化函數
OSTaskStkInit() 154
8. 2. 6 讓優(yōu)先級最高的就緒態(tài)任務開始
運行函數OSStartHighRdy() 155
8. 2. 7 任務級任務切換函數
OSCtxSw() 156
8. 2. 8 中斷級任務切換函數
OSIntCtxSw() 157
8. 2. 9 相關接口函數 159
8. 3 應用范例 159
8. 3. 1 相關聲明 160
8. 3. 2 主函數main() 161
8. 3. 3 系統(tǒng)任務函數AppStartTask() 162
8. 3. 4 用戶任務1 AppTask1() 164
8. 3. 5 用戶任務2 AppTask2() 165
8. 3. 6 用戶任務3 AppTask3() 166
8. 3. 7 鏈接與程序定位 168
第9 章 單片機測控系統(tǒng)設計 169
9. 1 微機測控系統(tǒng)的組成 169
9. 1. 1 微機測控系統(tǒng)硬件 169
9. 1. 2 微機測控系統(tǒng)軟件 170
9. 2 微機測控系統(tǒng)的常用器件 171
9. 2. 1 集成運算放大器及其應用 171
9. 2. 2 電壓比較器 174
9. 2. 3 隔離放大器 175
9. 2. 4 光耦合器 177
9. 2. 5 固態(tài)繼電器 179
9. 3 鍵盤、顯示接口 181
9. 3. 1 鍵盤 181
9. 3. 2 7 段LED 顯示 182
9. 3. 3 鍵盤顯示接口范例 183
思考題與習題 186
參考文獻 187