求我的左右循环点亮的问题!

[复制链接]
2588|4
 楼主| herolhf 发表于 2010-5-7 18:12 | 显示全部楼层 |阅读模式
刚学单片机,我按照习题的提示编了一个流水灯循环点亮,先从左再到右,但是发现一个问题,第二次左边点亮时,先是第一个亮就跳到最后一个亮再从左开始点亮。
代码下面
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay_ms(uint time)
{
uint i,j;
for(i=time;i>0;i--)
for(j=112;j>0;j--)
{;}
}
void main(void)
{
uchar right;
uchar left;
uchar loop;
uchar t;
while(1)
{
  left=0xfe;
  P1=left;
  delay_ms(300);
  right=0x7f;
  P1=right;
  delay_ms(300);
  for(loop=0;loop<8;loop++)
  {
    left=(left<<1)|0x01;
        P1=left;
        delay_ms(300);
  }
  for(t=0;t<8;t++)
  {
   right=(right>>1)|0x80;
   P1=right;
   delay_ms(300);

  }
}
}
doomhaha 发表于 2010-5-7 18:34 | 显示全部楼层
改成for(loop=1;loop<8;loop++)试下
 楼主| herolhf 发表于 2010-5-7 18:54 | 显示全部楼层
改了for(loop=1;loop<8;loop++),发现首次运行从左到右出现先是第一个亮就跳到最后一个亮再从左开始点亮。
一棵小草 发表于 2010-5-7 20:11 | 显示全部楼层
这些问题--------只要自己仿真一下就知道了,而且能提高你的能力。
hanfei08131106 发表于 2010-5-8 11:09 | 显示全部楼层
同意四楼的看法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

11

帖子

1

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