文章內容

article_man_pic

KEIL C語言

全華圖書股份有限公司   2017-04-18    A20170418001
點閱 4528
評論 0
基礎
article_pic

  KEIL C與一般的C語言類似採取函式設計方式,已圖2-1之test1.c成是為例,概略介紹C語言主要成份。

  一、主程式:開機時必定由主程式開始執行,主程式由main()開始,如圖2-1程式中5~17行,第13行呼叫名為delay的函式。

  二、函式:圖2-1程式中18-23行即為一個函式,其名稱命名為“delay”,提供主程式呼叫使用(第13行)。

  三、標頭檔:圖2-1程式第2行使用“#include”將檔名為“AT89X51.H”之標頭檔引入,標頭檔主要定義I/O位址、常數與符號等,圖2-2為“AT89X51.H”之標頭檔部份內容。

  另外,設計程式時為了方便閱讀或維護,通常會加入註解(Comment),C語言之註解有“//…”與“/*…*/”兩種方式,圖2-1第1行“// test1.c”表示“//”之後的“test1.c”註解,第4行“/* global */”表示“/*”與“*/”之間的“global”為註解,此種註解表達方式具有換行之功能(參考圖2-2第1~3行均為註解)

 

  變數在使用前,必須先經過宣告期資料型態與名稱,表2-1為KEIL C支援的資料型態,變數宣告格式如下所示:

資料型態  變數名稱1,變數名稱2 [=常數],…;

  變數名稱的一些限制如下:

1.  第一個字元限制為文字“A~Z”、“a~z”或“_”(不可為數字“0~9”)。

2.  第二個以後的字元為文字“A~Z”、“a~z”或“_”,增加數字“0~9”。

3.  標記長度最多為31個字。

4.  大、小寫字元視為不同變數。

5.  變數名稱宜避開系統保留字。

  變數依據宣告位置,分成區域變數(Local Variable)全域變數(Global Variable)兩種。

  一、區域變數(Local Variable)

  在函式之內部宣告的變數、均為區域變數,其有效範圍只在宣告的函式涵蓋範圍內。參考圖2-1第7行“unsigned char k;”,此變數k屬於main主函式之區域變數,在程式6~17行之間有效範圍。圖2-1第20行“unsigned int k;”,此變數k屬於delay函式之區域變數,在程式19~23行之間有效範圍。

  二、全域變數(Global Variable)

  在函式之外宣告的變數稱之為全域變數,其有效範圍適用在同一個檔案內所有函式。參考圖2-1第4行“unsigned char i=0;”,變數i為無符號字元初值為0,此變數i在main主函式及delay函式均有效。

  一般變數的使用只需標示變數名稱及資料型態,編譯器會自動安排內部資量記憶體儲存變數值。若要明確標示使用記憶體類型,甚至指定記憶體位址時其變數宣告格式如下所示:

資料型態  記憶體類型識別字  變數名稱1,變數名稱2[=常數],…;

資料型態  記憶體類型識別字  變數名稱  _at_  位址;

  記憶體類型識別字總共分成程式記憶體與資料記憶體兩大類,程式記憶體(參考圖1-7(a))其類型識別字為code,而資料記憶體部份(參考圖1-7(b)及圖1-8)類型識別字可分成data、idata、bdata、xdata與pdata,pdata是以256個位元組為單位稱之為頁。

  檢視圖2-1之test1.c範例程式與表2-1之KEIL C支援之資料形態表,尚有bitsbitsfrsfr16等資料型態沒有範例介紹,因此將圖2-1範例程式略作調整成圖2-3之test2.c範例程式。

  一、sfr資料型態

   test2.c範例程式第3~5行程式使用sfr宣告特殊功能暫存器之值,例如P1之位址為90H(參考表1-2)。

  二、sfr16資料型態

  sfr16主要宣告16位元特殊功能暫存器,並且限制必須兩相鄰且相關的暫存器才可,例如DPL(0X82)與DPH(0X83)、TL0(0X8A)與TL1(0X8B)、TH0(0X8C)與TH1(0X8D)、RCAP2L(0X0CA)與RCAP2H(0X0CB)及TL2(0X0CC)與TH2(0X0CD)。宣告位址時必須宣告較低的位址,第6行宣告將兩相鄰且有關的8位元暫存器TL0與TL1合併成16位元之timer0、其位址宣告為0x8a。

  三、sbit資料型態

  sbit有兩種功能,一種是宣告可位元定址特殊功能暫存器中的位元、另一種是宣告設定位元地址區(RAM 20H~2FH)中的位元。若要命名P3位元3為P33有下列三種:

sbit P33=P3ˆ3;

sbit P33=0Xb0ˆ3;

sbit P33=0Xb3;

  四、bit資料型態

   第14行“bit b2;”宣告位元變數b2,位元位址由軟體安排。

 

 

【推薦閱讀】其它詳細內容請參閱「MCS-51原理與實習-KEIL C語言版,鍾明政、陳宏明編著,全華圖書出版」