[51单片机] 菜鸟刚起步 遇到问题求大神指教

[复制链接]
1838|5
 楼主| 13669185270 发表于 2013-11-17 21:08 | 显示全部楼层 |阅读模式
8个发光管间隔200ms由上至下,再由下至上,再由上至下,再由下至上,然后全部熄灭再以300ms间隔全部闪烁5次。重复上面过程。
  

我自己编程之后写进去,现象是:8个发光管由上到下,再由下到上,然后就全部发光。和要求不一样啊

#include <reg52.h>
#include <intrins.h>
unsigned int a;b;c;
unsigned char d;
void delay (unsigned char x);

void main()
{
        while(1)
        {       
                c=2;
                while(c--)
                {       
                        d=0xfe;
                        for(a=7;a>0;a--)
                        {
                                P1=d;
                                delay(68);
                                d=_crol_(d,1);
                        }
                        d=0x7f;
                        for(a=7;a>0;a--)
                        {
                                P1=d;
                                delay(68);
                                d=_cror_(d,1);
                        }
                }
                P1=0xfe;
                delay(68);
                P1=0xff;
               
                c=5;
                while(c--)
                {
                        P1=0x00;
                        delay(100);
                        P1=0xff;
                        delay(100);
                }
        }               
}

void delay(unsigned char x)
{
        for(a=500;a>0;a--)
        for(c=x;c>0;c--);
}



求解~~~~~~~~~~~~~~
jt4117 发表于 2013-11-17 22:23 | 显示全部楼层
void delay( unsigned char mData )
{
   while( mData-- );
}

main( )
{
  unsigned char i;
  P1 = 0xFF;
  delay(10);
  for( i=0; i<8; i++ )
{
   P1 = ~(0xFF&(1<<i));
   delay(68);
}
for( i=6; i>=0; i-- )
{
   P1 = ~(0xFF&(1<<i));
   delay(68);   
}
P1 = 0xFF;
delay(300);
for( i=0; i<5; i++ )
{
   P1=0;
   delay(300);
   P1=0xFF;
   delay(300);
}
}
岩上翠鸟 发表于 2013-11-18 10:19 | 显示全部楼层
你的while 循环不对,你仔细看看while的用法,    程序思路是对的,但是用法错了。。。要是看不明白 ,你断点调试一下就明白 了。。。
ayb_ice 发表于 2013-11-18 10:25 | 显示全部楼层
还不如查表
hyh19890917 发表于 2013-11-20 21:36 | 显示全部楼层
c溢出了吧。。
chenyu988 发表于 2013-11-21 12:00 | 显示全部楼层
c=5;
                while(c--)
                {
                        P1=0x00;
                        delay(100);//注意这里
                        P1=0xff;
                        delay(100);
                }
delay(100)后,c的值变成了0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部