| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1467 人关注过本帖
标题:大神 帮忙解决下c函数里代码的重用问题
只看楼主 加入收藏
雷江
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-4-7
收藏
 问题点数:0 回复次数:10 
大神 帮忙解决下c函数里代码的重用问题
求助 本人在使用一个软件编程时(51单片机) 想把程序模块化处理 结果总是各种重复定义 未定义 以及打开.c文件失败之类的错误
请有经验的大神帮忙 我该怎么编写底层函数 .h和.c 文件里如何编写 错误才最少呢

下面是我的函数:
运行结果总是各种未定义 求大神帮帮忙  主函数我还没弄

//Timer.c 文件函数
#include <reg52.h>
#include "MACROANDCONST1.h"

#define LED P1
#define LED_ON() LED=0x00;
#define LED_OFF() LED=0xff;

#define LED_PWM_LIMIT_MAX 99
#define LED_PWM_LIMIT_MIN 0

static uint8 s_u8TimCounter=0;
static uint8 s_u8LedDirection=0;
static int8 s_u8LedPWNCounter=0;

void Timer0Init(void)
{
    TMOD&=0xf0;
    TMOD|=0x01;
    TH0=0xff;
    TL0=0x47;
    TR0=1;
    ET0=1;

    }
void Time0Isr(void) interrupt 1
{
    static int8 s_s8PWMCounter=0;
    TH0=0xf0;
    TL0=0x47;
   
    if(s_u8TimeCounter++>=100)
    {
        s_u8TimeCounter=0;
        if((s_s8LedPWMCounter<=LED_PWM_LIMIT_MAX)&&(0==s_u8LedDirection))
        {
            s_s8LedPWMCounter++;
            if(s_s8LedPWMCounter>LED_PWM_LIMIT_MAX)
            {
                s_u8LedDirection=1;
                s_s8LedPWMCounter=LED_PWM_LIMIT_MAX;
                }
             }
        if((s_s8LedPWMCounter>=LED_PWM_LIMIT_MIN)&&(1==s_u8LedDirection))
        {
            s_s8LedPWMCounter--;
            if(s_s8LedPWMCounter<LED_PWM_LIMIT_MIN)
            {
                s_u8LedDirection=0;
                s_s8LedPWMCounter=LED_PWM_LILMIT_MIN;
                }
                }
            s_s8PWMCounter=s_s8LedPWMCounter;
            }
        if(s_s8PWMCounter>0)
        {
            LED_ON();
            s_s8PWMCounter--;
            }
          else
          {
          LED_OFF();
          }
         }


//MacroAndConst.h文件函数:
#ifndef _MACRO_AND_CONST_H_
#define _MACRO_AND_CONST_H_

typedef unsigned int uint16;
typedef unsigned int UINT;
typedef unsigned int uint;
typedef unsigned int UINT16;
typedef unsigned int word;
typedef unsigned int WORD;
typedef int             int16;
typedef int             INT16;
typedef unsigned long uint32;

typedef unsigned long UINT32;
typedef unsigned long DWORD;
typedef unsigned long dword;
typedef long           int32;
typedef long            INT32;
typedef signed char   int8;
typedef signed char   INT8;
typedef unsigned char byte;
typedef unsigned char BYTE;
typedef unsigned char uchar;
typedef unsigned char UINT8;
typedef unsigned char uint8;
typedef unsigned char BOOL;

#endif



[ 本帖最后由 雷江 于 2013-4-8 00:04 编辑 ]
搜索更多相关主题的帖子: 软件编程 include 如何 
2013-04-07 08:31
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
这个议题太大了吧?

你这个问题,我觉得就跟怎么生活才幸福是一个类型的,尼玛,没法说啊

[ 本帖最后由 peach5460 于 2013-4-7 09:56 编辑 ]

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-07 09:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
平时不学习、不训练,做综合性课题时知道麻烦大了吧。满足于做点对点习题的学生要引以为戒了。

授人以渔,不授人以鱼。
2013-04-07 13:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
写程序,谁都是祈求只写一次,不要做重复劳动,代码的可重用性不好,自己看着都不舒服,不解决这种问题,越写得多,类似功能的代码段版本越多,越不知怎么整理和该重用哪个。看坛上的学生,冒泡和求最大值之类的函数,写了一次又一次,把所有功能代码都挤在main()中,即使写了一点函数,分解也不科学,都不知道怎么从来没人教的。

楼主有这个意识,其实是很难得的,总算是写过一大批代码的人,才会意识到这个问题。那些只求混文凭的,绝对没这种觉悟。

[ 本帖最后由 TonyDeng 于 2013-4-7 13:48 编辑 ]

授人以渔,不授人以鱼。
2013-04-07 13:45
雷江
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-4-7
收藏
得分:0 
回复 2楼 peach5460
现在我遇到的这个问题 怎么说呢 其实就是头文件不会写 反复的查找资料我还是没有头绪 这方面的内容课堂上几乎没讲过 现在面临一些复杂的 近千行的代码很无奈啊
2013-04-07 23:00
雷江
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-4-7
收藏
得分:0 
回复 4楼 TonyDeng
是啊 我现在大三 是真心想做点东西 马上就快毕业了 也不打算考研 真心觉得大学里不自己做点东西 真的是在浪费生命啊
 非常感谢你 无论怎么说
2013-04-07 23:03
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
你这是在C板块,我不太知道怎么说。如果是C++的话,面向对象有开放封闭选择,单一职责,里氏替换原则等等六大原则。写代码的时候尽量设计得低藕内聚,这是一个长期的积累过程!

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-08 06:22
小xiong
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:388
专家分:1722
注 册:2013-2-8
收藏
得分:0 
对。高内聚,对外地接口尽量少
头文件写的时候加个防重包含,需要被外调用的,东西就放头文件里,
2013-04-08 11:00
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
头文件并不重要,头文件只是“头”的一个微小部分,头中的代码实现模块才是重点,这就是模块化设计的概念,要管理组织好代码,依据不同的功能划分模块,封闭管理,头文件只是这些模块向外公开的接口声明,模块做好了,头文件是自然就有的。

授人以渔,不授人以鱼。
2013-04-08 11:03
雷江
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-4-7
收藏
得分:0 
回复 9楼 TonyDeng
您说的不错 可是现在我的问题就在这里 编译后很多变量没有定义 这是头文件的问题 程序中MacroAndConst.h是做好的一些变量形式的声明 我在Timer里调用是没有成功的 这到底是怎么回事呢
2013-04-08 11:23
快速回复:大神 帮忙解决下c函数里代码的重用问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015917 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved