51单片机一个工程中包含多个C文件怎么使用,就像 main .c init.c display.c ?

比如说main.C中,调用display.c ,声明函数的时候用不用加extern。是不是一个工程下的这些c文件不用加extern?

函数的声明可以不用加,不过如果是变量被多个.c文件使用,则必须加上extern,然后在某一个文件中进行定义、
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-17
要生成各个C文件的头文件,然后再主函数里加入这个.h的文件就好了追问

头文件能自动生成吗?初学~!

头文件能自动生成吗?初学~!

追答

软件自带的会自动生成,像。这些必须自己添加,就像函数声明一样,把这些函数名写在一个.h的文件了。
比如说main.C中,调用display.c ,先吧display.c里的函数声明全部放到display.h里,然后main.c里再写#include就行了,这个文件和main.c那些放在一个文件夹里就好了

追问

感谢你的回答,我在问个小问题,在,中声明函数的时候用不用加extern~·比如extern delay(uchar)

追答

子文件里没有main的函数,所以在子文件.c的文件里函数是不需要申明的,当某个文件需要调用本文件的函数时,是在某个文件里要加上extern的。另一种方法就是生成一个本文件的头文件,就是说的像(这里面不加extern)然后那个文件需要本文件的函数,你就写成#include。

本回答被提问者采纳
第2个回答  2011-08-17
最好加上~
使用的时候直接#include"display.c"
第3个回答  2011-08-17
你是想调用display.c文件里面的函数吧?那就在main中把display的头文件include进来就行了

51单片机一个工程中包含多个C文件怎么使用
1. 不管有多少个函数,C总是从main()主函数开始执行。2. 至于你说的一个工程里面包括多个.c的文件,其实每个.c的文件里就是一系列函数而已。如果你要使用这些函数的话你要在头文件里加入#include。比如我要用“init.c”这个文件,则头文件中除了#include"reg51.h"你还要加#include"init.c"然后...

如何在KEIL里面建立多个C文件的工程
如何建立多个C文件 首先,我们需要一个新文档,这个文档的建立有两种方法(以delay1s函数为例)。第一种,在工程目录下建立一个delay1s.txt然后将其改名为delay1s.h。因为都是同编码的所以不会出现乱 码,然后在工程中将其打开。第二种方法是直接在工程中新建一个文档,然后保存的时候将名字保存为dela...

51单片机显示八位数码管的C语言程序
1、最开始,我们先打开keil。2、接着,我们要定义好库函数,想要实现动态数码灯,这个步骤是很重要的。3、接着,我们加上一条循环语句。4、最后,我们把先前定义的延时语句delayms写好。5、最后,点击这里进行编译,生成一个hex文件。6、如果这里无错误警告的话,就说明我们的程序写对了,那我们就可以...

51单片机c语言脉冲计数并显示程序
TH0=0;TL0=0;TR0=1;while(1){ a=TH0*256+TL0;display(a);}

51单片机C语言程序4个独立按键实现对数码管数字显示的加减清零等_百度...
P1是LED.P2是按键sbit KEY_OUT_1 = P2^3;sbit KEY_OUT_2 = P2^2; sbit KEY_OUT_3 = P2^1;sbit KEY_OUT_4 = P2^0;#define uchar unsigned char#define ulint unsigned long#define Frequency 10\/\/定时器中断时间 = f*T#define Time 1\/\/一个周期1ms#define TubeNumber 6\/\/数码管个...

关于51单片机的一个小程序,为什么我的数码管不能显示 0 1 2 3 ...
temp = temp&0xf0;这一句过后temp的低四位必定为0,swtch后面的语句都进不了。

51单片机设计两位计数器C语言
void display(uchar n){ wei1=1;dataport=TABLE[n\/10];delay1ms(1);wei1=0;wei2=1;dataport=TABLE[n%10];delay1ms(1);wei2=0;} void main(void)\/\/主程序 { while(1){ if(s1==0){ delay1ms(20);if(s1==0){ a++;} } if(a=100)a=0;if(s2==0){ delay1ms(20);if(s2...

在51单片机上如何让数码管流水式的显示16进制数,
void port_init(void){ PORTA = 0x00;DDRA = 0xff; \/\/ PA口设置成输出,数码管段码 PORTB = 0x00;DDRB = 0x00;PORTC = 0x00; \/\/ m103 output only DDRC = 0xff; \/\/ PC口设置成输出,数码管位选 PORTD = 0x00;DDRD = 0x00;PORTE = 0x00;DDRE = 0x00;PORTF...

单片机C51编程(C语言):1到100的求和显示,在数码管里显示出来.
void display();void delay();\/\/共阴:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F code unsigned char Led[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};uchar num,sw,gw;void main(){ num=0;while(1){ convert();display(...

51单片机C语言编程
\/\/ 51单片机C语言编程,这个时钟+秒表可以参考一下。include<reg51.h> define uchar unsigned char define uint unsigned int sbit qingling=P1^0; \/\/清零 sbit tiaofen=P1^1; \/\/调分 sbit tiaoshi=P1^2; \/\/调时 sbit sounder=P1^7; \/\/naozhong uint a,b;uchar hour,minu,sec, ...

相似回答