写一个定时器,每10毫秒读一次按键端口值。如果是按下的值,则在下一个10毫秒时再检测一次按键端口值(消抖)。如果还是按下的值,则开始计数。根据技术值来判断是点按、双击还是长按。
如果你就是只有一个按键,可以这样做:设置一个寄存器Key_Times_Buf,然后记录第几次按键,通过这个值,处理相应的程序.if(Key_Pin==0)
{
Key_Times_Buf++
if(Key_Times_Buf>=3)
{
Key_Times_Buf=0
}
}
switch(Key_Times_Buf)
{
case 0:
//程序0
break
case 1:
//程序1
break
case 2:
//程序2
break
}
你说的是函数指针吗?
给个示例程序
#include <stdio.h>
void main()
{
int max(int, int)
int min(int, int)
int add(int, int)
void process(int, int, int (*fun)(int,int))
int a, b
printf("enter a and b:")
scanf("%d %d", &a, &b)
printf("max = " )
process(a, b, max)
printf("min = ")
process(a, b, min)
printf("sum = ")
process(a, b, add)
}
int max(int x, int y)
{
int z
if (x >y)
{z = x}
else
{z = y}
return z
}
int min(int x, int y)
{
int z
if (x <y)
{ z = x}
else
{ z = y}
return z
}
int add(int x, int y)
{
int z
z = (x + y)
return z
}
void process(int x, int y, int(*fun)(int, int))
{
int result
result = (*fun) (x, y)
printf("%d\n", result)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)