[51单片机] 多个C文件程序的处理问题讨论(欢迎大家指点)

[复制链接]
2254|11
 楼主| qiqiangguo 发表于 2013-10-25 22:17 | 显示全部楼层 |阅读模式
小弟初学单片机(89SC52)不久,因为一直看资料都是一个.c的程序在那里编译仿真实验。今天突然想了解下多个.c是如何在一个主程序里面执行的,感觉上是像原理图的子程序一样的模式,也看到很多网上说的,都是差不多的回答,但是没看到具体的实例,有点云里雾里。自己就整了附件所示的小程序做实验,实验倒是成功了(仿真功能实现,最多叫可能成功{:soso_e127:} ),但不知道在规范程度和流程上面以及实际运用是否合理。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2013-10-26 07:55 | 显示全部楼层
只是分成几个文件写而已,

分别编译,最后会连接成一个HEX输出文件
msblast 发表于 2013-10-26 08:09 | 显示全部楼层
本帖最后由 msblast 于 2013-10-26 09:19 编辑

看你这么诚恳,我说几句。
将.c文件include到.c文件你已经实现了,况且我不推荐这种情况,所以就不多说了。
多个.c文件(模块)并不是一定要include的。
示例1
//file1.c
void func1(void)
{
    .....
}

//file2.c
extern void func1(void);
void func2(void)
{
    ......
    func1();
    ......
}
对于示例1,加或者不加extern都是可以的。
还有一种方法,就是提供file1.c(模块)对外的公共头文件,推荐这种方法。
示例2
//file1_pub.h
//这个文件包含的内容是可以被外部文件调用的结构体,常量,变量,函数
#define XXX_DELAY (5)
struct _xxx {
    uint8 x1;
    .......
    uint8 xn;
};

extern uint8 var1;

void func1(void);

//file1.c
#include "file1_pub.h"

void func1(void)
{
    ......
}

//file2.c
#include "file1_pub.h"

void func2(void)
{
    ......
    func1();
    ....
}

评分

参与人数 1威望 +1 收起 理由
qiqiangguo + 1 C还没看所以还有点没整明白,谢谢大侠。看.

查看全部评分

16777216 发表于 2013-10-26 10:56 | 显示全部楼层
一个.c对应一个.h

//led.h
#ifndef  __LED_H__
#defien __LED_HH__
函数申明
变量申明
#endif

//led.c
#include "led.c"
#include "sys.h"//sys.h可以改为<reg52.h>系统相关头文件
#include "其他头文件"
函数

//man.c
#include "led.h"
#include "sys.h"
main()
{
led_fun();

}


江枫渔火 发表于 2013-10-26 12:02 | 显示全部楼层
撸主 ,打开百度首页,切换到谷歌拼音输入法,然后在页面中间的框里,输入 “C 语言 模块化”,网速好的话,马上就能看到你想了解的知识,网速差的话,请耐心等待百度给你反馈~
 楼主| qiqiangguo 发表于 2013-10-26 19:55 | 显示全部楼层
16777216 发表于 2013-10-26 10:56
一个.c对应一个.h

//led.h

    谢谢支招,看到好多资料上面介绍的主流方式好像有点不同,待找本书仔细看看,然后试验下~~~可惜没得积分;P   再次谢!
 楼主| qiqiangguo 发表于 2013-10-26 19:56 | 显示全部楼层
江枫渔火 发表于 2013-10-26 12:02
撸主 ,打开百度首页,切换到谷歌拼音输入法,然后在页面中间的框里,输入 “C 语言 模块化”,网速好的话 ...

  哈哈,一开始也是问度娘,关键字不合理,所以。。。。。。谢谢!
16777216 发表于 2013-10-26 20:06 | 显示全部楼层
qiqiangguo 发表于 2013-10-26 19:55
谢谢支招,看到好多资料上面介绍的主流方式好像有点不同,待找本书仔细看看,然后试验下~~~可惜没得 ...

最好的方法也是最快的方法就是找个工程看看就好了
金沙滩单片机 (51的) 里面有讲到  综合提高章节  电驴有下载的
 楼主| qiqiangguo 发表于 2013-10-26 20:38 | 显示全部楼层
dwh000 发表于 2013-10-26 16:18
include .c文件的方式不推荐!

谢谢提醒了,确实好多朋友都是这样建议的!
 楼主| qiqiangguo 发表于 2013-10-26 20:45 | 显示全部楼层
16777216 发表于 2013-10-26 20:06
最好的方法也是最快的方法就是找个工程看看就好了
金沙滩单片机 (51的) 里面有讲到  综合提高章节  电驴 ...

    感觉很多时候方法比投入的时间和精力要重要得多,谢谢指点
16777216 发表于 2013-10-26 21:05 | 显示全部楼层
qiqiangguo 发表于 2013-10-26 20:45
感觉很多时候方法比投入的时间和精力要重要得多,谢谢指点

woshixinshou 发表于 2013-10-26 21:25 | 显示全部楼层
一个C文件包含一个H文件
每个H文件包含includes.h文件
includes.h文件包含Mcu相关H文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部