专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

51单片机流水灯左移 右移控制程序

作者:huqin   来源:本站原创   点击数:  更新时间:2014年03月24日   【字体:

电路很简单 8位流水灯接在单片机的P1口.如下是源代码:
 

//=============================================================
 
   //程序名: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;                 //左移初始值
     P1=temp;                   //P1输出信号点亮发光管
     for( s=0;s<30000;s++);     //延时程序
     for (i=1;i<8;i++)          //发光管移动的位数
     {
      a=temp<<i;                //发光管左移I位
      b=temp>>(8-i) ;           //数据右移(8-I)位
     P1=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;                    //左移初始值
   P1=temp;                      //P1输出信号点亮发光管
   for(s=0;s<30000;s++);          //延时程序
   for(i=1;i<8;i++)              //发光管移动的位数
  {                              //发光管左移I位
   a=temp>>i;                    
   b=temp<<(8-i);                //数据右移(8-I)位
   P1=a|b;                       //逻辑或运算,并输出到P1口
  for(s=0;s<30000;s++);          //延时程序
  }                     
}
//=======================================================================
 

 

关闭窗口

相关文章