注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡計算機組織與體系結構單片機編程魔法師之高級裸編程思想

單片機編程魔法師之高級裸編程思想

單片機編程魔法師之高級裸編程思想

定 價:¥59.00

作 者: 余燦基 編
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 單片機與嵌入式 計算機與互聯(lián)網

購買這本書可以去


ISBN: 9787121239724 出版時間: 2014-09-01 包裝: 平裝
開本: 頁數(shù): 280 字數(shù):  

內容簡介

  本書以單片機裸環(huán)境為基礎,為編程者定義了一個微操作系統(tǒng)(MOS)的編程環(huán)境,并面向應用中不斷提高的需求對編程策略進行了深度剖析與研究,從而分離出數(shù)據(jù)驅動、并行多任務、面向對象等重要編程思想。這些思想既可獨立運用,又可有機結合成一個體系,是我們實踐中解決問題的致勝法寶。本書以實例為基礎,分6章對這一思想體系進行了闡述。闡述通常以提出問題開始,然后針對解決問題的現(xiàn)狀,從心理學的角度對問題展開討論,力求將容易遇見的問題一網打盡。本書通過一些列的優(yōu)化過程對思想要點進行完整描述,然后通過軟件仿真手段給讀者一個清晰的認識,并在最后進行歸納總結。

作者簡介

  余燦基,21ic“思想與裸編程”版塊版主(yyy71cj)。1993年畢業(yè)于南京理工大學計算機科學與工程系。畢業(yè)后長期從事計算機網絡應用、城域網數(shù)據(jù)庫管理軟件開發(fā)、電子自動化系統(tǒng)開發(fā)(上位機與下位機軟件開發(fā)及數(shù)字電路設計)與集成方面的工作,先后主持過樓宇對講系統(tǒng)的升級改造、電子警察管理系統(tǒng)設計、港口溫控系統(tǒng)設計、視頻監(jiān)控前端產品(如高速球等)開發(fā)、安全監(jiān)測系統(tǒng)設計(監(jiān)測傳感器與施工監(jiān)測及健康監(jiān)測系統(tǒng)集成)等項目?,F(xiàn)主要從事計算機應用、單片機應用、程序設計等方面的教學工作,并致力于技術開放共享事業(yè)。

圖書目錄

第1章 數(shù)據(jù)驅動程序 1
1.1 數(shù)據(jù)驅動程序 1
【導讀】本節(jié)通過對數(shù)據(jù)驅動程序的概念的界定(1.1.1節(jié))與數(shù)據(jù)驅動程序的簡介(1.1.2節(jié)),讓讀者初步了解數(shù)據(jù)驅動程序。
1.1.1 數(shù)據(jù)驅動程序的定義 1
1.1.2 數(shù)據(jù)驅動程序簡介 2
1.2 4支方波問題與測試模型 4
【導讀】本節(jié)對4支方波同步實現(xiàn)的問題(本書的問題1)進行了分析(1.2.1節(jié)),并建立一個數(shù)字測試模型(1.2.2節(jié))。本節(jié)只是數(shù)據(jù)驅動程序的引子,具體的數(shù)據(jù)驅動程序的編寫需要經歷一個漫長的演變才能完成(在后續(xù)章節(jié)中逐步實現(xiàn))。
1.2.1 問題1與分析 4
1.2.2 測試模型 5
1.3 一支峰谷等寬方波的實現(xiàn) 6
【導讀】為了獲得4支方波同步實現(xiàn)的解決方法,先簡化問題,從一支有規(guī)律的峰谷等寬的特例方波的實現(xiàn)入手來尋求答案。本節(jié)先對這支特例方波進行特性分析(1.3.1節(jié)),然后利用常規(guī)方法進行實現(xiàn)(1.3.2節(jié)),最后通過1.2.2節(jié)建立的仿真測試模型對這支特例波的實現(xiàn)效果進行驗證。
1.3.1 問題1-1與分析 6
1.3.2 實現(xiàn) 8
1.3.3 仿真 8
1.4 一支峰谷不等寬方波的實現(xiàn) 9
【導讀】本節(jié)對解決問題的任務進行了深入分析,將這支等寬的特例方波改成不等寬的普通方波,并對這支普通方波進行分析(1.4.1節(jié))與實現(xiàn)(1.4.2節(jié)),最后進行仿真驗證(1.4.3節(jié))。為了向終極目標邁進,本節(jié)對這次實現(xiàn)的代碼進行了亮點分析(1.4.4節(jié)),從而引導讀者從平凡的代碼中去尋求那些寶貴的關鍵點。
1.4.1 問題1-2與分析 9
1.4.2 實現(xiàn) 10
1.4.3 仿真 11
1.4.4 亮點分析 11
1.5 兩支波的實現(xiàn) 12
【導讀】通常,多支波的難度系數(shù)遠遠大于1支波的難度系數(shù),而多支波的波數(shù)對難度系數(shù)的影響不大。但是波數(shù)越小,復雜度就越小。所以本節(jié)從多支波集合中的2支波向終極問題挺進。本節(jié)在對問題進行分析(1.5.1節(jié))之后很輕松地就進行了實現(xiàn)(1.5.2節(jié)),似乎困難根本就沒存在過。接下來的仿真(1.5.3)繼續(xù)為研究的深入提供了信心,而亮點分析(1.5.4節(jié))則向讀者暗示:這里的代碼很平凡,但是里頭卻隱藏著什么。
1.5.1 問題1-3與分析 12
1.5.2 實現(xiàn) 14
1.5.3 仿真 15
1.5.4 亮點分析 15
1.6 4支波的實現(xiàn) 16
【導讀】本節(jié)通過對問題的分析(1.6.1節(jié))、實現(xiàn)(1.6.2節(jié))與仿真,呈現(xiàn)給讀者一個完整的解決方案,但這個方案只是一個普通的方案。至此讀者需要思考的是:這個普通的方案與數(shù)據(jù)驅動有著什么樣的關聯(lián)呢?
1.6.1 問題1-4與分析 16
1.6.2 實現(xiàn) 17
1.6.3 仿真 19
1.7 冗余代碼的一次簡化 20
【導讀】煩則思變,一個常規(guī)的方法往往是不完美的,但是我們所期待的完美卻又離不開一個不完美的開始。所以我們絕不能盲目拋棄一個不完美的方案,本節(jié)通過對這個常規(guī)方案的亮點分析(1.7.1節(jié)),然后進行合理簡化(1.7.2節(jié)),從而尋求一種科學的編程思路。
1.7.1 亮點分析 21
1.7.2 代碼簡化 22
1.8 冗余代碼的二次簡化 23
【導讀】隨著簡化進程的推進,數(shù)據(jù)驅動程序的思想已經躍然于代碼之上(1.8.2節(jié))。
1.8.1 亮點分析 24
1.8.2 代碼簡化 24
1.9 冗余代碼的三次簡化 26
【導讀】優(yōu)化后的代碼(1.8.2節(jié))帶給我們新的啟示(1.9.1節(jié)),數(shù)據(jù)可以從代碼中分離出去了,分離出去的數(shù)據(jù)稱為數(shù)據(jù)腳本(1.9.2節(jié)),我們可以用播放器來播放這種腳本(1.9.3節(jié)),到此我們將對編程耳目一新,也到了思考的時候了(1.9.4節(jié))。
1.9.1 數(shù)碼分離的啟示 26
1.9.2 數(shù)據(jù)腳本 27
1.9.3 數(shù)據(jù)驅動的實現(xiàn) 28
1.9.4 回顧與思考 29
1.10 4支波數(shù)據(jù)驅動程序應用 29
【導讀】我們獲得了一種新的思想,現(xiàn)在可以小試牛刀了,將4支方波的形式轉換一種面目(1.10.1節(jié)),這看似迥然不同的問題,是不是會讓我們有顧慮?其實不必擔心,我們輕松就能解決這種問題(1.10.2節(jié))。
1.10.1 問題2與分析 30
1.10.2 實現(xiàn) 32
1.10.3 仿真 33
1.10.4 回顧與思考 33
1.11 總結 34
【導讀】繼續(xù)將問題異樣化(1.11.1節(jié)),更復雜的現(xiàn)象依然遵循一個簡單的道理。至此我們將見識數(shù)據(jù)驅動的強大力量,所以我們得讓這種程序衣冠楚楚地出現(xiàn)在我們的面前(1.11.2節(jié)至1.11.4節(jié)),我們得從方法論上掌握這種思想(1.11.5節(jié))。
1.11.1 問題3與分析 34
1.11.2 規(guī)范腳本 35
1.11.3 規(guī)范播放器 36
1.11.4 規(guī)范實現(xiàn) 37
1.11.5 回顧與思考 38
第2章 并行多任務程序 42
2.1 初識并行多任務程序 42
【導讀】什么是并行多任務程序(2.1.1節(jié))?單片機能不能勝任并行處理工作(2.1.2節(jié))?本節(jié)將給出答案。
2.1.1 釋義 42
2.1.2 單片機能力的評估 43
2.2 并行三任務問題與測試平臺 45
【導讀】為了見識并行多任務程序的廬山真面目,本節(jié)同樣利用典型問題(2.2.1節(jié))作為開篇,并建立了一個新的測試模型(2.2.2節(jié))。
2.2.1 問題4與分析 45
2.2.2 測試模型 46
2.3 并行三任務問題的順序編程 47
【導讀】我們是不是習慣于使用常規(guī)思維來思考問題?我們可以用這種方法來做做看(2.3.2),然后仔細審視一下實現(xiàn)的效果(2.3.3節(jié)、2.3.5節(jié)、2.3.6節(jié)),是不是看似正確,又存在問題(2.3.7節(jié))?這就是常常出現(xiàn)的所謂的不穩(wěn)定現(xiàn)象(2.3.8節(jié))。
2.3.1 問題與分析 47
2.3.2 實現(xiàn) 48
2.3.3 仿真一 50
2.3.4 測試分析 50
2.3.5 仿真二 52
2.3.6 仿真三 53
2.3.7 仿真四 53
2.3.8 回顧與思考 54
2.4 運行時序 55
【導讀】問題的根源是什么?是我們需要掌握單片機運行時的時序真相(2.4.1節(jié)),要真正了解一個中央處理單元應該如何運行多任務(2.4.2節(jié)、2.4.3節(jié))。
2.4.1 時序分析 55
2.4.2 并行多任務 56
2.4.3 并行多任務的可行性 57
2.5 我們的微操作系統(tǒng) 59
【導讀】裸編程時,我們常常習慣視環(huán)境的存在,這也正是裸編程的典型特征,但是新的需求讓這種思想窘態(tài)百出,我們需要自己的微操作系統(tǒng)(MOS,2.5.3節(jié)),需要在MOS中編寫全新理念的程序。
2.5.1 操作系統(tǒng)與并行多任務 59
2.5.2 單片機的優(yōu)劣分析 60
2.5.3 微操作系統(tǒng) 62
2.6 任務的生與死 63
【導讀】在MOS中編程,我們必須要遵守一定的約束,把任務看作一個個的生命體,并讓它們生活在MOS中,而我們則掌握著它們的生殺大權(2.6.4節(jié)、2.6.5節(jié))。
2.6.1 問題5與分析 63
2.6.2 問題5的實現(xiàn) 63
2.6.3 暗點分析 64
2.6.4 任務的生死狀態(tài) 65
2.6.5 “生”與“死”的實現(xiàn) 65
2.6.6 回顧與思考 66
2.7 一個任務的線程 67
【導讀】簡化問題,各個擊破,是解決問題的絕佳方法,所以本節(jié)先實現(xiàn)一個任務(2.7.2節(jié)),然后探究其中的奧秘(2.7.3節(jié))。
2.7.1 問題與分析 67
2.7.2 實現(xiàn) 69
2.7.3 回顧與思考 71
2.8 并行多任務線程 73
【導讀】為了實現(xiàn)并行多任務,我們先引入一個與硬件關的純代碼問題(2.8.1節(jié)),這樣便于對代碼規(guī)律進行研究(2.8.3節(jié))。
2.8.1 問題與分析 73
2.8.2 實現(xiàn) 74
2.8.3 回顧與思考 76
2.9 并行多任務多線程的數(shù)據(jù)與代碼分離 78
【導讀】數(shù)據(jù)與代碼分離的編程策略再次登場(2.9.1節(jié)),由此可見這種策略是一種必不可少的思想基礎(2.9.3節(jié))。
2.9.1 問題與分析 78
2.9.2 實現(xiàn) 81
2.9.3 回顧與思考 84
2.10 任務的生命 86
【導讀】也許我們認為生死與生命是一個東西,但是嚴格來說,二者并不是一個東西。本節(jié)將揭示二者的差別所在。
2.10.1 問題與分析 86
2.10.2 實現(xiàn) 87
2.10.3 回顧與思考 90
2.11 任務的復活 92
【導讀】本節(jié)將賦予裸編程者以造物主的思想,不但可以決定一個任務的生死,還可以任意地讓某個任務重生。
第3章 定時器與延時器 94
3.1 并行多任務多線程的等待方案 94
【導讀】等待(3.1.1節(jié))是讓順序編程思想崩塌的火山,如果沒有這種耗時大戶,順序編程思想仍能茍延殘喘。所以我們必須要接觸這兩個傳奇英雄(3.1.2節(jié))。
3.1.1 概述 94
3.1.2 軟件定時器與軟件延時器 95
3.2 一個軟件定時器 96
【導讀】學會使用軟件定時器,能讓我們不再為有限的硬件定時器而苦惱,所以需要先實現(xiàn)(3.2.4節(jié))一個軟件定時器(3.2.1節(jié)),以便獲得定時器的新概念。
3.2.1 問題6與分析 96
3.2.2 測試模型 97
3.2.3 問題與分析 97
3.2.4 實現(xiàn) 99
3.2.5 仿真 100
3.3 8個軟件定時器 100
【導讀】我們知道,1與多迥然不同,但是2與多則差異不大。所以本節(jié)我們直接從1個軟件定時器的實現(xiàn)變成8個軟件定時器(3.3.1節(jié))的實現(xiàn)(3.3.2節(jié))。
3.3.1 問題與分析 100
3.3.2 實現(xiàn) 102
3.3.3 仿真 107
3.3.4 回顧與思考 107
3.4 軟件定時器代碼優(yōu)化 109
【導讀】代碼優(yōu)化是編程者一項重要的工作內容,而不論這種優(yōu)化能進行到什么程度。軟件定時器的代碼該如何優(yōu)化呢(3.4.1節(jié))?請看這里的實現(xiàn)(3.4.2節(jié))。
3.4.1 問題與分析 109
3.4.2 實現(xiàn) 110
3.4.3 回顧與思考 114
3.5 時基中斷的時序與主程序的關系 114
【導讀】盡管軟件定時器解決了單片機定時器資源的不足,但是軟件定時器到底能有多少呢?本節(jié)將回答這個問題。
3.5.1 時序分析 114
3.5.2 回顧與思考 116
3.6 一個延時器 116
【導讀】雖然軟件定時器使用起來已經很方便了,但它總是在擠兌其他任務,它具有很高的優(yōu)先級,而有時我們并不希望耗時短的任務進行過長的等待,所以我們需要一種優(yōu)先級低的延時工具――延時器。
3.6.1 問題7與分析 116
3.6.2 實現(xiàn) 118
3.6.3 回顧與思考 119
3.7 8個延時器 120
【導讀】與軟件定時器一樣,延時器也會多個并存而呈現(xiàn)為并行多任務形態(tài),這里引入8個延時器并發(fā)運行的問題(3.7.1節(jié))并提出解決方案(3.7.2節(jié))。
3.7.1 問題與分析 120
3.7.2 實現(xiàn) 120
3.7.3 回顧與思考 126
3.8 延時器的優(yōu)化 126
【導讀】延時器的實現(xiàn)代碼如何優(yōu)化?本節(jié)將會詳細討論(3.8.2節(jié))。
3.8.1 問題與分析 126
3.8.2 實現(xiàn) 128
3.9 任務代碼的初步改造 132
【導讀】問題4提出已久,但是我們并未正面解決它,而是插入了并行多任務的編程思想,這些思想與問題4有什么關聯(lián)呢(3.9.1節(jié))?請看本節(jié)是如何處理的(3.9.2節(jié))。
3.9.1 問題與分析 132
3.9.2 實現(xiàn) 132
3.9.3 回顧與思考 135
3.10 消息處理 136
【導讀】在一個MOS中編程,往往會產生不少新的編程策略,消息機制就是一個典型。本節(jié)將重點介紹消息機制(3.10.1節(jié))并舉例說明消息處理代碼編寫的方法(3.10.2節(jié))。
3.10.1 問題與分析 136
3.10.2 實現(xiàn) 137
3.10.3 問題分析 139
3.10.4 實現(xiàn) 139
3.10.5 回顧與思考 142
3.11 廣播消息 142
【導讀】盡管消息機制只是一個概念,但是對應消息的處理卻十分豐富。本節(jié)將重點探討消息是如何廣播的。
3.11.1 問題與分析 142
3.11.2 實現(xiàn) 143
3.11.3 回顧與思考 147
3.12 任務代碼的最終改造 148
【導讀】萬事俱備,現(xiàn)在我們只需要利用并行多任務思想、消息機制、任務嵌套手段來分析問題4(3.12.1節(jié))與解決問題4(3.12.2節(jié))就可以了,對于新程序的正確性我們可以進行仔細驗證(3.12.3節(jié)),您一定會發(fā)現(xiàn),原來一個好的思想是多么的神奇,您甚至不用擔心會存在BUG。
3.12.1 問題與分析 149
3.12.2 實現(xiàn) 149
3.12.3 仿真 154
3.12.4 回顧與思考 154
3.12.5 亮點分析 155
3.13 狀態(tài)指示燈 155
【導讀】這是一個常見的問題,也是并行多任務思想的一個典型綜合應用。為了節(jié)省資源,設備只有一個指示燈,它必須同時完成不同狀態(tài)的指示(沖突時靠后者指示優(yōu)先),如何做到這一點呢?本節(jié)將給出完整的實現(xiàn)策略。
3.13.1 問題8與分析 155
3.13.2 測試模型 157
3.13.3 實現(xiàn) 157
3.13.4 回顧與思考 161
第4章 面向對象的程序 162
4.1 計算機的語言特征 162
【導讀】發(fā)現(xiàn)新思想,從用正確的視角看C語言開始(4.1.1節(jié));了解智能芯片的心情,從了解自己的心情開始(4.1.2節(jié))。本節(jié)將從思想角度來引導讀者走出常規(guī)思維的盲區(qū)。
4.1.1 正視C語言 162
4.1.2 以對象看世界 163
4.2 兔類的傳奇 164
【導讀】代碼中的對象理解起來十分生澀,但是我們可以從生活中的對象開始(4.2.1節(jié)),一只兔子能帶給我們什么樣的啟迪(4.2.2節(jié))?一只兔子與兔子的種群有著什么樣的關系(4.2.3節(jié)、4.2.4節(jié))?本節(jié)將要展示單片機內心世界中的兔子種群是什么樣的(4.2.5節(jié))。
4.2.1 兔類淺說 164
4.2.2 單片機中的兔類 165
4.2.3 兔類的結構 166
4.2.4 兔類的屬性成員 167
4.2.5 兔類的實現(xiàn) 169
4.3 兔子的傳奇 170
【導讀】我們可以像上帝一樣設計一個種群,然后根據(jù)這個種群的特點創(chuàng)造一只只的兔子對象。本節(jié)將深刻探討兔子對象有著什么樣的傳奇。
4.3.1 問題9與分析 170
4.3.2 實現(xiàn) 171
4.3.3 回顧與思考 173
4.4 面向對象編程的書寫規(guī)范 174
【導讀】如何讓思想成為方法論,這也是本書的重要任務之一。本節(jié)打開從思想通向實踐的時空隧道,指引讀者一步步將面向對象思想落到實處。
4.4.1 問題與分析 174
4.4.2 實現(xiàn) 180
4.5 方波對象 184
【導讀】單片機中幾乎不會有兔子,但會有方波。本節(jié)從一個走進單片機內心世界的兔子模型開始講解,逐漸引導讀者進入單片機的內心世界去看一支方波。因為只有方波才是單片機內心世界的常見對象。
4.5.1 問題10與分析 184
4.5.2 測試模型 186
4.5.3 綜合分析一 186
4.5.4 增補的面向對象編程的頭文件 189
4.5.5 綜合分析二 190
4.5.6 實現(xiàn) 198
4.5.7 仿真 207
4.5.8 回顧與思考 207
第5章 對象的歸宿 209
5.0 引言 209
【導讀】思想與方法論的改變對我們的產品和工作會帶來哪些影響呢?本節(jié)簡單地引出問題。
5.1 解密對象魔法 209
【導讀】生命是一個對象的本質特征,掌握對象的生命特征是靈活運用對象思想的重要保證。
5.1.1 對象的生命特征 210
5.1.2 對象生命特征的含義 210
5.2 項目管理 211
【導讀】對象思想的項目化是面向對象編程進入實踐的基本途徑,本節(jié)將探討如何用一個Keil C的Project文檔來組織一個對象思想的程序。
5.2.1 項目的內容 211
5.3 項目的實現(xiàn) 214
【導讀】本節(jié)組織文檔的內容。
5.3.1 文檔的落實 214
5.3.2 文檔的分包 222
5.4 對象文檔與項目分離 224
【導讀】為了增加代碼的可再用性,我們得讓常用代碼與某一個具體的項目分離。對象就是這種典型的常用代碼,我們得讓它從物質基礎上獨立于整個項目。
5.4.1 任務與分析 224
5.4.2 面向對象編程的層次關系 225
5.5 源碼的商業(yè)保護 226
【導讀】商業(yè)保護是日常工作的一個重要事務,保護源碼,發(fā)布二進制碼是一個基本做法,而庫制作則是實現(xiàn)二進制碼發(fā)布的一個重要工具,本節(jié)具體介紹庫的相關知識。
5.5.1 庫文件 226
5.5.2 庫中的模塊 227
5.5.3 制作庫 228
5.5.4 使用對象庫 229
5.5.5 庫、模塊與對象的關系 230
5.5.6 庫的操作 230
5.5.7 創(chuàng)庫計劃 232
5.6 對象的花絮 233
【導讀】一個思想上的對象,屬于上層建筑的內容,所以它依賴很多物質基礎(5.6.2節(jié)、5.6.3節(jié)),任何一個離散的物質基礎都會對它產生或多或少的影響,我們要掌握這些虛虛實實的內在關聯(lián)(5.6.3節(jié)),并能抽象與總結這種客觀的存在(5.6.1節(jié)、5.6.4節(jié))。
5.6.1 對象分析的觀點 233
5.6.2 內存統(tǒng)籌的觀點 234
5.6.3 虛擬與現(xiàn)實相通的觀點 234
5.6.4 常見的對象 238
第6章 寶貝車的綜合應用 241
6.1 寶貝車簡介 241
【導讀】通過一個具體的寶貝車應用(6.1.1節(jié))來將前面所述思想進行一個綜合的實踐。
6.1.1 問題11 241
6.2 對象分析 242
【導讀】對象與對象之間既獨立,又合作,本節(jié)通過寶貝車的對象分析來介紹對象關系的處理方法(6.2.1節(jié)),并構造一個寶貝車的對象資源庫(6.2.2節(jié))。
6.2.1 組合對象與實現(xiàn) 242
6.2.2 寶貝車的庫項目 246
6.3 實現(xiàn)對象 248
【導讀】本節(jié)完成寶貝車對象的各種行為特征的全部代碼設計。
6.3.1 車輪的定義 248
6.3.2 脈沖發(fā)生器 249
6.3.3 寶貝車的控制 252
6.3.4 寶貝車的創(chuàng)建 253
6.3.5 實現(xiàn) 254
6.3.6 修成正果 259
6.4 對象的使用 259
【導讀】本節(jié)將演示在一個具體的項目中如何很方便地使用一個共享的獨立對象代碼資源庫中的對象――寶貝車。
參考文獻 261

本目錄推薦

掃描二維碼
Copyright ? 讀書網 ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號