❶ 51單片機一個工程中包含多個C文件怎麼使用
這是標準的C語言寫法。
1. 不管有多少個函數,C總是從main()主函數開始執行。
2. 至於你說的一個工程裡麵包括多個.c的文件,其實每個.c的文件里就是一系列函數而已。如果你要使用這些函數的話你要在頭文件里加入#include。比如我要用「init.c」這個文件,則頭文件中除了#include"reg51.h"你還要加#include"init.c"然後如果在"init.c"中有一個函數"init()"我需要調用。我就要在main()函數之前作聲明。(其實一般我們要調用一個函數,除非這個函數寫在main()之前。否則我都要在main()之前做函數聲明。比如在main()之前加上void init();)那麼如果這個init();在其他文件中,改如何聲明呢?我們一般可以做外部聲明.extern init();就行了。
3. 其實說穿了,你的問題就是函數聲明問題。如果前面加上正確的聲明,你的編譯應該能通過的。單片機也能按照你的要求工作了。順便說一句,如果是外部文件的數據結構,如果要調用的話,也是做extern聲明。如果還有不明白的地方你可以看看標準的c語言方面的書籍就能明白了。
❷ 單片機Keil C51 C語言多文件如何使用全局位變數跪拜!!
extern就可以。在一個文件里定義:
bdata m;
sbit x=m^1;
然後在另一個文件里聲明:
extern bdata m;(如果不使用m可以不聲明。)
extern bit x;
這樣就可以使用了。如果變數較多,建議樓上的方法,用全局頭文件。
❸ 51單片機,如何建立多C文件,
1. 模塊化編程的原則:
模塊化編程通常要遵循以下幾個原則:
每一個c文件對應一個同名的h頭文件
一個h文件伴隨相應c文件存在,頭文件是為了聲明對外公開的介面。如果一個c文件不需要對外公布任何介面,則其就不應當存在,除非它是程序的入口,如main函數所在的文件,同時main函數所在文件可以沒有對應的頭文件。如有一個led.c,那應該同時製作一個led.h頭文件。
頭文件中適合放置介面的聲明,不適合放置實現
頭文件是模塊的對外的介面,供外部程序調用。頭文件中應放置對外部的聲明,如對外提供的函數聲明、宏定義、變數類型聲明等。函數的實現、變數的賦值、語句的操作等決不能放在頭文件中。因為頭文件的功能是向外提供介面,譬如函數,變數,具體如何實現是在c文件中進行,頭文件僅是進行了描述聲明。
任意一個c文件只要使用了其他c文件提供的介面,都要同時包含其對應的頭文件,每個c文件應該頭文件自包含
任意一個c文件只要使用了其他c文件提供的介面,都要將其對應的頭文件包含到該c文件中,沒有使用到其他c文件的介面就不應該將其匹配的頭文件包含,並且每個c文件都應該包含自己的頭文件。
防止頭文件被重復包含
避免一個頭文件被重復包含,通常使用條件編譯命令#ifndef--#endif,如下示例:
示例1:
#ifndef TIME_H
#define TIME_H
……
#endif
示例2:
#ifndef LED_H
#define LED_H
……
#endif
其中#define FILENAME_H為基本格式,FILENAME_H為頭文件名稱,但要全部使用大寫形式,使用單下劃線後緊跟一個H表明是頭文件。不要在宏名最前面加上「_"或「__」,即使用FILENAME_H代替_FILENAME_H_,因為一般以"_"和」__"開頭的標識符為系統保留或者標准庫使用。
❹ C51裡面怎麼存在多個.c和.h文件
你說的這些都不是固定要這么做的,這與個人的習慣有關。有人習慣把一些寄存器和引腳定義,宏定義等等一些非執行語句寫成頭文件。更不是一個.c文件就一定要有一個.h頭文件。其實,這些完全可以都寫在.c文件中,並寫最前面就行的。
還有那個include也不只是包含.h頭文件的。而對於keil給定的頭文件就必須用include載入。
那個extern,通常是用於由多個.c文件組成的一個工程中的,就是在一個.c文件中,調用另一個.c文件中的函數時,應該先用extern聲明一下外部函數。
總之,怎麼寫,根據個人的習慣而定。只要編譯通過就可以。
一般情況下,對於一個比較大的工程,都是由多個.c文件組成的,這時也會有多個頭文件。
這么說,你可能一時還理解不了,沒關系,要多看別人的程序,自己多練。剛開始,寫一些簡單程序,工程中也只有一個.c文件時,就比較簡單了,沒有這么多的事了。
❺ 在KEIL C51里,如果不只一個C文件,有多個C文件,如何燒錄
在左邊的工程欄裡面,在Source Group上面點擊右鍵,選擇Add File to Group "Source Group1"選項,把你想要編譯的C文件全部添加進去,然後按編譯按鈕,就全部編譯了。但是多個C文件編譯有很多地方要注意,不是一下子能說清楚的。