新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 第9節:程序從哪里開始,要到哪里去?

        第9節:程序從哪里開始,要到哪里去?

        作者: 時間:2016-11-22 來源:網絡 收藏
        從業十年,教你單片機入門  第9講:

        程序從哪里開始,要到哪里去?為了讓初學者了解C語言程序的執行順序,我把程序分成三個區域:進入主程序前的區域,主程序的初始化區域,主程序的循環區域。

        本文引用地址:http://www.104case.com/article/201611/319819.htm

        進入主程序前的區域。這是上電后,在單片機執行主程序代碼之前就已經完成了的工作。包括頭文件的包含,宏定義,內存分配這些工作。這部分的內容可以暫時不用去了解,我會在后面的一些章節中陸續深入講解。

        主程序的初始化區域。這是上電后,單片機進入主程序后馬上就要執行的程序代碼,這部分區域的代碼有一個特點,大家也必須記住的,就是單片機只執行一次。只要單片機不重啟,不復位,那么上電后這部分的代碼只被執行一次。

        主程序的循環區域。單片機在主程序中執行完了初始化區域的代碼,緊接著就進入這片循環區域的代碼。單片機一直在循環執行這段代碼,這就是上電后單片機的最終歸宿,一直處在循環的狀態。

        下面我跟大家分析一個程序源代碼的三個區域和執行順序,大家先看中文解釋部分的內容,暫時不用理解每行指令的語法。該源代碼實現的功能是:上電后,蜂鳴器鳴叫一聲就停止,然后看到一個LED燈一直在閃爍。本程序是基于堅鴻51單片機學習板

        #include "REG52.H" //進入主程序前的區域:頭文件包含

        sbit beep_dr=P2^7; //進入主程序前的區域:宏定義

        sbit led_dr=P3^5; //進入主程序前的區域:宏定義

        unsigned long i; //進入主程序前的區域:內存分配

        void main() //主程序入口,即將進入初始化區域

        {

        beep_dr=0; //第一步:初始化區域:蜂鳴器開始鳴叫。

        for(i=0;i<6250;i++); //第二步:初始化區域:延時0.5秒左右。也就是蜂鳴器鳴叫的持續時間。

        beep_dr=1; //第三步:初始化區域:蜂鳴器停止鳴叫。

        while(1) //執行完上面的初始化區域,即將進入循環區域

        {

        led_dr=1; //第四步:循環區域:LED開始點亮。

        for(i=0;i<6250;i++); //第五步:循環區域:延時0.5秒左右。也就是LED點亮的持續時間。

        led_dr=0; //LED滅 //第六步:循環區域:LED開始熄滅。

        for(i=0;i<6250;i++); //第七步:循環區域:延時0.5秒左右。也就是LED熄滅的持續時間。馬上返回上面第四步繼續循環往下執行。

        }

        }

        //解釋:

        //單片機進入主程序后,第一步到第三步是屬于初始化區域,只被執行一次。然后進入循環區域,從第四步執行到第七步,

        //執行完第七步之后,馬上返回上面第四步繼續循環往下執行,單片機一直處于第四步到第七步的循環區域中。

        復制代碼

        經過以上的分析,可以看出這三個區域的大概分布如下:

        //...進入主程序前的區域

        void main()

        {

        //...初始化區域

        while(1)

        {

        //...循環區域

        }

        }

        下節預告:一個用來學習C語言的模板程序。



        關鍵詞: 程序單片

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宣武区| 绍兴市| 溧阳市| 安康市| 天峨县| 定州市| 安陆市| 敦煌市| 垦利县| 来凤县| 铅山县| 昆明市| 梨树县| 诸城市| 呼玛县| 芜湖县| 睢宁县| 运城市| 乌鲁木齐县| 金门县| 无锡市| 东光县| 于田县| 江安县| 濮阳县| 托克逊县| 娱乐| 绵阳市| 吉首市| 神池县| 汝城县| 东城区| 上蔡县| 观塘区| 二连浩特市| 尼勒克县| 泰宁县| 同德县| 彩票| 安溪县| 华安县|