标题: 花样流水灯,拉幕花样+左移位+右移位+循环左移+循环右移 [打印本页]

作者: lids    时间: 2016-9-28 11:53
标题: 花样流水灯,拉幕花样+左移位+右移位+循环左移+循环右移
//花样流水灯,拉幕花样+左移位+右移位+循环左移+循环右移


#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

uchar y,aa;

void delay(uint i)                         //延时子函数
{
        uint m;
        uchar n;
        for(m=i;m>0;m--)
        for(n=110;n>0;n--);
}


void main()
{       
     while(1)
       {
            uchar k;
                for(k=0;k<2;k++)
                {
                P1=0xff;
            delay(1000);                 //拉幕花样
                P1=0x7e;
            delay(1000);
            P1=0x3c;
            delay(1000);
            P1=0x18;
            delay(1000);
            P1=0x00;
            delay(1000);
            P1=0x00;
            delay(1000);
                P1=0x18;
            delay(1000);
            P1=0x3c;
            delay(1000);
            P1=0x7e;
            delay(1000);
            P1=0xff;
            delay(1000);
               
                P1=0;                                   //灯闪烁1次
            delay(1000);
                P1=0xff;
            delay(1000);
                   }

               
                         
                   y=8;                                           // y=8时,不需要里面的for循环就可以,流水灯为1次,改变y的值可以改变亮灯的位数。
                 while(y--)                                   //这里如果不加while语句,灯会乱跳几下后,就去执行后面的程序了
             {                                                   //如果需要多次流水灯,就需要for循环语句,改变K的值就可以改变次数
                     uchar k;
                     for(k=0;k<2;k++)          //流水循环次数
                         {
                         P1 = P1 << 1;                  //按位左移
                     delay(1000);                  //延时
                     
                         if(P1 == 0)              //如果P1等于零,
                             {                                  /*则跳到下一步,P1全送高电平*/
                              P1 = 0xff;
                              delay(1000);
                             }
                         
                           }
                    }
          
                 
                 y=8;
                 while(y--)
             {
                     uchar k;
                     for(k=0;k<2;k++)          //流水循环次数
                         {
                         P1 = P1 >> 1;                  //按位右移
                     delay(1000);                  //延时
                     
                         if(P1 == 0)              //如果P1等于零,
                             {                                  /*则跳到下一步,P1全送高电平*/
                              P1 = 0xff;
                              delay(1000);
                              }
                         
                          }
                    }
                          
                          
                           aa=0xfe;
                           y=8;
                           while(y--)
                           {
                                   P1 = aa;
                                delay(1000);
                                aa=_crol_(aa,1);        //循环左移
                                }
         
                           
                           aa=0x7f;
                           y=8;
                           while(y--)
                           {
                                   P1 = aa;
                                delay(1000);
                                aa=_cror_(aa,1);          //循环右移
                                }
         }
}






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1