❶ 單片機怎麼在一個project裡麵包含兩個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語言方面的書籍就能明白了。
❷ 單片機C51程序如何分成好幾個.c和.h文件
.c文件是整個程序中的一個或幾個函數組成,在別的.C文件里可以調用它,不只是在主函數中。這樣做可以增強程序的模塊化,提高程序的可讀性。當編制好一個模塊時你可以保存在一個工程下,文件名改為**.C。這樣在另一個.C文件中的文件頭處只要你對它進行說明就可以調用它。比如#include
string.c
那麼你就可以在你說明了的.C文件中調用它,這樣一個模塊可以在很多處調用,使得編程復雜度降低。程序編譯時把你所說明的文件復制到你調用處程序就可以運行了。
.H文件是對單片機一些埠及一些常用的程序的庫說明,
比如我們在程序中用到埠一即P1,我們能夠用它是因為在庫中已對它進行了說明,對P1賦予了一個埠地址,這樣程序編譯是才不會出錯,不然會提示你UNDIFINED
.C文件一般是自己創建的。而.H文件是系統自帶,不過自己也可以創建.H文件,主要對用到的一些標號進行說明,其中也可以包括一些常用的函數
用戶自己創建的.C文件是放在工程目錄下,.H文件一般放在編譯器的某個目錄下,程序編譯的時候從默認目錄中搜索,如果找到則復制到程序開頭處。
❸ 一般做單片機開發時,怎麼處理多個.C文件和.H文件啊
.H文件是很令人頭疼的,我建議在include文件夾中找不到的話就在網上找一找。這是編程的大事,沒有頭文件很多語句都行不通;
.C文件就好多了。可以逐個打開看看。看的多了就好了。
❹ 單片機工程中的多個C文件和H文件的使用
1.所有C文件中的全局函數定義到對應名稱的H文件中(要有防重復引用機制)
2.所有H文件在一個「Includes.H」中包含
3.在所有C文件中包含「Includes.H」
這樣修改方便,一勞永逸。
缺點是:所有外部函數都對整個工程可見,編譯速度相對下降
我的項目基本都是這個結構,推薦使用!
❺ 51單片機一個工程中包含多個C文件怎麼使用,就像 main .c init.c display.c
函數的聲明可以不用加,不過如果是變數被多個.c文件使用,則必須加上extern,然後在某一個文件中進行定義、
❻ 51單片機KEIL如何建立多個C文件及注意事項
只管建就是了,建了之後要有頭文件引導,並且一定要將這些源文件添加到工程中
❼ 單片機項目的目錄結構,多個.c文件是干什麼用的
這是寫程序的常採用的做法,叫模塊法。因為,一個項目,程序是很復雜的,有很多的介面電路和外部設備,每一個設備都要寫一個驅動程序,各個介面電路也要有相應的程序。假如這些程序都寫在一塊,那程序就相當長了,不方便編輯、調試和修改。因此,就單獨寫成一個一個的程序,這樣,還可以由一個團隊的成員分工來寫。
最後,把所有的程序都加到一個工程中,成為一個工程的整體了。
❽ 單片機C語言程序中,有多個.C源文件,main.c函數中調用那些.c源文件的函數應該怎樣處理
①如果 fun.h 文件 已經正確聲明了,那麼main.c 只要 include "fun.h"就可以使用 fun.c 函數了。只怕是,fun.h 只有 聲明,而沒有 正確聲明。正確的 聲明,需要 條件編譯 聲明是 函數聲明 還是 外部函數聲明。
② fun.c 中可能有多個函數,而 main.c 並不需要 調用,如果 這些函數 在 程序過程沒有調用,那麼 編譯器將放棄 該函數編譯,同時 發出 「未使用函數」警告,就不會 寫進 單片機了。
❾ 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_,因為一般以"_"和」__"開頭的標識符為系統保留或者標准庫使用。