找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16139|回复: 69
收起左侧

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

  [复制链接]
ID:64755 发表于 2014-8-7 11:56 | 显示全部楼层 |阅读模式
#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
错在哪里哇
回复

使用道具 举报

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
回复

使用道具 举报

ID:62819 发表于 2014-8-7 18:23 | 显示全部楼层
程序没有问题,
无标题.png
回复

使用道具 举报

ID:62819 发表于 2014-8-7 18:24 | 显示全部楼层
0 (2).png
回复

使用道具 举报

ID:51090 发表于 2014-8-7 20:20 来自手机 | 显示全部楼层
zycheng 发表于 2014-8-7 13:45
delay函数里

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

使用道具 举报

ID:19715 发表于 2014-8-7 20:29 | 显示全部楼层
程序没有错误
回复

使用道具 举报

ID:64755 发表于 2014-8-8 09:28 | 显示全部楼层

求改正
回复

使用道具 举报

ID:63752 发表于 2014-8-8 09:58 | 显示全部楼层

学习学习~~
回复

使用道具 举报

ID:64794 发表于 2014-8-8 22:36 | 显示全部楼层
传递函数i 没有过度函数
回复

使用道具 举报

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

查看全部评分

回复

使用道具 举报

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--);
}
这样才对
回复

使用道具 举报

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--);
}
回复

使用道具 举报

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--);
}
回复

使用道具 举报

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

查看全部评分

回复

使用道具 举报

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
回复

使用道具 举报

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 赞一个!

查看全部评分

回复

使用道具 举报

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

使用道具 举报

ID:44262 发表于 2014-8-21 22:21 来自手机 | 显示全部楼层
看你们讨论得热火朝天 气氛很不错 ,让我学到了很多知识 谢谢!
回复

使用道具 举报

ID:65588 发表于 2014-8-29 19:26 | 显示全部楼层
学习啦!!!!!!
回复

使用道具 举报

ID:65642 发表于 2014-8-31 21:41 | 显示全部楼层
delay函数里面的char形变量改成int型就行了

评分

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

查看全部评分

回复

使用道具 举报

ID:65691 发表于 2014-9-2 06:36 | 显示全部楼层
呵呵和我一样,新手
回复

使用道具 举报

ID:64810 发表于 2014-9-2 17:16 | 显示全部楼层
没有导入C文件,
回复

使用道具 举报

ID:26218 发表于 2014-9-3 22:00 | 显示全部楼层
程序没问题不代表执行结果是你想要的,12#正解
回复

使用道具 举报

ID:65769 发表于 2014-9-3 22:03 | 显示全部楼层
C文件   没有保存  好像是这样
回复

使用道具 举报

ID:57187 发表于 2014-9-4 02:04 来自手机 | 显示全部楼层
程序没有问题程序
回复

使用道具 举报

ID:65837 发表于 2014-9-5 15:39 | 显示全部楼层
i没置数啊

评分

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

查看全部评分

回复

使用道具 举报

ID:63275 发表于 2014-9-13 23:35 | 显示全部楼层
学习了,要上机试下。
回复

使用道具 举报

ID:65425 发表于 2014-9-18 11:59 | 显示全部楼层
延时函数需要声明
回复

使用道具 举报

ID:65425 发表于 2014-9-18 12:02 | 显示全部楼层
向前看zk 发表于 2014-9-18 11:59
延时函数需要声明

看错,不好意思
回复

使用道具 举报

ID:66511 发表于 2014-9-22 19:46 | 显示全部楼层
学习学习~~
回复

使用道具 举报

ID:66511 发表于 2014-9-22 19:47 | 显示全部楼层
学习学习~~
回复

使用道具 举报

ID:66729 发表于 2014-9-27 21: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++);也可以
回复

使用道具 举报

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--)
回复

使用道具 举报

ID:66467 发表于 2014-10-1 05:21 | 显示全部楼层
可以试试把延迟函数改一下
回复

使用道具 举报

ID:66964 发表于 2014-10-5 08:13 | 显示全部楼层
延迟函数
回复

使用道具 举报

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--)  
回复

使用道具 举报

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 单片机教程网

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