lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:1894回复:6

c51请教

楼主#
更多 发布于:2005-02-17 22:48
在一个项目下的几个.c文件声明的函数和变量比如 x5045cs 、x5045clk、zlg7289cs等等及其在各自.c(x5045.c、zlg7289.c)声明的函数在主程序文件main.c中调用还要在声明一次吗?
我在main.c用中断函数调用zlg7289.c中的函数和改变 zlg7289cs=0;时编译器却说没有声明!
void ISR_key(void) interrupt 0 using 3
 {
   uint keynub=0;
   EA=0;//
     ZLG7289_CS=0;//此处往后在main.c中就不认识了。
   delay_short();//都已在zlg7289.c中声明了
   wrDis_play(0x15);
   delay_short();
   keynub=read_key();
   ZLG7289_CS=1;
   switch(keynub)
   {。。。;
   }
请高手指教!

[编辑 -  2/17/05 by  lzl]
l=z=l 我听说,灌水是使分数快速增长的有效方法
stevenDriver
驱动牛犊
驱动牛犊
  • 注册日期2005-02-18
  • 最后登录2005-02-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-18 16:10

  
  
   你要引用过来阿.

   你只需要引用就可以了.
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-18 16:47
如何引用?
l=z=l 我听说,灌水是使分数快速增长的有效方法
smallant
驱动牛犊
驱动牛犊
  • 注册日期2005-01-16
  • 最后登录2005-04-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-02-19 11:24
用Extern引用
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-02-19 19:07
函数我是这么做的,但变量太多,麻烦。我将它直接改为头文件,包含进去了,这样做,有不妥的地方吗?

我发现我编的中断程序,在调用该头文件的函数时,进不去。中断后乱跑。不知为何?
l=z=l 我听说,灌水是使分数快速增长的有效方法
lbcat
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2007-09-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-02-21 11:44
每个.c文件都是独立的,你要调用该文件以外的函数或变量都必须先声明或包含相应的头文件~~中断后乱跑的话…………先检查一下项目中有没有包含该函数的源代码???因为只extern的话虽然能通过编译,但函数实体还是有可能不存在的~
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-02-21 21:13
单步执行时,可以跟踪到函数内部,我将那个函数声明为不可中断。
可能问题出在这里。程序还没完成,我想编一部分就调一部分。
l=z=l 我听说,灌水是使分数快速增长的有效方法
游客

返回顶部