官术网_书友最值得收藏!

3.1 C51程序的基本結構

單片機C51語言繼承了C語言的特點,其程序結構與一般C語言的程序結構沒有差別。C51源程序文件的擴展名為“.c”,如Test.c、Function.c等。每個C51源程序中包含一個名為“main()”的主函數,C51程序的執行總是從main()函數開始的。當主函數中所有語句執行完畢,則程序執行結束。下面是一個典型的C51源程序的例子。

        #include <reg52.h>                                   //預處理命令,reg52.h是一個頭文件

        void Function1(void);                                //自定義函數Function1聲明

        void main(void)                                      //主函數
        {
        Function1();                                         //調用自定義函數Function1
        unsigned char ch;                                    //主函數中變量聲明
        while(1)
        {
              printf("ch=%c\n",ch);                          //程序語句
              ch++;                                          //程序語句
        }
        }

        void Function1(void)                                 //自定義函數Function1
        {
              unsighed char ps;                              //自定義函數內部變量聲明
          ps=12;                                             //程序語句
          printf("ps=%d\n",ps);                              //程序語句
    }

從上面的例子可以看出,一個典型的C51源程序包含預處理命令、自定義函數聲明、main主函數和自定義函數。這幾部分完全類似于C語言的程序結構,各個部分的功能如下。

?預處理命令部分常用#include命令來包含一些程序中用到的頭文件。這些頭文件中包含了一些庫函數以及其他函數的聲明及定義。

?自定義函數聲明部分用來聲明源程序中自定義的函數。

?main主函數是整個C51程序的入口。不論main()函數位于程序代碼中的哪個位置,C51程序總是從首先main()函數開始執行的。

?自定義函數部分是C51源程序中用到的自定義函數的函數體,其中實現了用戶自定義的功能。

除了擴展名為“.c”的源程序文件外,C51程序還支持擴展名為“.h”的頭文件以及擴展名為“.lib”的庫文件等。在一般的編譯系統中,通常以項目結構來管理復雜的C51程序文件。例如在Keil μ Vision3編譯環境中,整個項目結構如圖3.1所示。

圖3.1 Keil μ Vision3項目結構示意圖

在這里,整個項目由項目文件來管理,項目文件的擴展名為“.Uv2”。整個工程項目中可以包含如下幾類文件。

?頭文件用來包含一些庫函數、系統變量聲明以及將不同的C文件連接起來。

?C源文件是C51程序的主要部分,用來實現特定的功能。C源文件可以有一個,也可以按照不同的功能分成多個,但所有這些C源文件中有且僅有一個可以包含一個main()主函數。

?庫文件是實現特定功能的函數庫,供C源文件中進行調用。

?編譯中間文件是源程序在編譯鏈接過程中生成的中間文件,其中包含了文件編譯調試的信息。

?可燒錄文件是編譯系統生成的可以燒錄到單片機內部供執行的文件,類似于“.exe”可執行文件。在C51語言中,一般擴展名為“.hex”或者“.bin”等。

在這些文件中,C源文件是必須的,其他的可以根據用戶實際的需要而使用。

主站蜘蛛池模板: 台江县| 新竹市| 吴川市| 奉贤区| 聊城市| 焦作市| 运城市| 奉贤区| 荥经县| 临汾市| 钟山县| 宾川县| 偏关县| 玛多县| 甘洛县| 德化县| 昭苏县| 洪泽县| 青神县| 台东县| 安达市| 龙门县| 枝江市| 麻城市| 遂溪县| 稻城县| 东乌珠穆沁旗| 青河县| 湄潭县| 漠河县| 井陉县| 恩施市| 二连浩特市| 洛扎县| 陇西县| 萨迦县| 马边| 资阳市| 奉新县| 军事| 资兴市|