您的位置:首页 > 其它

简单有效的“单键复用”C51程序

2010-07-16 11:11 351 查看
简单有效的“单键复用”C51程序
2009-08-25 00:27
在做我的MINI POV时,考虑到空间有限,必须简化结构,尽量减少按键数量,最后设计只用两个按键作模式转换和时间调整,这样,需将其中的一键“单键复用”,采用最常见的是“短击”、“长击”和“双击”三种模式。这样一来编程就成了问题。
然而,真不明白一个简单的“单键复用”的问题居然在网上还找不到合适的现成的程序,找到的也是一些高深莫测的(还用上什么状态机之类的)东西。没办法,还是自己动手吧!
nn=0; //“按下”时长计数器清零
mm=0; //“释放”时长计数器清零
if(set0==0){ //如按键set0按下
DelayMs(30); //延时(消抖)
if(set0==0){ //如按键set0按下
do { //“按下”计数器开始计数
nn++;
DelayMs(10);
}while(set0==0);
if(nn<50) //如“按下”计数小于设定值(短击的最大限制值)
{
DelayMs(30); //延时(消抖)
do { //“释放”计数器开始计数
mm++;
DelayMs(10);
}while((mm<40)&&(set0==1)); //当超出设定值或再次有“按下”事件发生,结束计数
DelayMs(25); //延时(消抖)
do { //待到第二次的“按下”事件结束
}while(set0==0);
if(mm<40) Key_Num=3; else Key_Num=1; //在释放期间提前结束的为双击,否则为短击
}
else
{
Key_Num=2; //”按下”计数大于设定值为长击

}
}
}

嘿嘿,其实就这么简单。
有的人喜欢将简单问题复杂化,而本人更喜欢将复杂问题简单化。

类别:c51编程 |

| 添加到搜藏 | 分享到i贴吧 | 浏览(820) | 评论 (9)


登录后,您就出现在这里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: