打印

函数调用问题

[复制链接]
2180|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
weilj123|  楼主 | 2010-4-11 17:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个程序里存在两个C文件.如:MASTER.C和EEPROM.C
在MASTER.C中有如下函数调用:
#define Sector1_ADDR 0x1000
uchar E2prom[5];
EEPROM_Byte_Read(5,Sector1_ADDR,E2prom);

在EEPROM.C
void EEPROM_Byte_Read(uint Len,uint Address,uchar *EEp)
以上处理,但是无法成功.
什么都不更改,只是将void EEPROM_Byte_Read(uint Len,uint Address,uchar *EEp)移到MASTER.C就成功.不知道是怎么回事,请各位大哥指点指点,不胜感激.

相关帖子

沙发
NE5532| | 2010-4-11 17:59 | 只看该作者
做外部声明了没?

使用特权

评论回复
板凳
weilj123|  楼主 | 2010-4-11 18:07 | 只看该作者
肯定申明了,还做了一个头文件:
#ifndef __EEPROM_H__
#define __EEPROM_H__
extern void EEPROM_Byte_Write(uint Len,uint Address,uchar *EEp);
#endif

使用特权

评论回复
地板
weilj123|  楼主 | 2010-4-11 18:07 | 只看该作者
真不知道哪里的问题,找了很久了?

使用特权

评论回复
5
weilj123|  楼主 | 2010-4-11 18:09 | 只看该作者
E2prom数组是定义的全局变量

使用特权

评论回复
6
NE5532| | 2010-4-11 18:10 | 只看该作者
你的无法成功指的是什么?

使用特权

评论回复
7
weilj123|  楼主 | 2010-4-11 18:26 | 只看该作者
warning C206 missing function - prototype
warning C267 requires ansi-style prototype
说明是我没有申明,和函数没有定义:

使用特权

评论回复
8
weilj123|  楼主 | 2010-4-11 18:28 | 只看该作者
#include "EEPROM.h"
#include <STC12C2052AD.H>
#include <string.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include <math.h>

#define  uchar     unsigned char
#define  u_char    unsigned char
#define  u_short   unsigned short
#define  uint      unsigned int
#define  u_int     unsigned int
#define  u_long    unsigned long

uchar  idata  E2prom[5];

void main(void)
{
        uchar Delay_Flag;
                uchar   i;
        SYS_init();
        Delay_Flag = 1;
        while(Delay_Flag)
        {
                for(i = 0;i<250;i++)
                {
                        EEPROM_Byte_Read(5,0x1000,E2prom);
//                        EEPROM_Byte_Write(5,Sector1_ADDR,E2prom);
//                        EEPROM_Sector_Erase(Sector1_ADDR);
                }
    }

使用特权

评论回复
9
weilj123|  楼主 | 2010-4-11 18:28 | 只看该作者
#ifndef __EEPROM_H__
#define __EEPROM_H__

#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int

#define Sector1_ADDR 0x1000                //定义扇区1的初始地址
#define Sector2_ADDR 0x1200                //定义扇区2的初始地址

#define CMD_READ        1
#define CMD_WRITE        2
#define CMD_ERASE        3

#define Enable_Wait        0x82

extern void EEPROM_Byte_Write(uint Len,uint Address,uchar *EEp);
extern void EEPROM_Byte_Write(uint Len,uint Address,uchar *EEp);
extern void EEPROM_Sector_Erase(uint Address);
#endif

使用特权

评论回复
10
weilj123|  楼主 | 2010-4-11 18:28 | 只看该作者
EEPROM.C就是这个函数了

使用特权

评论回复
11
weilj123|  楼主 | 2010-4-11 18:49 | 只看该作者
靠,找到了,
extern void EEPROM_Byte_Write(uint Len,uint Address,uchar *EEp);
extern void EEPROM_Byte_Write(uint Len,uint Address,uchar *EEp);
一样的了,低级错误

使用特权

评论回复
12
handle09| | 2010-4-12 09:36 | 只看该作者
呵呵 同情楼主了

使用特权

评论回复
13
ym2008| | 2010-4-12 10:45 | 只看该作者
经验之谈

使用特权

评论回复
14
peigang| | 2010-4-12 12:56 | 只看该作者
外部声明占用地址空间吗

使用特权

评论回复
15
liuzenglong| | 2010-4-12 13:00 | 只看该作者
呵呵

使用特权

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

本版积分规则

29

主题

126

帖子

0

粉丝