在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > KEIL 同一工程中的多文件處理

            KEIL 同一工程中的多文件處理

            作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
            首先,我們需要一個(gè)新文檔,這個(gè)文檔的建立有兩種方法(以delay1s函數(shù)為例)。第一種,在工程目錄下建立一個(gè)delay1s.txt然后將其改名為delay1s.h。因?yàn)槎际峭幋a的所以不會(huì)出現(xiàn)亂碼,然后在工程中將其打開(kāi)。第二種方法是直接在工程中新建一個(gè)文檔,然后保存的時(shí)候?qū)⒚直4鏋閐elay1s.h即可。如果是需要添加很多文件的話建議使用第一種方法,這是個(gè)人建議。其次,我們需要編寫delay1s.h這個(gè)文件的內(nèi)容,其內(nèi)容如下:

            #ifndef _DELAY1S_H_
            #define _DELAY1S_H_
            void delay1s();//延時(shí)函數(shù)
            #endif
            這個(gè)是頭文件的定義,作用是聲明了delay1s()函數(shù),因?yàn)槿绻趧e的函數(shù)中如果我們需要用到delay1s()函數(shù)的話,若不事先聲明則在編譯的時(shí)候會(huì)出錯(cuò)。對(duì)于#ifndef……#define……#endif;這個(gè)結(jié)構(gòu)大概的意思就是說(shuō)如果沒(méi)有定義(宏定義)一個(gè)字符串,那么我們就定義它,然后執(zhí)行后面的語(yǔ)句,如果定義過(guò)了那么就跳過(guò)不執(zhí)行任何語(yǔ)句。
            關(guān)于為什么要使用這么一個(gè)定義方法,比如在led_on()函數(shù)中我們調(diào)用了delay1s()函數(shù),然后在main()函數(shù)中我們也調(diào)用了delay()函數(shù),那么,在led_on()函數(shù)中我就就要包含頭文件delay1s.h,然后在main()函數(shù)中也要包含delay1s.h,若主函數(shù)中我們調(diào)用過(guò)led_on(),那么在編譯的時(shí)候,遇到delay1s()和led_on()的時(shí)候就會(huì)對(duì)delay1s.h進(jìn)行兩次解釋,那么就會(huì)出現(xiàn)錯(cuò)誤。若有以上預(yù)處理命令的話,那么在第二次的時(shí)候這個(gè)_DELAY1S_H_已經(jīng)被定義過(guò)了,那么就不會(huì)出現(xiàn)重復(fù)定義的問(wèn)題。這就是它的作用。但是注意,在編譯器進(jìn)行編譯的時(shí)候頭文件不參與編譯。
            再次,我們建立一個(gè)led_on.h,起代碼內(nèi)容如下:
            #ifndef _LED_ON_H_
            #define _LED_ON_H_
            void led_on(void);//燈閃爍
            #endif
            作用同delay1s.h,不理解的話可以再看一下上面的解釋。
            最后,將我們上面說(shuō)的三個(gè)函數(shù)補(bǔ)充完整。
            在led_on()函數(shù)中,我們用到了51單片機(jī)的一些寄存器的定義,所以我們要包含reg52.h,而且我們用到了delay1s()函數(shù),所以我們要包含delay1s.h,故led_on.c文件代碼如下:
            #include
            #include “delay1s.h” //注意這里沒(méi)有分號(hào)
            void led_on(void)
            {
            P0=0x00;
            delay1s();
            P0=0xff;
            delay1s();
            }
            Main函數(shù)的代碼形式如下:
            #include
            #include “delay1s.h”

            本文引用地址:http://www.biyoush.com/article/201611/321533.htm

            #include “led_on.h”
            void main()
            {
            led_on();
            delay1s();
            led_on();

            }
            在這個(gè)函數(shù)中,為了再次說(shuō)明一下#ifndef……#define……#endif這個(gè)結(jié)構(gòu)的定義,大家可以把所有的.h文件中的這個(gè)結(jié)構(gòu)去掉,然后編譯一下看一下效果。
            到這里相信大家對(duì)于這種模塊化的寫法就有大概的了解了,如果我們想添加新功能的時(shí)候,比如我們要添加一個(gè)流水燈的功能,那么,我們只需要增加一個(gè)led_circle.c和led_circle.h,然后按照上述步驟添加進(jìn)工程即可,程序的其他部分不需要任何改動(dòng)。顯然這是很方便的。其實(shí)函數(shù)的聲明可以使用extern關(guān)鍵字,C語(yǔ)言中默認(rèn)都是這個(gè)類型的,所以可以不用寫。



            關(guān)鍵詞: KEIL工程多文件處

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉