找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1595|回复: 1
打印 上一主题 下一主题
收起左侧

关于单片机短按键、长按键一文

[复制链接]
跳转到指定楼层
楼主
ID:149988 发表于 2022-1-27 20:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做成短按键、长按键有不同反应较难一点,如果用将长按变成按两次,就比较简单。下面程序,按一次键时,为短按,短按LED_1点亮。按两次键时,为长按,长LED_2点亮。
#include < reg51.h >
#include <intrins.h>
sbit k1=P1^0;        //
sbit LED_1=P0^7;
sbit LED_2=P0^0;
unsigned char Time;
unsigned char i;
void delay(unsigned int ms)        /
{
        unsigned char x,y;
        for(x=0;x<ms;x++)
          for(y=0;y<120;y++);
}

void key_scan()          //
{
        i=0;
        if(k1==0)               /
        {
                delay(5);
                if(k1==0)             /
                {
                  while(!k1);        /
                        i=++i;
                }
        }
}
void  main()
{
  P0=0x00;
        
        while(1)
                {
                        key_scan();         
                        if(i==1)
                        {
                                LED_1=1;
                        }
                        if(i==2)
                        {
                                LED_2=1;
                        }
                }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:8222 发表于 2022-1-28 19:00 | 只看该作者
按键不松开,单片机什么也干不了。这也不是长按短按,这是松手检测。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表