/* #include <reg52.h>
 #define uint unsigned int
 #define uchar unsigned char
 void delayn50ms(uint n)
 {
    uint i,j;
    for(i=0;i<n;i++)
       for(j=0;j<=10000;j++);
    }
    
    main()
    { 
       
      uchar x,y;
      
        
      while(1)
      {
      
     x=0xfe;
     for(y=0;y<8;y++)
        
     {
        P2=x;
        x=x<<1|0x01;
        delayn50ms(5);
        
     }
      P2=0x00;
      }
       
       
       
 }
 */
 
 
   //程序名:LLL22_4.C
   //程序功能:流水灯控制左移 右移
   //==============================================================
     #include<reg51.h>//头文件
      L_M();                    //流水灯左移控制程序
      R_M();                    //流水灯右移控制程序
   //===============================================================
      main()                    //主函数
      {
      while(1)                  //无限循环
           {
      L_M();                    //调用左移程序
      R_M();                    //调用右移程序
      }            
         }
  //========左移控制程序==============================================
     L_M()           //左移主函数

 
{
     unsigned char i,temp,a,b;  //声明无符号字符型变量A,TEMP I,B
     unsigned int  s;           //声明无符号整型变量S
     temp=0xfe;                 //左移初始值
     P2=temp;                   //P1输出信号点亮发光管
     for( s=0;s<30000;s++);     //延时程序
     for (i=1;i<8;i++)          //发光管移动的位数
     {
      a=temp<<i;                //发光管左移I位
      b=temp>>(8-i) ;           //数据右移(8-I)位
     P2=a|b ;                   //逻辑或运算,并输出到P1口
     for(s=0;s<30000;s++);      //延时程序
      }
}
  //================================================================
   R_M()
{
   unsigned char i,temp,a,b;     //声明无符号字符型变量A,TEMP I,B
   unsigned int   s;             //声明无符号整型变量S
   temp=0x7f;                    //左移初始值
   P2=temp;                      //P1输出信号点亮发光管
   for(s=0;s<30000;s++);          //延时程序
   for(i=1;i<8;i++)              //发光管移动的位数
  {                              //发光管左移I位
   a=temp>>i;                    
   b=temp<<(8-i);                //数据右移(8-I)位
   P2=a|b;                       //逻辑或运算,并输出到P1口
  for(s=0;s<30000;s++);          //延时程序
  }                     
}