找回密码
 立即注册

QQ登录

只需一步,快速开始

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

新人学单片机,各路大神这个程序哪里错了。只亮一个LED,不能流水点亮。

  [复制链接]
跳转到指定楼层
楼主
ID:91490 发表于 2015-10-2 10:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"reg51.h"
#include"intrins.h"

#define LED P2

void Delay10ms (unsigned int );

void main (void)
{
unsigned char n;
  LED=0x01 ;
  while(1);
  {       
    for(n=0;n<7;n++);
    {
         LED=(LED>>1);
         Delay10ms(100);
    }}}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:91493 发表于 2015-10-2 11:03 | 只看该作者
运行出错?
回复

使用道具 举报

板凳
ID:91490 发表于 2015-10-2 11:09 | 只看该作者

只亮一个LED,不能流水点亮。
回复

使用道具 举报

地板
ID:88716 发表于 2015-10-2 13:27 | 只看该作者
延迟函数 只有声明了,却没有定义。看你的目的应该是流水灯效果,而你的程序实现的效果8个小灯全亮。
回复

使用道具 举报

5#
ID:91490 发表于 2015-10-2 14:47 | 只看该作者
hzb123 发表于 2015-10-2 13:27
延迟函数 只有声明了,却没有定义。看你的目的应该是流水灯效果,而你的程序实现的效果8个小灯全亮。

要怎么定义?
回复

使用道具 举报

6#
ID:88716 发表于 2015-10-2 16:05 | 只看该作者

没有定义延迟函数,不影响编译,可能会出现警告   
比如
void Delayms(unsigned char x)
{
        unsigned char y,z;
        for(y=x;y>0;y--)
        for(z=120;z>0;z--);
}
//主时钟12M 差不多1MS毫秒延迟
回复

使用道具 举报

7#
ID:79544 发表于 2015-10-2 16:35 | 只看该作者
#include<reg52.h>
//#include"intrins.h"这句可以不用,因为你没用到包含_nop_();和左右移动函数
#define uchar unsigned char#define uint unsigned int//宏定义方便书写
#define LED P2

void Delay10ms (uint  z)//延时大约1ms
{   uint  x,y;
  fonr(x=z;x>0;x--)
  for(y=120;y>0;y--);
}
void main (void)
{
   uchar n;
  LED=0x01 ;//根据你的实验板IO口是输出高电平亮还是输出低电平亮
//LED=0xfe;//IO口输出低电平亮第一个
  while(1);
  {        
    for(n=0;n<7;n++);//循环执行7次
    {
         LED=(LED>>1);//括号可以去掉
        LED=LED<<1;//左移
         Delay10ms(500);//可以加大延时看看
    }
}
}

回复

使用道具 举报

8#
ID:91490 发表于 2015-10-2 16:58 | 只看该作者
本帖最后由 二九九 于 2015-10-3 14:27 编辑
hzb123 发表于 2015-10-2 16:05
没有定义延迟函数,不影响编译,可能会出现警告   
比如
void Delayms(unsigned char x)

谢谢,通了。看看这个能精简吗?
  1. #include"reg51.h"
  2. void Delay10ms(unsigned int c);
  3. unsigned char LED;
  4. void main ()
  5. {    unsigned char i;
  6.      LED = 0xFF ;
  7.      while(1)
  8. {      
  9.       for (i = 0 ; i < 7 ; i++)
  10. {
  11.       P0 = LED ;
  12.       Delay10ms(5);
  13.       LED= LED >> 1;
  14.       LED = LED | 0x01;
  15.       }   
  16.       for (i = 0 ; i < 6 ; i++)
  17. {
  18.       P0 = LED ;
  19.       Delay10ms(5);
  20.       LED= LED << 1;
  21.       LED = LED | 0x01;
  22.       }
  23.       for (i = 0 ; i < 6 ; i++)
  24. {
  25.       P0 = LED ;
  26.       Delay10ms(5);
  27.       LED= LED >> 1;
  28.       LED = LED | 0x01;
  29.       }
  30.       for (i = 0 ; i < 5 ; i++)
  31. {
  32.       P0 = LED ;
  33.       Delay10ms(5);
  34.       LED= LED << 1;
  35.       LED = LED | 0x01;
  36.       }
  37.       for (i = 0 ; i < 5 ; i++)
  38. {
  39.       P0 = LED ;
  40.       Delay10ms(10);
  41.       LED= LED >> 1;
  42.       LED = LED | 0x01;
  43.       }
  44.       for (i = 0 ; i < 4 ; i++)
  45. {
  46.       P0 = LED ;
  47.       Delay10ms(5);
  48.       LED= LED << 1;
  49.       LED = LED | 0x01;
  50.       }
  51.       for (i = 0 ; i < 4 ; i++)
  52. {
  53.       P0 = LED ;
  54.       Delay10ms(5);
  55.       LED= LED >> 1;
  56.       LED = LED | 0x01;
  57.       }
  58.       for (i = 0 ; i < 3 ; i++)
  59. {
  60.       P0 = LED ;
  61.       Delay10ms(5);
  62.       LED= LED << 1;
  63.       LED = LED | 0x01;
  64.       }
  65.       for (i = 0 ; i < 3 ; i++)
  66. {
  67.       P0 = LED ;
  68.       Delay10ms(10);
  69.       LED= LED >> 1;
  70.       LED = LED | 0x01;
  71.       }
  72.       for (i = 0 ; i < 2 ; i++)
  73. {
  74.       P0 = LED ;
  75.       Delay10ms(5);
  76.       LED= LED << 1;
  77.       LED = LED | 0x01;
  78.       }
  79.       for (i = 0 ; i < 2 ; i++)
  80. {
  81.       P0 = LED ;
  82.       Delay10ms(5);
  83.       LED= LED >> 1;
  84.       LED = LED | 0x01;
  85.       }
  86.       for (i = 0 ; i < 1 ; i++)
  87. {
  88.       P0 = LED ;
  89.       Delay10ms(5);
  90.       LED= LED << 1;
  91.       LED = LED | 0x01;
  92.       }
  93.       for (i = 0 ; i < 1 ; i++)

  94. {
  95.       P0 = LED ;
  96.       Delay10ms(5);
  97.       LED= LED >> 1;
  98.       LED = LED | 0x00;
  99.       }
  100.       for (i = 0 ; i < 7 ; i++)
  101. {     P0 = LED ;
  102.       Delay10ms(5);
  103.       LED= LED << 1;
  104.       LED = LED | 0x01;
  105.       }
  106.       for (i = 0 ; i < 7 ; i++)
  107. {
  108.       P0 = LED ;
  109.       Delay10ms(5);
  110.       LED= LED << 1;
  111.       LED = LED | 0x80;
  112.       }
  113.       for (i = 0 ; i < 6 ; i++)
  114. {
  115.       P0 = LED ;
  116.       Delay10ms(5);
  117.       LED= LED >> 1;
  118.       LED = LED | 0x80;
  119.       }
  120.       for (i = 0 ; i < 6 ; i++)
  121. {
  122.       P0 = LED ;
  123.       Delay10ms(5);
  124.       LED= LED << 1;
  125.       LED = LED | 0x80;
  126.       }
  127.       for (i = 0 ; i < 5 ; i++)
  128. {
  129.       P0 = LED ;
  130.       Delay10ms(5);
  131.       LED= LED >> 1;
  132.       LED = LED | 0x80;
  133.       }
  134.       for (i = 0 ; i < 5 ; i++)
  135. {
  136.       P0 = LED ;
  137.       Delay10ms(5);
  138.       LED= LED << 1;
  139.       LED = LED | 0x80;
  140.       }
  141.       for (i = 0 ; i < 4 ; i++)
  142. {
  143.       P0 = LED ;
  144.       Delay10ms(5);
  145.       LED= LED >> 1;
  146.       LED = LED | 0x80;
  147.       }
  148.       for (i = 0 ; i < 4 ; i++)
  149. {
  150.       P0 = LED ;
  151.       Delay10ms(5);
  152.       LED= LED << 1;
  153.       LED = LED | 0x80;
  154.       }
  155.       for (i = 0 ; i < 3 ; i++)
  156. {
  157.       P0 = LED ;
  158.       Delay10ms(5);
  159.       LED= LED >> 1;
  160.       LED = LED | 0x80;
  161.       }
  162.       for (i = 0 ; i < 3 ; i++)
  163. {
  164.       P0 = LED ;
  165.       Delay10ms(5);
  166.       LED= LED << 1;
  167.       LED = LED | 0x80;
  168.       }
  169.       for (i = 0 ; i < 2 ; i++)
  170. {
  171.       P0 = LED ;
  172.       Delay10ms(5);
  173.       LED= LED >> 1;
  174.       LED = LED | 0x80;
  175.       }
  176.       for (i = 0 ; i < 2 ; i++)
  177. {
  178.       P0 = LED ;
  179.       Delay10ms(5);
  180.       LED= LED << 1;
  181.       LED = LED | 0x80;
  182.       }
  183.       for (i = 0 ; i < 1 ; i++)
  184. {
  185.       P0 = LED ;
  186.       Delay10ms(5);
  187.       LED= LED >> 1;
  188.       LED = LED | 0x80;
  189.       }
  190.       for (i = 0 ; i < 1 ; i++)
  191. {
  192.       P0 = LED ;
  193.       Delay10ms(5);
  194.       LED= LED << 1;
  195.       LED = LED | 0x80;
  196.       }
  197.       for (i = 0 ; i < 7 ; i++)
  198. {
  199.       P0 = LED ;
  200.       Delay10ms(5);
  201.       LED= LED >> 1;
  202.       LED = LED | 0x80;
  203.       }
  204.       }
  205.       }
  206.       
  207.    
  208. void Delay10ms(unsigned int c)
  209. {
  210.     unsigned char a, b;

  211.      for (;c>0;c--)
  212. {
  213.         for (b=38;b>0;b--)
  214. {
  215.             for (a=130;a>0;a--);
  216.         }
  217.         }      
  218.         }
复制代码


回复

使用道具 举报

9#
ID:91490 发表于 2015-10-2 17:00 | 只看该作者
本帖最后由 二九九 于 2015-10-3 14:30 编辑
腾飞的龙 发表于 2015-10-2 16:35
#include
//#include"intrins.h"这句可以不用,因为你没用到包含_nop_();和左右移动函数
#define uchar u ...

谢谢,调通了。这个还能精简吗?

  1. #include"reg51.h"
  2. void Delay10ms(unsigned int c);
  3. unsigned char LED;
  4. void main ()
  5. {    unsigned char i;
  6.      LED = 0xFF ;
  7.      while(1)
  8. {      
  9.       for (i = 0 ; i < 7 ; i++)
  10. {
  11.       P0 = LED ;
  12.       Delay10ms(5);
  13.       LED= LED >> 1;
  14.       LED = LED | 0x01;
  15.       }   
  16.       for (i = 0 ; i < 6 ; i++)
  17. {
  18.       P0 = LED ;
  19.       Delay10ms(5);
  20.       LED= LED << 1;
  21.       LED = LED | 0x01;
  22.       }
  23.       for (i = 0 ; i < 6 ; i++)
  24. {
  25.       P0 = LED ;
  26.       Delay10ms(5);
  27.       LED= LED >> 1;
  28.       LED = LED | 0x01;
  29.       }
  30.       for (i = 0 ; i < 5 ; i++)
  31. {
  32.       P0 = LED ;
  33.       Delay10ms(5);
  34.       LED= LED << 1;
  35.       LED = LED | 0x01;
  36.       }
  37.       for (i = 0 ; i < 5 ; i++)
  38. {
  39.       P0 = LED ;
  40.       Delay10ms(10);
  41.       LED= LED >> 1;
  42.       LED = LED | 0x01;
  43.       }
  44.       for (i = 0 ; i < 4 ; i++)
  45. {
  46.       P0 = LED ;
  47.       Delay10ms(5);
  48.       LED= LED << 1;
  49.       LED = LED | 0x01;
  50.       }
  51.       for (i = 0 ; i < 4 ; i++)
  52. {
  53.       P0 = LED ;
  54.       Delay10ms(5);
  55.       LED= LED >> 1;
  56.       LED = LED | 0x01;
  57.       }
  58.       for (i = 0 ; i < 3 ; i++)
  59. {
  60.       P0 = LED ;
  61.       Delay10ms(5);
  62.       LED= LED << 1;
  63.       LED = LED | 0x01;
  64.       }
  65.       for (i = 0 ; i < 3 ; i++)
  66. {
  67.       P0 = LED ;
  68.       Delay10ms(10);
  69.       LED= LED >> 1;
  70.       LED = LED | 0x01;
  71.       }
  72.       for (i = 0 ; i < 2 ; i++)
  73. {
  74.       P0 = LED ;
  75.       Delay10ms(5);
  76.       LED= LED << 1;
  77.       LED = LED | 0x01;
  78.       }
  79.       for (i = 0 ; i < 2 ; i++)
  80. {
  81.       P0 = LED ;
  82.       Delay10ms(5);
  83.       LED= LED >> 1;
  84.       LED = LED | 0x01;
  85.       }
  86.       for (i = 0 ; i < 1 ; i++)
  87. {
  88.       P0 = LED ;
  89.       Delay10ms(5);
  90.       LED= LED << 1;
  91.       LED = LED | 0x01;
  92.       }
  93.       for (i = 0 ; i < 1 ; i++)

  94. {
  95.       P0 = LED ;
  96.       Delay10ms(5);
  97.       LED= LED >> 1;
  98.       LED = LED | 0x00;
  99.       }
  100.       for (i = 0 ; i < 7 ; i++)
  101. {     P0 = LED ;
  102.       Delay10ms(5);
  103.       LED= LED << 1;
  104.       LED = LED | 0x01;
  105.       }
  106.       for (i = 0 ; i < 7 ; i++)
  107. {
  108.       P0 = LED ;
  109.       Delay10ms(5);
  110.       LED= LED << 1;
  111.       LED = LED | 0x80;
  112.       }
  113.       for (i = 0 ; i < 6 ; i++)
  114. {
  115.       P0 = LED ;
  116.       Delay10ms(5);
  117.       LED= LED >> 1;
  118.       LED = LED | 0x80;
  119.       }
  120.       for (i = 0 ; i < 6 ; i++)
  121. {
  122.       P0 = LED ;
  123.       Delay10ms(5);
  124.       LED= LED << 1;
  125.       LED = LED | 0x80;
  126.       }
  127.       for (i = 0 ; i < 5 ; i++)
  128. {
  129.       P0 = LED ;
  130.       Delay10ms(5);
  131.       LED= LED >> 1;
  132.       LED = LED | 0x80;
  133.       }
  134.       for (i = 0 ; i < 5 ; i++)
  135. {
  136.       P0 = LED ;
  137.       Delay10ms(5);
  138.       LED= LED << 1;
  139.       LED = LED | 0x80;
  140.       }
  141.       for (i = 0 ; i < 4 ; i++)
  142. {
  143.       P0 = LED ;
  144.       Delay10ms(5);
  145.       LED= LED >> 1;
  146.       LED = LED | 0x80;
  147.       }
  148.       for (i = 0 ; i < 4 ; i++)
  149. {
  150.       P0 = LED ;
  151.       Delay10ms(5);
  152.       LED= LED << 1;
  153.       LED = LED | 0x80;
  154.       }
  155.       for (i = 0 ; i < 3 ; i++)
  156. {
  157.       P0 = LED ;
  158.       Delay10ms(5);
  159.       LED= LED >> 1;
  160.       LED = LED | 0x80;
  161.       }
  162.       for (i = 0 ; i < 3 ; i++)
  163. {
  164.       P0 = LED ;
  165.       Delay10ms(5);
  166.       LED= LED << 1;
  167.       LED = LED | 0x80;
  168.       }
  169.       for (i = 0 ; i < 2 ; i++)
  170. {
  171.       P0 = LED ;
  172.       Delay10ms(5);
  173.       LED= LED >> 1;
  174.       LED = LED | 0x80;
  175.       }
  176.       for (i = 0 ; i < 2 ; i++)
  177. {
  178.       P0 = LED ;
  179.       Delay10ms(5);
  180.       LED= LED << 1;
  181.       LED = LED | 0x80;
  182.       }
  183.       for (i = 0 ; i < 1 ; i++)
  184. {
  185.       P0 = LED ;
  186.       Delay10ms(5);
  187.       LED= LED >> 1;
  188.       LED = LED | 0x80;
  189.       }
  190.       for (i = 0 ; i < 1 ; i++)
  191. {
  192.       P0 = LED ;
  193.       Delay10ms(5);
  194.       LED= LED << 1;
  195.       LED = LED | 0x80;
  196.       }
  197.       for (i = 0 ; i < 7 ; i++)
  198. {
  199.       P0 = LED ;
  200.       Delay10ms(5);
  201.       LED= LED >> 1;
  202.       LED = LED | 0x80;
  203.       }
  204.       }
  205.       }
  206.       
  207.    
  208. void Delay10ms(unsigned int c)
  209. {
  210.     unsigned char a, b;

  211.      for (;c>0;c--)
  212. {
  213.         for (b=38;b>0;b--)
  214. {
  215.             for (a=130;a>0;a--);
  216.         }
  217.         }      
  218.         }
复制代码


回复

使用道具 举报

10#
ID:79544 发表于 2015-10-2 19:01 | 只看该作者
做花样流水灯可以上网找找很多的。多学多练
回复

使用道具 举报

11#
ID:91490 发表于 2015-10-2 19:31 | 只看该作者
腾飞的龙 发表于 2015-10-2 19:01
做花样流水灯可以上网找找很多的。多学多练

多多指教,这是我第一个实验。
回复

使用道具 举报

12#
ID:91530 发表于 2015-10-2 20:35 | 只看该作者
for语句后面有个分号怎么执行下面的程序
回复

使用道具 举报

13#
ID:91555 发表于 2015-10-3 11:20 | 只看该作者
caisanjiang 发表于 2015-10-2 20:35
for语句后面有个分号怎么执行下面的程序

我就说嘛,怎么没人注意到这么明显的错误,一眼就看到了
回复

使用道具 举报

14#
ID:84299 发表于 2015-10-6 12:14 | 只看该作者
延时函数在哪?
回复

使用道具 举报

15#
ID:55127 发表于 2015-10-7 09:39 | 只看该作者
这个没得延时的函数
回复

使用道具 举报

16#
ID:72462 发表于 2015-10-7 10:58 | 只看该作者
你赋值是0x01,也就是0000 0001,然后你右移干什么?右移肯定只亮一个灯,然后再熄灭。你改成左移试试
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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