怎么一个按键实现三功能C语言程序

怎么一个按键实现三功能C语言程序,第1张

一个按键实现三个功能,可以是点按(按键时间不超过500毫秒),双击(500毫秒内按两次),长按(超过1秒)。具体可以参考马潮老师的按键长短按的程序,或者可以自己研究一下原理。

写一个定时器,每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)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11113459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存