打印
[51单片机]

多个C文件程序的处理问题讨论(欢迎大家指点)

[复制链接]
1842|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小弟初学单片机(89SC52)不久,因为一直看资料都是一个.c的程序在那里编译仿真实验。今天突然想了解下多个.c是如何在一个主程序里面执行的,感觉上是像原理图的子程序一样的模式,也看到很多网上说的,都是差不多的回答,但是没看到具体的实例,有点云里雾里。自己就整了附件所示的小程序做实验,实验倒是成功了(仿真功能实现,最多叫可能成功{:soso_e127:} ),但不知道在规范程度和流程上面以及实际运用是否合理。

延时函数.png (4.39 KB )

延时函数.png

led移位函数.png (6.86 KB )

led移位函数.png

主函数.png (9.36 KB )

主函数.png

延时函数.png (4.39 KB )

延时函数.png

led移位函数.png (6.86 KB )

led移位函数.png

主函数.png (9.36 KB )

主函数.png

程序文件.rar

1.67 KB

相关帖子

沙发
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();

}


使用特权

评论回复
5
江枫渔火| | 2013-10-26 12:02 | 只看该作者
撸主 ,打开百度首页,切换到谷歌拼音输入法,然后在页面中间的框里,输入 “C 语言 模块化”,网速好的话,马上就能看到你想了解的知识,网速差的话,请耐心等待百度给你反馈~

使用特权

评论回复
6
qiqiangguo|  楼主 | 2013-10-26 19:55 | 只看该作者
16777216 发表于 2013-10-26 10:56
一个.c对应一个.h

//led.h

    谢谢支招,看到好多资料上面介绍的主流方式好像有点不同,待找本书仔细看看,然后试验下~~~可惜没得积分;P   再次谢!

使用特权

评论回复
7
qiqiangguo|  楼主 | 2013-10-26 19:56 | 只看该作者
江枫渔火 发表于 2013-10-26 12:02
撸主 ,打开百度首页,切换到谷歌拼音输入法,然后在页面中间的框里,输入 “C 语言 模块化”,网速好的话 ...

  哈哈,一开始也是问度娘,关键字不合理,所以。。。。。。谢谢!

使用特权

评论回复
8
16777216| | 2013-10-26 20:06 | 只看该作者
qiqiangguo 发表于 2013-10-26 19:55
谢谢支招,看到好多资料上面介绍的主流方式好像有点不同,待找本书仔细看看,然后试验下~~~可惜没得 ...

最好的方法也是最快的方法就是找个工程看看就好了
金沙滩单片机 (51的) 里面有讲到  综合提高章节  电驴有下载的

使用特权

评论回复
9
qiqiangguo|  楼主 | 2013-10-26 20:38 | 只看该作者
dwh000 发表于 2013-10-26 16:18
include .c文件的方式不推荐!

谢谢提醒了,确实好多朋友都是这样建议的!

使用特权

评论回复
10
qiqiangguo|  楼主 | 2013-10-26 20:45 | 只看该作者
16777216 发表于 2013-10-26 20:06
最好的方法也是最快的方法就是找个工程看看就好了
金沙滩单片机 (51的) 里面有讲到  综合提高章节  电驴 ...

    感觉很多时候方法比投入的时间和精力要重要得多,谢谢指点

使用特权

评论回复
11
16777216| | 2013-10-26 21:05 | 只看该作者
qiqiangguo 发表于 2013-10-26 20:45
感觉很多时候方法比投入的时间和精力要重要得多,谢谢指点

使用特权

评论回复
12
woshixinshou| | 2013-10-26 21:25 | 只看该作者
一个C文件包含一个H文件
每个H文件包含includes.h文件
includes.h文件包含Mcu相关H文件

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

1

粉丝