Ⅰ 單片機c語言中常用的頭文件都有哪些分別有什麼作用啊
對於c語言的頭文件來說,通常情況下是使用#include+文件名語句進行引用。
格式如下:
#include
或
#include
"mylib.h"
使用
#include時,使用引號與尖括弧的意思是不一樣的。使用引號」」時,首先搜索工程文件所在目錄,然後再搜索編譯器頭文件所在目錄。所以對於用戶自定義頭文件來說,通常使用雙引號。
而使用尖括弧<>時,剛好是相反的搜索順序。所以對於編譯系統提供的頭文件來說,通常使用尖括弧。
例:
假設我們有兩個文件名一樣的頭文件
hardware.h
,但內容卻是不一樣的。一個保存在編譯器指定的頭文件目錄下,我們把它叫做文件i
,另一個則保存在當前工程的目錄下,我們把它叫做文件
ii
。
如果我們使用的是#
include
,則我們引用到的是文件
i。如果我們使用的是#include
「hardware.h」,則我們引用的將是文件
ii
。
Ⅱ 在單片機編程中,keil產生的文件中.C , .H , .HEX , .UV2 之間是什麼關系
ABC是文件名,由用戶給定*.C是後綴名,意思是用c語言編寫程序,keil還支持匯編語言編寫(*.ASM)*.H是後綴名,這里是聲明文件,keil自帶,也可以自定義*.HEX是編譯好後的十六進制文件,單片機只能識別十六進制和二進制(*.BIN)的文件*.UV2是keil的工程名 直接打開*.UV2,就是打開了一個工程,如果工程里包含.C文件,那麼.C文件就直接被載入了,但是想把程序拷貝的其他地方就要帶上.C文件,可以不要工程文件(.UV2)
Ⅲ 單片機裡面.HEX文件不是由.C文件生成的嗎為什麼有的程序裡面.C文件與.hex文件的文件名不一致
.UVproj是項目文件,裡麵包含項目內的所有源文件的登記、編譯器相關設置、以及生成目標的配置等一些列信息;hex則是項目生成的最終程序,是項目中所有code編譯鏈接得到的,所以.UVproj文件和hex文件應該是同名的。.c文件是源文件,obj是c文件編譯得到的,他們的文件名肯定相同。一個項目中可以含有很多源代碼文件(通常是c或者匯編文件),每個源文件只實現項目的一部分功能,所以單個c文件不能代表整個項目,所以c文件的名字不需要和hex文件相同。
Ⅳ 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語言方面的書籍就能明白了。