❶ 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文件编译有很多地方要注意,不是一下子能说清楚的。