Misoo

物件導向Keil-C51

 

物件導向

Keil C51

嵌入式程式設計

 

                                      使用µVision IDE開發環境

 
 
 

高煥堂 

 

 

  著作權說明:

1.          lw_oopc_kc.h巨集檔內容著財權為本書作者:高煥堂 所擁有。

2.          任何營利性、商業性使用,必須先取得本書作者的同意。

Full copyright of lw_oopc_kc.h content lies with the Author, Huantang Kao(高煥堂). No part of it may be reproduced, in any form or by any means, without permission in writing by the Author.(詳細請閱第36)

 
                                    序 言
 
 

       近年來,嵌入式(Embedded)軟體應用愈來愈廣,如數位家電、手機、數字化汽車等。而嵌入式軟體開發所使用的語言中,C語言仍約佔80%之多,其中Keil C在業界佔有極重要的地位。由於嵌入式軟體應用愈來愈廣,軟體質量大大影響了數位產品的穩定和可靠度,因之如何提升C程式的簡潔性、易讀性及重覆使用性,乃是當今軟體業的熱門話題。例如世界知名的麥肯錫(McKinsey)顧問公司,在2006年的報告(“Getting better software to manufactured products“)呼籲軟體業積極提昇其系統分析及設計的能量,才能解決軟體含量愈來愈多的數位產品的信賴度問題。

如何解決上述問題呢?其方向已經很清楚了,就是:讓Keil C語言與物件導向程式設計(Object-Oriented Programming,簡稱OOP)技術結合。就像當今的其他主流電腦語言(C#Java)一般。一旦Keil C語言與物件導向技術結合了,也能進一步與UML相結合,更提昇系統分析與設計的品質了。因此筆者撰寫本書,期望陪伴眾多Keil C程式人員更上層樓,強化系統分析及設計的技能,迎接日益廣大的嵌入式系統應用市場。

      本書所介紹的物件導向Keil C語言並不是一個新的語言,它只運用單純Keil C語言的巨集(Macro)技巧,實現了物件導向的基本技術,讓系統分析與設計階段的UML模型能與C程式緊密對應,以提升C程式的品質。此外,這些巨集在編譯階段就被翻譯為單純Keil C程式碼了,仍然保持其單純Keil C的高效率,符合嵌入式軟體環境之需要。本書由淺入深分為四篇(17)

1 ---- 認識CKeil C語言

2 ---- 介紹OOP觀念及LW_OOPC巨集

3 ---- 如何規劃精緻的介面

4 ---- 如何做好細節設計

       書裡的範例程式都小於2K,都能在免費的µVision3 IDE環境裡編譯及執行。願本書能陪伴你馳聘於嵌入式領域之中,並鴻圖大展。

 

  高煥堂  謹識於 2008年元月

 
 
 

     

目 錄

 

第一篇 認識CKeil C語言

1  嵌入式時代最划算策略, 7

1.1  迎接高品質的嵌入式軟體時代

1.2  三種彈性又高雅的寫法

1.3  靜態(Static)型寫法及其評量報告

1.4  純粹靜態(Pure Static)型寫法及其評量報告

1.5  動態(Dynamic)型寫法及其評量報告

2 章 認識物件導向Keil C, 37

2.1  簡介CKeil C語言

2.2  簡介LW_OOPC:替Keil C黃袍加身

2.3  Keil C的基本組成:函數與變數

3   Keil C的基本資料型態, 59

3.1 簡介資料型態

3.2 整數型態

3.3 無正負號整數

3.4 整數的輸出格式

3.5 字元型態

3.6 浮點數型態

4  Keil C的資料運算, 69

4.1 簡介資料運算

4.2 算術與指定運算

4.3 關係運算

4.4 邏輯運算

4.5 算術指定運算

4.6 1 及減1 運算

4.7 位址運算

4.8 逐位元運算

5 Keil C的決策與迴圈, 81

5.1 邏輯運算與決策

5.2 巢狀 if 指令

5.3 多選1 的抉擇

5.4  while 迴圈

5.5  for迴圈

5.6  do迴圈

6 Keil C的指標, 93

6.1  指標是什麼 ?

6.2  傳遞指標參數

6.3  函數回傳指標

6.4  函數指標

7 Keil C 的結構(struct), 101

7.1  什麼是結構(struct)

7.2  結構的指定運算

7.3  結構指標

7.4  動態記憶體分配

7.5  組合

8 Keil C的特殊資料型態, 111

8.1  8051CODE記憶體

8.2  8051DATA記憶體

8.3  Keil C的記憶體模式

8.4  Keil C的專屬資料型態

9 Keil C的陣列, 117

9.1  陣列的意義

9.2  一維陣列

9.3  一維陣列與指標

9.4  二維陣列與多維陣列

9.5  二維陣列與指標

9.6  陣列參數

9.7  給予陣列初值

10 Keil C前置處理程式, 135

10.1  前置處理程式的工作

10.2  使用巨集

10.3  含入標頭檔

10.4  有條件的編譯

 

第二篇 介紹OOP觀念及LW_OOPC巨集

11  認識物件(Object), 150

11.1  自然界之物件

11.2  軟體物件

11.3  物件與函數

11.4  物件與類別

11.5  物件指標

11.6  建構式

11.7  類別設計之實例說明

12  物件溝通方法, 175

12.1 「訊息傳遞」溝通方法

12.2 「訊息傳遞」範例之一:以Toggle Light電燈為例

12.3 「訊息傳遞」範例之二:再以紅綠燈控制系統為例

13 物件溝通實例:數學向量與矩陣物件為例, 199

13.1  以向量(Vector)類別封裝一維陣列

13.2  以矩陣(Matrix)類別封裝二維陣列

 

第三篇  如何規劃精緻的介面

14 認識介面(Interface), 212

14.1  如何定義介面?

14.2  多個類別實現同一介面

14.3  以介面實現多型性(Polymorphic)

14.4  一個類別實現多個介面

 

15 如何做好介面以四位數七節LED燈為例, 233

15.1  介面用途:從硬體的PnP談起

15.2  軟體介面範例()

15.3  軟體介面範例()

15.4  軟體介面範例()

 

第四篇 如何做好細節設計

16   降低物件間之相依性:活用IoC設計樣式, 260

16.1  物件相依性:細節設計優劣之評量

16.2  樣式觀念

16.3  軟體設計樣式

16.4  簡介IoC樣式

16.5  IoC樣式應用範例

16.6  IoCCOR樣式的攜手合作

17  握物件狀態之節奏:活用State樣式, 289

17.1  前言

17.2  活用State樣式

17.3  實例探討:以飛機狀態控制為例

  

      ---- END ----