zoukankan      html  css  js  c++  java
  • 独立按键的使用(2)

    上一节的按键的使用中,效果是按下键亮,弹起后又灭,无法保持状态,下面的实现按下弹起后,实现一次切换;

    #include <reg52.h>
    
    sbit LED = P0^2;  //控制引脚
    sbit Key = P0^0;  //按键
    
    void main(void)
    {
        LED = 0;                   //初始亮
        while (1)
        {
            if (!Key)              //如果按下
            {
              LED = !LED;        //切换LED状态
            }
        }
    }

    测试后发现,按键按下弹起的时间间隔不同,效果也不同,有时会出现按下弹起后状态并没有改,这是因为,虽然按下了键也弹起了,但是当程序顺序执行到 if (!Key) 时,可能键已经是按下后的弹起状态,造成抖”动“,为了更好的实现一次按键按下弹起只切换一次LED的状态,代码修改如下:

    #include <reg52.h>
    
    sbit LED = P0^2;  //控制引脚
    sbit Key = P0^0;  //按键
    
    void delay(unsigned int t);
    
    void main(void)
    {
        LED = 0;                   //初始亮
        while (1)
        {
            if (!Key)               //如果按下
            {
                delay(1500);       //延时去抖 一般10-20ms
                if (!Key)           //如果还处于按下状态,说明是有效的
                {
                    while (!Key);  //如果一直是按下,等待弹起,注意这要有";"
                    LED = !LED;       //弹起后切换LED状态
                }
            }
        }
    }
    
    void delay(unsigned t)
    {
        while(--t);
    }

    这是使用软件防抖,另外还可以在硬件电路上设计防抖,以后再学习。

  • 相关阅读:
    数据库插入
    c#里面调用python
    抓取最好大学网
    selenium抓取慕课课程
    excel合并
    网页抓取
    pyinstaller打包报错
    获取微信联系人
    c#部分类
    C#只读属性
  • 原文地址:https://www.cnblogs.com/coloregg/p/3606361.html
Copyright © 2011-2022 走看看