找回密码
 立即注册

QQ登录

只需一步,快速开始

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

心形流水灯程序

[复制链接]
跳转到指定楼层
楼主
ID:411703 发表于 2018-10-18 14:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
                                                            //延时
void delay(uint k)   
{       
        uint i,j;
        for(i=k;i--;i>0)
                for(j=100;j--;j>0);
}

void main()
{       
        uchar temp0,temp1;
        uchar yi;
        uchar yi0,yi1;                  
        uint i,j,k,a,b;
        j=k=a=b=3;       
                                                                        //全部亮
        P0=P1=P2=P3=0x00;
        delay(700);
        P0=P1=P2=P3=0xff;       
                                                                        //每个io口独自亮
        for(i=2;i--;i>0)
        {
                P1=P0=0x00;
                delay(500);
                P1=P0=0xff;
                P3=P2=0x00;
                delay(500);
                P3=P2=0xff;
        }
                                                                        //全部亮,闪三次
        for(i=2;i--;i>0)
        {
                P0=P1=P2=P3=0x00;
                delay(100);
                P0=P1=P2=P3=0xff;
                delay(100);
        }
                                                                        //P1、P2亮,P3、P0暗
        for(i=3;i--;i>0)
        {
                P1=0x00,P2=0x00; P3=0xff,P0=0xff;
                delay(500);
                P1=0xff,P2=0xff,P3=0x00,P0=0x00;
                delay(500);
        }

                                                                        //四个点的流水

        while(j>0)
        {
                temp0=0xfe,temp1=0x7f;
                P1=P3=temp0,P2=P0=temp1;
                delay(100);
                for(i=7;i--;i>0)
                {
                        temp0=_crol_(temp0,1),temp1=_cror_(temp1,1);
                        P1=P3=temp0,P2=P0=temp1;
                        delay(100);
                }
                 j--;
         }
                                                                         //全部亮,闪三次
        for(i=3;i--;i>0)
        {
                P0=P1=P2=P3=0x00;
                delay(300);
                P0=P1=P2=P3=0xff;
                delay(300);
        }                          

                                                                        //四个IO口同样跟踪流水
        while(k>0)
        {
                temp0=0xfe,temp1=0x7f;
                P1=P3=temp0,P2=P0=temp1;
                delay(60);
                for(i=7;i--;i>0)
                {
                        temp0=temp0<<1,temp1=temp1>>1;
                        P1=P3=temp0,P2=P0=temp1;
                        delay(60);
                }
                k--;
         }
         P0=P1=P3=P2=0xff;
         while(k<3)
         {
                   temp0=0x7f,temp1=0xfe;
                  P1=P3=temp0,P2=P0=temp1;
                  delay(60);
                  for(i=7;i--;i>0)
                  {
                          temp0=temp0>>1,temp1=temp1<<1;
                        P1=P3=temp0,P2=P0=temp1;
                        delay(60);
                  }
                  k++;
         }
         P3=P2=0xff;
                                                             //两边单个从上向下流水
        yi=0xfe;
        P1=P0=yi;
        delay(50);
        for(i=7;i--;i>0)
        {
                yi=_crol_(yi,1);
                P1=P0=yi;
                delay(50);
        }
        P1=P0=0xff;
        yi=0xfe;
        P3=P2=yi;
        delay(50);
        for(i=7;i--;i>0)
        {
                yi=_crol_(yi,1);
                P3=P2=yi;
                delay(50);
        }
        P3=P2=0Xff;
                                                                 //两边单个返回流水
        for(i=7;i--;i>0)                         
        {
                yi=_cror_(yi,1);
                P3=P2=yi;
                delay(50);
        }
        P3=P2=0xff;
        for(i=7;i--;i>0)
        {
                yi=_cror_(yi,1);
                P0=P1=yi;
                delay(50);
        }                                                                  
                                                          //全部亮,闪三次
        P0=P1=P3=P2=0xff;
        for(i=3;i--;i>0)
        {
                P0=P1=P2=P3=0x00;
                delay(100);
                P0=P1=P2=P3=0xff;
                delay(100);
        }
                                                    //流水灯

        yi0=0xfe,yi1=0x7f;
        P3=P2=yi1,P1=P0=yi0;
        delay(100);
        for(i=7;i--;i>0)
        {
                 yi0=yi0<<1, yi1=yi1>>1;
                 P1=P0=yi0,P3=P2=yi1;
                 delay(100);
        }
        P1=P2=P3=P0=0xff;
        delay(200);
        yi0=0x7f,yi1=0xfe;
        P1=P0=yi0,P3=P2=yi1;
        for(i=7;i--;i>0)
        {
                yi0=yi0>>1,yi1=yi1<<1;
                P1=P0=yi0,P3=P2=yi1;
                delay(100);       
        }
                                                             //大循环跟踪流水
        P1=P2=P3=P0=0xff;
        for(i=8;i--;i>0)
        {
                 P1=P1<<1;
                 delay(50);
        }
        for(i=8;i--;i>0)
        {
                 P3=P3<<1;
                 delay(50);
        }

        for(i=8;i--;i>0)
        {
                 P2=P2>>1;
                 delay(50);
        }
        for(i=8;i--;i>0)
        {
                 P0=P0>>1;
                 delay(50);
        }                                               
                                                                //逆向大循环跟踪流水

        P1=P2=P3=P0=0xff;
        for(i=8;i--;i>0)
        {
                 P0=P0<<1;
                 delay(50);
        }
        for(i=8;i--;i>0)
        {
                 P2=P2<<1;
                 delay(50);
        }
        for(i=8;i--;i>0)
        {
                 P3=P3>>1;
                 delay(50);
        }
        for(i=8;i--;i>0)
        {
                 P1=P1>>1;
                 delay(50);
        }


                                                              //全部亮,闪三次
        P0=P1=P3=P2=0xff;
        for(i=4;i--;i>0)
        {
                P0=P1=P2=P3=0x00;
                delay(100);
                P0=P1=P2=P3=0xff;
                delay(100);
        }
                                                                                   //全部亮,只有一个暗的在流水
       
        temp0=0x01,temp1=0x00;
        P1=P0=temp0,P3=P2=temp1;
        delay(100);
        for(i=7;i--;i>0)
        {
                temp0=_crol_(temp0,1);
                P1=P0=temp0;
                delay(100);
        }
        P1=P0=0x00;
        temp1=0x01;
        P3=P2=temp1;
        delay(100);
        for(i=7;i--;i>0)
        {
                temp1=_crol_(temp1,1);
                P3=P2=temp1;
                delay(100);
        }
                                                                                 //全部亮,逆向一个暗在流水
        temp0=0x00,temp1=0x80;
        P1=P0=temp0,P3=P2=temp1;
        delay(100);
        for(i=7;i--;i>0)
        {       
                temp1=_cror_(temp1,1);
                P3=P2=temp1;
                delay(100);
        }
        P3=P2=0x00;
        temp0=0x80;
        P1=P0=temp0;
        delay(100);
        for(i=7;i--;i>0)
        {
                temp0=_cror_(temp0,1);
                P1=P0=temp0;
                delay(100);
        }
                                                                             //花样
        temp0=0xaa,temp1=0x55;
        P1=P3=temp0,P2=P0=temp1;
        delay(500);
        for(;a--;a>0)
                {
                        for(i=7;i--;i>0)
                        {
                                temp0=_crol_(temp0,1),temp1=_cror_(temp1,1);
                                P1=P3=temp0,P2=P0=temp1;
                                delay(500);       
                        }

                 }
        for(;b--;b>0)
                {
                        temp0=0xee,temp1=0x77;
                        P1=P3=temp0,P2=P0=temp1;
                        delay(300);
                        for(i=7;i--;i>0)
                        {
                                temp0=_crol_(temp0,1),temp1=_cror_(temp1,1);
                                P1=P3=temp0,P2=P0=temp1;
                                delay(300);       
                        }
                }         
                                                                                          //环形逐个亮
                                                                                               
        P1=P2=P3=P0=0xff;
        for(i=8;i--;i>0)
        {
                 P0=P0<<1;
                 delay(50);
        }
        for(i=8;i--;i>0)
        {
                 P2=P2<<1;
                 delay(50);
        }
        for(i=8;i--;i>0)
        {
                 P3=P3>>1;
                 delay(50);
        }
        for(i=8;i--;i>0)
        {
                 P1=P1>>1;
                 delay(50);
        }
                                                                                                         //逐个熄灭
        for(i=7;i--;i>0)
        {
                P0=~P0<<1;
                P0=~P0;
                delay(50);
        }
        P0=0xff;

        for(i=7;i--;i>0)
        {
                P2=~P2<<1;
                P2=~P2;
                delay(50);
        }
        P2=0xff;
        for(i=7;i--;i>0)
        {
                P3=~P3>>1;
                P3=~P3;
                delay(50);
        }
        P3=0xff;
        for(i=7;i--;i>0)
        {
                P1=~P1>>1;
                P1=~P1;
                delay(50);
        }
        P1=0xff;   

}


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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