单片机/MCUwilliam hill官网
直播中

何夏庄

7年用户 973经验值
私信 关注
[问答]

使用单独按键实现渐亮渐灭,为什么我的程序无法开关?

各位大虾,我是刚刚学单片机,如何使用单独按键实现渐亮渐灭(功能是用一个轻触开关,开灯时LED灯慢慢亮起和关灯时慢慢灭掉),我写程序但无法开关,为什么;
//功能为用S1控制LED渐亮渐灭//
#include
unsigned char ID;
unsigned int T=500Toff=0;
sbit LED=P1^0;         
sbit S1=P3^7;   
void no();
void off();
void Delay(unsigned int t);
void main(void)
{
   LED=1;
   while(1)
   {
     if(S1==0)
     {
       Delay(500);
       if(S1==0)
         {
          ID++;
          if(ID==2)
          {
           ID=0;
          }
           while(S1==0);
         }
      }
    switch(ID)
     {
      case 0:
      no();
      break;
      case 1:
      off();
      break;
      }
  }
}

/@@*以下为渐亮保持*/
void no (void)
{

     for(Toff=1;Toff0;Toff--)   
    {
             LED=0;                     
             Delay(Toff);               
             LED=1;                    
            Delay(T-Toff);            
     }

      LED=1;
      while (1);
}
/@@*以下为延时函数*/
void Delay(unsigned int t)   
{                        
while(--t);                 
}

回帖(1)

高桂清

2023-10-8 09:58:31
把on和off函数最后的while(1)改成while(S1)就可以了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分