找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12326|回复: 69
打印 上一主题 下一主题
收起左侧

一个LED灯闪灭的程序,错在哪里

  [复制链接]
跳转到指定楼层
楼主
#include <reg51.h>          
void delay(unsigned int i);  
void main()
{
        while(1)
        {
                P2  = 0x00;
                delay(600);
                P2  = 0xff;
                delay(600);
        }
}
void delay(unsigned int i)
{
        unsigned char j;
        for(i; i > 0; i--)  
                for(j = 255; j > 0; j--);
}
输出以下
Build target 'Target 1'
assembling STARTUP.A51...
compiling led2.c...
linking...
BL51 BANKED LINKER/LOCATER V6.22 - SN: K1RMC-724WNC
COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2009
*** ERROR: COMMAND-FILE 'led' NOT FOUND
Target not created
错在哪里哇
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:64832 发表于 2014-8-7 13:15 | 只看该作者
void delay(unsigned int i)
{
        unsigned char j;
        for(i; i > 0; i--)  
                for(j = 255; j > 0; j--);
}




这一段有问题


void delay(unsigned int x)
{
        unsigned char i,j;
        for(i; i > 0; i--)  
                for(j = 255; j > 0; j--);
}
这样就ok啦

评分

参与人数 1威望 +20 黑币 +25 收起 理由
admin + 20 + 25 很给力!

查看全部评分

回复

使用道具 举报

板凳
ID:64575 发表于 2014-8-7 13:45 | 只看该作者
delay函数里
回复

使用道具 举报

地板
ID:64755 发表于 2014-8-7 17:26 | 只看该作者
dingygc 发表于 2014-8-7 13:15
void delay(unsigned int i)
{
        unsigned char j;

Build target 'Target 1'
assembling STARTUP.A51...
compiling led2.c...
LED2.C(13): warning C280: 'x': unreferenced local variable
linking...
BL51 BANKED LINKER/LOCATER V6.22 - SN: K1RMC-724WNC
COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2009
*** ERROR: COMMAND-FILE 'led' NOT FOUND
Target not created
回复

使用道具 举报

5#
ID:62819 发表于 2014-8-7 18:23 | 只看该作者
程序没有问题,

无标题.png (25.49 KB, 下载次数: 154)

无标题.png
回复

使用道具 举报

6#
ID:62819 发表于 2014-8-7 18:24 | 只看该作者
回复

使用道具 举报

7#
ID:51090 发表于 2014-8-7 20:20 来自手机 | 只看该作者
zycheng 发表于 2014-8-7 13:45
delay函数里

zychen 大牛说的对,就是这个问题
回复

使用道具 举报

8#
ID:19715 发表于 2014-8-7 20:29 | 只看该作者
程序没有错误
回复

使用道具 举报

9#
ID:64755 发表于 2014-8-8 09:28 | 只看该作者

求改正
回复

使用道具 举报

10#
ID:63752 发表于 2014-8-8 09:58 | 只看该作者

学习学习~~
回复

使用道具 举报

11#
ID:64794 发表于 2014-8-8 22:36 | 只看该作者
传递函数i 没有过度函数
回复

使用道具 举报

12#
ID:63839 发表于 2014-8-21 12:03 | 只看该作者
dingygc 发表于 2014-8-7 13:15
void delay(unsigned int i)
{
        unsigned char j;


void delay(unsigned int x)
{
         unsigned char j;
         for(i=x; i > 0; i--)  
                 for(j = 255; j > 0; j--);
}
这样才对

评分

参与人数 1威望 +20 黑币 +20 收起 理由
admin + 20 + 20

查看全部评分

回复

使用道具 举报

13#
ID:63839 发表于 2014-8-21 12:04 | 只看该作者
yang0011102 发表于 2014-8-7 17:26
Build target 'Target 1'
assembling STARTUP.A51...
compiling led2.c...

void delay(unsigned int x)
{
         unsigned char j;
         for(i=x; i > 0; i--)  
                 for(j = 255; j > 0; j--);
}
这样才对
回复

使用道具 举报

14#
ID:63839 发表于 2014-8-21 12:04 | 只看该作者

void delay(unsigned int x)
{
         unsigned char j;
         for(i=x; i > 0; i--)  
                 for(j = 255; j > 0; j--);
}
回复

使用道具 举报

15#
ID:63839 发表于 2014-8-21 12:05 | 只看该作者

void delay(unsigned int x)
{
         unsigned char j;
         for(i=x; i > 0; i--)  
                 for(j = 255; j > 0; j--);
}
回复

使用道具 举报

16#
ID:58502 发表于 2014-8-21 12:29 | 只看该作者
本帖最后由 liaolinhui 于 2014-8-21 12:48 编辑

程序没有问题,说延时函数有问题的人也不怎么懂,void delay(unsigned int i)这句可以直接给 i 赋值的,i 称为delay的形参,当用delay(600)这样的语句调用delay函数时,会自动给 i 赋值为600,不需要再定义一个x,再让i=x没那必要,看你的错误提示应该是文件led不存在,你要把文件保存为led.c文件再把文件添加到工程,列如5楼的工程左边哪里就是加了个1.c文件,又或者是你写好程序了,没保存一下

评分

参与人数 1威望 +10 黑币 +10 收起 理由
admin + 10 + 10

查看全部评分

回复

使用道具 举报

17#
ID:58502 发表于 2014-8-21 12:34 | 只看该作者
本帖最后由 liaolinhui 于 2014-8-21 12:36 编辑

我把代码复制过来了,完全没问题
创建目标 '目标 1'
PA51汇编 STARTUP.A51 ...
编译 1.c ...
连接 ...
Program Size: data=9.0 xdata=0 code=58
创建 HEX 文件 "1" ...
"1" - 0 个错误, 0 个警告。

1.JPG (103.33 KB, 下载次数: 163)

1.JPG
回复

使用道具 举报

18#
ID:58502 发表于 2014-8-21 12:39 | 只看该作者
给你看一下我实验板上的程序,跟你的一样。

/**************************************************************************************
*                              LED闪烁的简单试验                                                                                                  *
*       
*     连接方法: JP11(P2)和JP1用8PIN排线连接起来                                                                      *
*                                                                                                                                                                          *
***************************************************************************************/

#include <reg51.h>           //此文件中定义了51的一些特殊功能寄存器

void delay(unsigned int i);  //声明延时函数

main()
{
   
  P2  = 0x00; //置P0口为低电平
  
  delay(600); //调用延时程序

  P2  = 0xff; //置P0口为高电平
  

  delay(600); // 调用延时程序


}

/*******延时函数*************/
void delay(unsigned int i)
{
    unsigned char j;
    for(i; i > 0; i--)   //循环 600*255 次
        for(j = 255; j > 0; j--);
}











评分

参与人数 1威望 +10 黑币 +10 收起 理由
admin + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

19#
ID:64810 发表于 2014-8-21 14:25 | 只看该作者
*** ERROR: COMMAND-FILE 'led' NOT FOUND--错误提示没找到led文件,查看下keil创建程序的步骤对不对,保存路径对不对
回复

使用道具 举报

20#
ID:44262 发表于 2014-8-21 22:21 来自手机 | 只看该作者
看你们讨论得热火朝天 气氛很不错 ,让我学到了很多知识 谢谢!
回复

使用道具 举报

21#
ID:65588 发表于 2014-8-29 19:26 | 只看该作者
学习啦!!!!!!
回复

使用道具 举报

22#
ID:65642 发表于 2014-8-31 21:41 | 只看该作者
delay函数里面的char形变量改成int型就行了

评分

参与人数 1威望 +30 黑币 +30 收起 理由
admin + 30 + 30 帮助他人的积分奖励

查看全部评分

回复

使用道具 举报

23#
ID:65691 发表于 2014-9-2 06:36 | 只看该作者
呵呵和我一样,新手
回复

使用道具 举报

24#
ID:64810 发表于 2014-9-2 17:16 | 只看该作者
没有导入C文件,
回复

使用道具 举报

25#
ID:26218 发表于 2014-9-3 22:00 | 只看该作者
程序没问题不代表执行结果是你想要的,12#正解
回复

使用道具 举报

26#
ID:65769 发表于 2014-9-3 22:03 | 只看该作者
C文件   没有保存  好像是这样
回复

使用道具 举报

27#
ID:57187 发表于 2014-9-4 02:04 来自手机 | 只看该作者
程序没有问题程序
回复

使用道具 举报

28#
ID:65837 发表于 2014-9-5 15:39 | 只看该作者
i没置数啊

评分

参与人数 1威望 +45 黑币 +45 收起 理由
admin + 45 + 45 回帖助人的积分奖励!!

查看全部评分

回复

使用道具 举报

29#
ID:63275 发表于 2014-9-13 23:35 | 只看该作者
学习了,要上机试下。
回复

使用道具 举报

30#
ID:65425 发表于 2014-9-18 11:59 | 只看该作者
延时函数需要声明
回复

使用道具 举报

31#
ID:65425 发表于 2014-9-18 12:02 | 只看该作者
向前看zk 发表于 2014-9-18 11:59
延时函数需要声明

看错,不好意思
回复

使用道具 举报

32#
ID:66511 发表于 2014-9-22 19:46 | 只看该作者
学习学习~~
回复

使用道具 举报

33#
ID:66511 发表于 2014-9-22 19:47 | 只看该作者
学习学习~~
回复

使用道具 举报

34#
ID:66729 发表于 2014-9-27 21:35 | 只看该作者
看不明白,但不是要学学
回复

使用道具 举报

35#
ID:66837 发表于 2014-9-30 08:27 | 只看该作者
把delay(600)改成60000,delay这么写也行
void delay(unsigned int i)
{
         for(; i > 0; i--);  
  }
或者说在主函数里定义个i,把delay换掉,直接写个for(i=0;i<60000;i++);也可以
回复

使用道具 举报

36#
ID:66840 发表于 2014-9-30 12:55 | 只看该作者
void delay(unsigned int i)
{
        unsigned char j;
        for(i; i > 0; i--)  
                for(j = 255; j > 0; j--);
}
i没有给值。for(i=10;i>0;i--)
回复

使用道具 举报

37#
ID:66467 发表于 2014-10-1 05:21 | 只看该作者
可以试试把延迟函数改一下
回复

使用道具 举报

38#
ID:66964 发表于 2014-10-5 08:13 | 只看该作者
延迟函数
回复

使用道具 举报

39#
ID:66965 发表于 2014-10-5 10:19 | 只看该作者
void delay(unsigned int i)
{
         unsigned char j;
         for(i; i > 0; i--)  
                 for(j = 255; j > 0; j--);
}


这一段,把 i 删除也可以的,就这样就行了。 for(    ; i > 0; i--)  
回复

使用道具 举报

40#
ID:66968 发表于 2014-10-5 13:13 | 只看该作者
yezio 发表于 2014-10-5 10:19
void delay(unsigned int i)
{
         unsigned char j;

用  
void delayms(unsigned char x )

     while(x--);

更简单
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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