最近在用8*8点阵制作贪吃蛇游戏。为了简化程序,增强程序可读性,想要把对按键的消抖程序进行封装。但是消抖需要使用定时器。下面是消抖程序,放在定时器里的。有没有大神知道怎么把需要定时器的程序进行封装??
- /////////////////////////////
- count0++;
- if(count0==5)
- {
- count0=0;
- keyvalue=keyscan();//获取键值
- if(status==0)
- {
- if(keyvalue!=99) {pre_keyvalue=keyvalue; status=1;}
- }
- else if(status==1)
- {
- if(keyvalue==pre_keyvalue)
- {status=2; button=keyvalue; }//;
- }
- else
- {
- if(keyvalue==99) status=0;
- }
-
- }
复制代码- unsigned char keyscan(void)
- {
- int scan=0;
- P1=B11110111; scan=(scan<<4)|(P1>>4);
- P1=B11111011; scan=(scan<<4)|(P1>>4);
- P1=B11111101; scan=(scan<<4)|(P1>>4);
- P1=B11111110; scan=(scan<<4)|(P1>>4);
- scan=~scan;
-
- if(scan==0x0001) return(1);
- else if(scan==0x0002) return(2);
- else if(scan==0x0004) return(3);
- //else if(scan==0x0008) return(3);
- else if(scan==0x0010) return(4);
- else if(scan==0x0020) return(5);
- else if(scan==0x0040) return(6);
- //else if(scan==0x0080) return(7);
- else if(scan==0x0100) return(7);
- else if(scan==0x0200) return(8);
- else if(scan==0x0400) return(9);
- //else if(scan==0x0800) return(11);
- else return(99);
- }
复制代码
一周热门 更多>