首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何切换LED

如何切换LED
EN

Stack Overflow用户
提问于 2017-10-17 02:01:21
回答 1查看 5.3K关注 0票数 0

如何用按钮切换LED。我写了程序。程序中有问题。这个程序失败,如果我连续按住按钮,然后LED打开/关闭连续。如何解决问题?

代码语言:javascript
复制
  #include<REGX51.h>

  #define led_off         0
  #define switch_pressed  0

  sbit  Switch = P1^2;                    /*set bit P1^2 to Switch*/

  sbit led = P1^0;                       /*set bit P1^0 to LED*/


  void debounce (unsigned long wait)     /* Debounce function */
  {
       unsigned int i;
       for (i = 0; i < wait;  i++);
  }

  void main (void)
  {
     led = led_off;

  while (1)
  {
      if (Switch ==  switch_pressed)

        {
            led = ~led;
            debounce (40000);
        }

  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-17 07:16:08

只要按下按钮,你就可以按下按钮。只有当按钮从未按下改为按下时,才需要切换。

代码语言:javascript
复制
#include<REGX51.h>

#define BTN_UP  1
#define BTN_DN  0
#define DEBOUNCE_DELAY 40000

sbit Switch = P1^2 ;  
sbit led = P1^0 ;

void delay( unsigned long wait ) 
{
     for( volatile unsigned long i = 0 ; 
          i < wait;  
          i++ )
     { /* do nothing */ } 
}

int main( void )
{
    int prev_button_state = Switch ;
    led = 0 ;

    for(;;)
    {
        // Read current Switch state
        int button_state = Switch ;

        // If BTN_DN event...
        if( button_state != prev_button_state && 
            button_state == BTN_DN )
        {
            led = ~led;
            delay( DEBOUNCE_DELAY ) ;
        }

        prev_button_state = button_state ;
    }

    return 0 ;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46781416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档