刚学单片机,我按照习题的提示编了一个流水灯循环点亮,先从左再到右,但是发现一个问题,第二次左边点亮时,先是第一个亮就跳到最后一个亮再从左开始点亮。 
代码下面 
#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); 
 
  }  
 } 
} |   
     
  
 |