找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6840|回复: 0
打印 上一主题 下一主题
收起左侧

花样流水灯,拉幕花样+左移位+右移位+循环左移+循环右移

[复制链接]
跳转到指定楼层
楼主
ID:140489 发表于 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);          //循环右移
                                }
         }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表