- #include<reg51.h>
- sbit KEY=P1^0;
- int t0=0;
- void DelayMs(int x)
- {
- int i;
- while(x--) for(i=0;i<120;i++);
- }
- int KEY_SCAN(bit a)
- {
- int t=0;
- if(!a)
- {
- DelayMs(5);
- while(!a) t=++t%50,DelayMs(50); //按键的时长
- t0=++t0%4;
- }
- if(t0==1 && t<5) return 1; //单击
- if(t0==2 && t<5) return 2; //双击
- if(t0==3 && t<5) return 3; //三击
- if(t>5) return 4; //长按
- return 0;
- }
- void main()
- {
- int i=0,j=0;
- while(1)
- {
- i=KEY_SCAN(KEY); //按键返回的值会覆盖
- DelayMs(100);
- j++;
- if(j==20) t0=0; //长时间不按键,清除按键次数
- }
- }
- //希望有用,我也是新手!
复制代码 |