标题: 按键长按短按问题 [打印本页]

作者: xinxian    时间: 2014-10-14 23:53
标题: 按键长按短按问题
现在只有一个按键,当按键短按的时候,灯1亮,当按键长按的时候,灯2亮,不想使用定时器或者中断函数。这个应该怎么处理??

作者: 明白    时间: 2014-10-15 10:29
#include "reg51.h"
#define d 5000
#define c 5*d
unsigned int cnt;
sbit key=P3^7;
sbit LED1=P2^0;
sbit LED2=P2^1;
void main()                              
{
   key=1;
  LED1=1;
  LED2=1;
  cnt=0;
  while(1)
  {
     if(key)
      {  
       if(cnt>d && cnt<c) LED1=!LED1;//短按&acute;
       cnt=0;
      }   
    else   
      {  
        cnt++;  
        if( cnt==c )LED2=!LED2;//长按
        if( cnt>c  )cnt=c+1;   
      }  
   }
}
作者: T29    时间: 2014-10-16 00:51
主函数循环次数
作者: xinxian    时间: 2014-10-17 21:09
明白 发表于 2014-10-15 10:29
#include "reg51.h"
#define d 5000
#define c 5*d

不好用啊
作者: xinxian    时间: 2014-10-17 21:24
明白 发表于 2014-10-15 10:29
#include "reg51.h"
#define d 5000
#define c 5*d

不好用啊
作者: 明白    时间: 2014-10-17 23:19
你用汇编语言,还是c语音?,
复制有错误吗
作者: snake1417    时间: 2017-9-26 00:25
谢谢分享
作者: ZHANmoshen    时间: 2017-9-26 11:14
延时一下在判断 不就行了,若按键还按着  说明是长按
作者: cuihengrong    时间: 2017-9-26 13:25
没看明白上面的程序
作者: wulin    时间: 2017-9-26 13:49
xinxian 发表于 2014-10-17 21:24
**** 作者被禁止或删除 内容自动屏蔽 ****

好用啊,难道你不是用C语言?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1