找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划

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

查看数: 1784 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-10-25 22:18

正文摘要:

        小弟初学单片机(89SC52)不久,因为一直看资料都是一个.c的程序在那里编译仿真实验。今天突然想了解下多个.c是如何在一个主程序里面执行的,感觉上是像原理图的子程序一样的模式,也看 ...

回复

timerc 发表于 2014-5-29 17:28
写个delay.h文件* o) O+ E3 Q' P
#ifndef  DELAY_H
2 C( }( k6 A8 T4 ^#define DELAY_H
2 T+ ?8 ?. F8 K; }$ Mvoid delay(void);9 i& O& |8 p4 U2 k: \
#endif3 m5 t1 L& U- [, s- Z

# T' R3 e9 L3 `* C! b然后在main.c里面增加#include "delay.h"
+ W) f) `' B- q# L, Q8 |delay.c   delay.h   和main.c要放在同一个目录下就可以了
qiqiangguo 发表于 2014-5-28 21:41
    谢谢仁兄@好长时间没玩,什么都忘了 @迷茫啊
白水开 发表于 2014-4-12 13:09
要想让主函数调用其余。C文件的函数首先要包含他的头文件1 P4 f! D; D6 t' U
例如#include<xxxx.h>不可以是#include<xxxx.c>
  @* [! E7 H8 n.h文件中包含的是这个对应的.c文件的        1、宏定义2、函数声明这两项。4 s( w6 T/ B$ _' E+ g( ?
其中宏定义有两个  1、条件编译 2、对其他的常量进行宏定义。
( i8 k  N1 H8 I函数声明你应该是明白的。
, C% a$ w7 V7 u2 o- n6 ~我附一张图片,你看一下这是我的整体架构,希望对你有帮助
& H. ~( _. T: M- a) Q, v
天才小痴 发表于 2013-11-28 18:23
qiqiangguo 发表于 2013-11-26 22:21* d  C/ B1 P$ J# n
呵呵,谢谢。这种做法也行,好像实际应用不大被提倡~~

, D; z& w/ _% D! p8 m! N8 Q: c此方法对初学者来讲,一般是不用这样的,我们都是会做一个include.h档,而且一般也不会用KEIL里写程序,一般都是Source Insight 里写程序,再写个makefile,调用KEIL来编译!

QQ图片20131128182240.jpg (244.84 KB, 下载次数: 0)

QQ图片20131128182240.jpg
qiqiangguo 发表于 2013-11-26 22:21
天才小痴 发表于 2013-11-15 01:30+ @. X) y" c4 I$ [+ R
.c档是不用#include"xx.c"的声明的,但在主函数里你要作$ y7 c$ f; B, G' x& a* w8 {
extern void dealy(void);5 ~) T4 p+ k6 P' U" N
extern void left3(vo ...
, O% a; l5 ?$ e1 E+ c
  呵呵,谢谢。这种做法也行,好像实际应用不大被提倡~~
qiqiangguo 发表于 2013-11-26 22:20
kaizhu1986 发表于 2013-11-8 15:28
% w$ N; l3 }( }4 {7 \6 r楼主跟我一样,做LYOUT,学单片机,我也不太懂,你我觉得multi c file.c、delay.c  、left3.c这几个相当于 ...
* S2 y- R5 N+ N+ V
    LAYOUT不好玩呀,可是单片机这东西似乎需要足够的时间和精力持之以恒的来学习的,嗨 有空的时候玩玩,隔了段时间又差不多忘记完了。至于这个模块化的问题,查了点资料,感觉最靠谱的还是每个.C的子文件再建一个.H的头文件对变量和接口参数进行说明这种做法是最被推荐的,因为现在一下子在电脑里找不到这个实验的文件了,所以无法附上@等啥时候找到再贴出来大家指点,谢!
天才小痴 发表于 2013-11-15 01:30
.c档是不用#include"xx.c"的声明的,但在主函数里你要作
) v6 k  \( A1 y9 v# ]/ o- mextern void dealy(void);
0 g: c' P8 z, O" Z6 ]extern void left3(void);
. q9 |- e8 W$ B6 f$ v8 ^的声明,全局函数,这样主函数才能调用到它!
guodebin 发表于 2013-11-11 12:17
主含数前声明"extern "
guodebin 发表于 2013-11-11 12:12
包含进来.
kaizhu1986 发表于 2013-11-8 15:28
楼主跟我一样,做LYOUT,学单片机,我也不太懂,你我觉得multi c file.c、delay.c  、left3.c这几个相当于库里面的器件,你在MAIN函数前有INCLUDE已经把他们调用进来了,至于要不要添加到source.Group里,你可以试一下,顺便告诉我下,谢谢楼主,多分享些心得,我们一起进步
关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-2 06:47 , Processed in 0.061017 second(s), 36 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表