打印

菜鸟问一个很幼稚的问题

[复制链接]
3295|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vcfeng320|  楼主 | 2014-11-26 20:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是菜鸟,刚接触单片机,照着例题做的,程序编译没问题,0错误,0警告。但下载就出现3个警告,麻烦大牛们告诉我什么?我已经做好被大牛们板砖了,流水灯的实验
Build target 'Target 1'
assembling STARTUP.A51...
linking...
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  _DELAY10MS
    MODULE:  main.obj (MAIN)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  _DELAY10MS
    MODULE:  main.obj (MAIN)
    ADDRESS: 001BH
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  _DELAY10MS
    MODULE:  main.obj (MAIN)
    ADDRESS: 0042H
Program Size: data=10.0 xdata=0 code=84
"pro" - 0 Error(s), 3 Warning(s).

相关帖子

沙发
dirtwillfly| | 2014-11-26 20:28 | 只看该作者
这不是下载时的错误,是连接时的

使用特权

评论回复
板凳
dirtwillfly| | 2014-11-26 20:29 | 只看该作者
是不是没用extern声明这个函数

使用特权

评论回复
地板
diweo| | 2014-11-27 08:16 | 只看该作者
没找到DELAY10MS()这个函数。

使用特权

评论回复
5
vcfeng320|  楼主 | 2014-11-27 09:09 | 只看该作者
#define GPIO_LED P2
void Delay10ms(unsigned int);
void main(void)
{
  unsigned char n;
  GPIO_LED=0x01;
  while(1)
  {
   for(n=0;n<7;n++)
  {
   GPIO_LED=_crol_(GPIO_LED,1);
   Delay10ms(50);
  }
   for(n=0;n<7;n++)
  {
   GPIO_LED=_cror_(GPIO_LED,1);
   Delay10ms(50);
  }
  }
  }
这是程序,没错误啊,怎么就连不上呢?

使用特权

评论回复
6
vcfeng320|  楼主 | 2014-11-27 09:12 | 只看该作者
#include<reg51.h>
#include<intrins.h>
#define GPIO_LED P2
void Delay10ms(unsigned int);
void main(void)
{
  unsigned char n;
  GPIO_LED=0x01;
  while(1)
  {
   for(n=0;n<7;n++)
  {
   GPIO_LED=_crol_(GPIO_LED,1);
   Delay10ms(50);
  }
   for(n=0;n<7;n++)
  {
   GPIO_LED=_cror_(GPIO_LED,1);
   Delay10ms(50);
  }
  }
  }
是这个少发了2条

使用特权

评论回复
7
ayb_ice| | 2014-11-27 09:36 | 只看该作者
这比错误还严重,根本没有这些函数

使用特权

评论回复
8
ningling_21| | 2014-11-27 09:41 | 只看该作者
vcfeng320 发表于 2014-11-27 09:09
#define GPIO_LED P2
void Delay10ms(unsigned int);
void main(void)

void Delay10ms(unsigned int)

这个函数只有声明,没有定义...

使用特权

评论回复
9
vcfeng320|  楼主 | 2014-11-27 10:00 | 只看该作者
ayb_ice 发表于 2014-11-27 09:36
这比错误还严重,根本没有这些函数

牛人不是啊,我发的是第二条程序,那条是我复制的时候漏了,但我运行的的时候是完整的程序,就出现了连不上的问题,关键是我以前实验过可以运行的程序也连不好了,昨天郁闷了一晚上,望牛人指导哈

使用特权

评论回复
10
ayb_ice| | 2014-11-27 10:05 | 只看该作者
vcfeng320 发表于 2014-11-27 10:00
牛人不是啊,我发的是第二条程序,那条是我复制的时候漏了,但我运行的的时候是完整的程序,就出现了连不 ...

有声明这些函数,但没有函数实体,库和源文件都没有实体

使用特权

评论回复
11
vcfeng320|  楼主 | 2014-11-27 10:06 | 只看该作者
ningling_21 发表于 2014-11-27 09:41
void Delay10ms(unsigned int)

这个函数只有声明,没有定义...

我是按照书上的写的,是第二条,第一条是我复制的时候漏了,昨天按照例题写了二个程序,第一个可以运行正常,第二个就运行不了了,然后再反过来运行以前的也运行不了了,很是郁闷,我是纯菜鸟,脸皮厚就不怕你们这些牛人笑话了,希望牛人指导!

使用特权

评论回复
12
wangpeng59| | 2014-11-27 10:10 | 只看该作者
你只有这一个.c文件吗?如果是的话,没有Delay10ms(50)这个函数的具体内容啊

使用特权

评论回复
13
vcfeng320|  楼主 | 2014-11-27 10:14 | 只看该作者
wangpeng59 发表于 2014-11-27 10:10
你只有这一个.c文件吗?如果是的话,没有Delay10ms(50)这个函数的具体内容啊

这个程序就这一个.c文件,那为什么我反过头来运行以前可以运行的程序也运行不了了呢?就在写这个程序之前是可以运行的啊!

使用特权

评论回复
14
衰不堪言| | 2014-11-27 11:35 | 只看该作者
同为菜鸟
你的整个程序了没有对void Delay10ms(unsigned int)的定义,只有开头那部分的声明啊

使用特权

评论回复
15
ningling_21| | 2014-11-27 13:00 | 只看该作者
vcfeng320 发表于 2014-11-27 10:06
我是按照书上的写的,是第二条,第一条是我复制的时候漏了,昨天按照例题写了二个程序,第一个可以运行正 ...

你最好把这个函数的函数体也复制过来,让编译器能编译通过

使用特权

评论回复
16
vcfeng320|  楼主 | 2014-11-27 16:38 | 只看该作者
ningling_21 发表于 2014-11-27 13:00
你最好把这个函数的函数体也复制过来,让编译器能编译通过

牛人就是牛人,是这么回事,可是没有这个函数体

使用特权

评论回复
17
vcfeng320|  楼主 | 2014-11-27 16:40 | 只看该作者
衰不堪言 发表于 2014-11-27 11:35
同为菜鸟
你的整个程序了没有对void Delay10ms(unsigned int)的定义,只有开头那部分的声明啊 ...

你说的确实对,我问了某宝的卖家,确实跟你说的一样

使用特权

评论回复
18
vcfeng320|  楼主 | 2014-11-27 18:49 | 只看该作者
卖家给我发了个延时函数的原型,下面8个小灯全亮数字显示为8,警告倒是没有了,
void Delay10ms(unsigned int c)
     {
       unsigned  char a,b;
        for(;c>0;c--)
      {
             for (b-36;b>0;b--)
         {
                 
                  for(a=130;a>0;a--);
     }         }
    }

使用特权

评论回复
19
vcfeng320|  楼主 | 2014-11-27 18:51 | 只看该作者
就是这样

0072cb54eb307cf55039f3a442c5dd11.jpg (69.03 KB )

0072cb54eb307cf55039f3a442c5dd11.jpg

使用特权

评论回复
20
vcfeng320|  楼主 | 2014-11-27 19:57 | 只看该作者
ningling_21 发表于 2014-11-27 13:00
你最好把这个函数的函数体也复制过来,让编译器能编译通过

牛人,问题解决了,确实是您所说的那个,不过我想问下
void Delay10ms(unsigned int c)
{
    unsigned char a,b;
    for(;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
为什么b=38 a=120?有什么依据吗?

使用特权

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

本版积分规则

2

主题

24

帖子

0

粉丝