微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于流水灯渐亮渐灭的救助,详情看贴,问题见首段。谢...

关于流水灯渐亮渐灭的救助,详情看贴,问题见首段。谢...

时间:10-02 整理:3721RD 点击:

*亲们看看这段程序,是流水灯渐亮渐灭的效果的,主要是在由亮到暗那里有个问题,就是这句 for(j=7;j>=0;j--),当最后一个亮了又灭了之后,那些灯就暴走了!求解释,我研究了两天了,都不知道为何?*/
#include <reg51.h>        
typedef unsigned char uchar;
#define Ton 40
#define LED P1
sbit leds=P0^4;
sbit LED0 = P1^0;
sbit LED1 = P1^1;
sbit LED2 = P1^2;
sbit LED3 = P1^3;
sbit LED4 = P1^4;
sbit LED5 = P1^5;
sbit LED6 = P1^6;
sbit LED7 = P1^7;
      
unsigned char aa=0;
static unsigned char ledon[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar Occupy_led; //占空比越大,灯越亮
bit light;
uchar m;      
void Inittime()
      {
          TMOD = 0x02; //定时器0,工作方式2,自动重装
          TH0 = 256-Ton;
          TL0 = 256-Ton;
          ET0 = 1;
         EA = 1;
         TR0 = 1;
     }
//定时器0中断
     void time0() interrupt 1 using 0
      {
           aa++;
      }
void main()
       {
          unsigned char i = 0,j = 0; //初始化i,j
    leds=0;
          Inittime();
         while (1)
           {
             /* //第1,3,5,7个灯半亮,其余的全亮。              
            for(i=254; i>0; i--)      
            {
                while ( Maikuan!=20)
                {
                        LED = 0x00;
                }
                while ( Maikuan!=200)
                {
                        LED = 0x55;
                }
   
               Maikuan = 0;
            }
*/
   //最难的:8个灯从第一个开始依次渐亮,直到最后一个。再从最后一个起渐暗,直到第一个。如此循环往复。
/*   for(j = 0;j<=7;j++)
   {
    i = 0;      
    while(i!=255)     // 由暗变亮
        {
          if( Maikuan == 0) // 点亮
        {
            LED = ledon[j];
       }
       if(Maikuan == i) // 熄灭
        {
           LED = 0xff;
       }
      if( Maikuan== 255)   
        {
            i++;      
          }
       }
   }
*/
  for(j=7;j>=0;j--)
  {
   i = 0;      
   while(i!=255)     // 由亮变暗
   {
    if(aa == 0) // 熄灭
    {
     LED = 0xff;
    }
    if(aa == i) // 点亮
    {
     LED = ledon[j];
    }
    if(aa == 255)
    {
     i++;
    }
   }   
  }
}
}   



搞得这 复杂,自己写个简单点,不要看别人的程序

看来我水平还是不够。这要是完整程序,估计编译都过不去。东凑西凑的。

支持分享                                                   

支持分享                                    

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top