c语言按键长按双击,51单片机实现单按键单击、双击、长按功能

该程序展示了如何在51单片机上使用C语言处理单个按键的单击、双击和长按事件。通过键盘驱动函数`key_driver()`进行按键状态检测,包括消抖、计时和状态切换。中间层的`key_read()`函数则负责判断双击事件,根据按键事件的不同返回相应的状态,如无键、单击、双击或长按。
摘要由CSDN通过智能技术生成

#include "keyboard.h"

/***************************************************************************

程序功能:一个按键的单击、双击、长按。三种按键方式,然后做不同的处理。

这里以P1口的LED变化作为测试

单击:点亮P1口的第一个LED(低电平点亮)

双击:点亮P1口的第二个LED(低电平点亮)

长按:点亮P1口上的8个LED(低电平点亮)

***************************************************************************/

static unsigned char key_driver(void)

{

static unsigned char key_state_buffer1 = key_state_0;

static unsigned char key_timer_cnt1 = 0;

unsigned char key_return = key_no;

unsigned char key;

key = key_input;  //read the I/O states

switch(key_state_buffer1)

{

case key_state_0:

if(key == 0)

key_state_buffer1 = key_state_1;

//按键被按下,状态转换到按键消抖和确认状态//

break;

case key_state_1:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值