求助一个按键扫描程序,支持长按短按功能,测试通过的。
这是坛友写的一款非常简单实用的长短按例程,转发给你参考。
#include <AT89X51.H>
#define d 2500
#define c 20*d
unsigned int cnt;
sbit key=P3^6;
sbit LED1=P1^0;
sbit LED2=P1^4;
void main()
{
key=1;
LED1=1;
LED2=1;
cnt=0;
while(1)
{
if(key)
{
if(cnt>d && cnt<c)//短按´
LED1=!LED1;
cnt=0;
}
else
{
cnt++;
if( cnt==c )//长按
LED2=!LED2;
if( cnt>c )
cnt=c+1;
}
}
}
谢谢小编分享,正在学习中。