51单片机流水灯程序求助 点击:1910 | 回复:20



zhouls3104

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 16回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-11-30 15:29:35
楼主

我自己做了一个51单片机实验板,就P1脚8个发光LED,写了一个流水灯程序发现只能流一遍

用的是AT89C51

软件Keil

各位帮忙分析分析原因好么?




euro2008

  • 精华:4帖
  • 求助:0帖
  • 帖子:228帖 | 12358回
  • 年度积分:2963
  • 历史总积分:29795
  • 注册:2004年4月26日
发表于:2008-11-30 16:00:43
1楼
  可以到专门的电子 单片机的论坛 效果能好些

zhouls3104

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 16回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-12-01 08:32:00
2楼
谢谢euro2008 Xeuro2008
积分:6451
帖子:5627注册时间:2004-4-26 12:29:00 1楼 回复时间:2008-11-30 16:00:43

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2008-12-01 11:19:02
3楼
把你这段程序放在一个循环中间,for 或者 WHILE,具体做法看 C 语言基本语句。

zhouls3104

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 16回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-12-01 14:39:54
4楼

谢谢,不过我试了不好使,有时居然就亮了一个!!!有时候随机亮!!!

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2008-12-01 16:54:49
5楼
程序本身就是一个循环,你是怎样做的?

zhouls3104

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 16回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-12-03 09:41:40
6楼

int i,j;

while (1)

{P1=0xfe;

 for (i=0;i<6000;i++)

  { for (j=0;j<6000;j++)

   {;}

 }

P1=0xfd;

for (i=0;i<6000;i++)

{ for (j=0;j<6000;j++)

{;}

}
P1=0xfb;

for (i=0;i<6000;i++)

{ for (j=0;j<6000;j++)

{;}

}
P1=0xf7;

for (i=0;i<6000;i++)

{ for (j=0;j<6000;j++)

{;}

}

for (i=0;i<6000;i++)

{ for (j=0;j<6000;j++)

{;}

}

}

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2008-12-05 11:14:15
7楼
模拟运行程序是可以的,只是4 个灯。最后多了一组延时。

zhouls3104

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 16回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-12-05 14:21:16
8楼

我的程序烧好以后安装在我的实验板上就不好使了.请问是不是硬件哪里出了问题?

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2008-12-06 10:32:45
9楼
请检查 /EA 是否为高。

wuxinihui

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 980回
  • 年度积分:0
  • 历史总积分:1523
  • 注册:2008年11月20日
发表于:2008-12-06 10:56:57
10楼
引用周公 的回复内容:把你这段程序放在一个循环中间,for 或者 WHILE,具体做法看 C 语言基本语句。



好的我去试试

EPROM

  • 精华:1帖
  • 求助:0帖
  • 帖子:39帖 | 436回
  • 年度积分:0
  • 历史总积分:700
  • 注册:2004年8月16日
发表于:2008-12-31 09:20:29
11楼

写这么简单的程序,最好用汇编,会更明白些

cgy918

  • 精华:0帖
  • 求助:1帖
  • 帖子:32帖 | 1169回
  • 年度积分:0
  • 历史总积分:376
  • 注册:2008年2月19日
发表于:2009-01-12 16:14:33
12楼
h如果是汇编的,可以帮你分析下

三★土

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 33回
  • 年度积分:0
  • 历史总积分:29
  • 注册:2007年7月25日
发表于:2009-08-18 13:21:41
13楼
像你这样的程序用汇编语言很方便

梦织的云

  • 精华:0帖
  • 求助:1帖
  • 帖子:21帖 | 49回
  • 年度积分:0
  • 历史总积分:223
  • 注册:2009年6月05日
发表于:2009-08-24 21:31:06
14楼

  用汇编比较好啊

迷失的帆船

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 103回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2009-08-24 21:47:27
15楼

最好用汇编,功能太简单

 

zhou879544294

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2009年8月29日
发表于:2009-09-09 17:54:30
16楼
回复内容:
对:周公 关于请检查 /EA 是否为高。 内容的回复:


是不是你的程序问题啊!

zhou879544294

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2009年8月29日
发表于:2009-09-09 17:55:24
17楼

你的问题解决没有啊!

 

zhou879544294

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2009年8月29日
发表于:2009-09-09 17:56:04
18楼
你可不可以把题目发给我让我试试啊!

sp1212122

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 103回
  • 年度积分:0
  • 历史总积分:102
  • 注册:2009年2月25日
发表于:2009-09-26 15:50:28
19楼
引用zhouls3104 的回复内容:

int i,j;

while (1)

{P1=0xfe;

 for (i=0;i<6000;i++)

  { for (j=0;j<6000;j++)

   {;}

 }

P1=0xfd;

for (i=0;i<6000;i++)

{ for (j=0;j<6000;j++)

{;}

}
P1=0xfb;

for (i=0;i<6000;i++)

{ for (j=0;j<6000;j++)

{;}

}
P1=0xf7;

for (i=0;i<6000;i++)

{ for (j=0;j<6000;j++)

{;}

}

for (i=0;i<6000;i++)

{ for (j=0;j<6000;j++)

{;}

}

}




程序太长

baohuilei

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 69回
  • 年度积分:0
  • 历史总积分:148
  • 注册:2007年3月14日
发表于:2009-09-27 17:08:05
20楼

汇编语言要简单的多。


热门招聘
相关主题

官方公众号

智造工程师