打印

呼吸灯问题,请教下大神

[复制链接]
349|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
石头张|  楼主 | 2020-4-21 19:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
开发需求是:
1. 刚开始LED1和LED2均灭
2.  LED1渐亮渐灭一次,然后LED1灭。
3.  LED2渐亮渐灭一次,然后LED2灭。
    就这样一直循环


我写的代码为何实现不了,求大神解答,折腾很久了


#include "reg51.h"                        

sbit LED1=P2^0;
sbit LED2=P2^1;


unsigned char cycle=0;
unsigned int step=1;
unsigned int bright=0;


unsigned char cycle2=0;
unsigned int step2;
unsigned int bright2=0;



void test1(void);
void test2(void);
void delay(unsigned int time_i);




void main()
{



  while(1)
  {


    test1();        


    test2();                  


}

}

void test1(void)
{


  if(++cycle >250)
                  {
                  cycle = 0;
                                   
                                   switch (step)
                                   {
                                   case 1 :
                                                bright++;
                                                if(bright > 250)
                                                {
                                                step ++;
                                                }break;
                                                
                                        case 2 :
                                                bright--;
                                                if(bright < 1)
                                                {
                                                step2 = 1;
                                       
                                                }break;

                                   }
                  }

                if(cycle < bright)
                                {
                                        LED1=0;        //灯亮
                                
                                }
                else
                                {
                                        LED1=1;        // 灯灭
                                
                                }








}


void test2(void)
{

if(++cycle2 >250)
                  {
                  cycle2 = 0;
                                   
                                   switch (step2)
                                   {
                                   case 1 :
                                                bright2++;
                                                if(bright2 > 250)
                                                {
                                                step2 ++;
                                                }break;
                                                
                                        case 2 :
                                                bright2--;
                                                if(bright2 < 1)
                                                {
                                                step = 1;
                                                }break;

                                   }
                  }

                if(cycle2 < bright2)
                                {
                                        LED2=0;        //灯亮
                                
                                }
                else
                                {
                                        LED2=1;        //
                                       
                                }








}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

446

帖子

0

粉丝