一键多功能c程序

我现在在P1.0上接了个LED,低电位亮,高电位灭。在P0.0上接了个按键到地。我想要用这个按键来控制这个灯,控制方式如下:轻按一下KEY,LED亮,再次轻按,LED灭,... 我现在在P1.0上接了个LED,低电位亮,高电位灭。在P0.0上接了个按键到地。我想要用这个按键来控制这个灯,控制方式如下:轻按一下KEY,LED亮,再次轻按,LED灭,长按2S,LED缓慢闪烁,再次长按2S,LED灭。连续按两下(双击) LED快速闪烁。这样的程序该怎么写,求大神指点。 展开
 我来答
zhangsonglin_c
高粉答主

2015-07-13 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.7万
采纳率:83%
帮助的人:7048万
展开全部
按键,一般引起中断。在中断程序中处理。增加3个共用变量按键计数器、按键计时器、按键总计时器,计时。由按键中断程序与时钟中断程序共同协作,应该可以完成相应动作。另外,可能需要硬件支持,比如,长按,自动定时发出中断(有的硬件,按下只是发出一个中断,需要释放之后再次按下,才会发出第二个中断,这时要用单击、双击、3击的办法区分)。
设单击,时间a(ms),
双击,时间b(ms),
长按,时间间隔c(ms),时间总长d(ms)
a<c<b<d

单击时,按键中断程序,设置按键计数,按键时间计数,按键总时间计数,并且设置时钟定时e(ms)>max(a,b,c,d)之后发出中断,如果,在e(ms)内,没有第二次按键,则时钟中断查看按键计数,为1,执行单独按键功能;为2,执行双击功能;大于等于3,执行长按功能;然后都要清除按键计数器,按键计时器,清除定时器。
如果在e(ms)内,第二次按键中断到来,按键中断程序,将按键计数器增加1,查看时间间隔,如果在b(ms)左右(程序应该允许一个误差),执行双击功能,清除时钟中断,清除按键计数器、按键计时器;如果时间间隔在c(ms)左右,按键计数增1,按键计时器更新;
按键数大于2之后,每次按键中断到来,仅仅增加按键计数器,更新按键时间计数器,计算总时间,如果达到d时间左右(允许一个误差),执行长按功能,清除时间中断、各个有关计数器。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式