❶ 单片机怎么在一个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_,因为一般以"_"和”__"开头的标识符为系统保留或者标准库使用。