您现在所在的是:

单片机论坛

回帖:10个,阅读:1320 [上一页] [1] [2] [下一页]
1034
wrock
文章数:36
年度积分:50
历史总积分:1034
注册时间:2008/10/27
发站内信
发表于:2011/7/16 8:02:30
#0楼
请问下51单片机外部按键,如何实现不管按键按下多长时间,只要没有按键电平变化,内部数据只加一个数。
40345
tigermu 版主
文章数:14903
年度积分:1303
历史总积分:40345
注册时间:2004/8/12
发站内信
2018论坛优秀版主
2018春节活动(二)
2017论坛优秀版主
2017国庆活动(一)
2016论坛优秀版主
2016国庆活动(一)
2015论坛优秀版主
西门子logo体验(三)
英威腾PLC体验(三)
2015春节活动
2014论坛优秀版主
2013论坛优秀版主
2012论坛优秀版主
2010年度论坛贡献奖
发表于:2011/7/16 9:27:18
#1楼
当电平变化再确认按键就可以了。
清泉石上,明月松间。
758
hDragon
文章数:19
年度积分:50
历史总积分:758
注册时间:2011/3/30
发站内信
发表于:2011/7/22 9:15:39
#2楼
一点思路
楼上的问题:在单片机系统中,对按键的处理一般有如下两个时机,一是在判断出确实有按键按下后,马上执行按键功能,然后再等待按键释放;二是在判断出有按键按下后,先不执行按键功能,一直等待按键释放,在按键释放的一瞬间执行按键解释程序。你的问题可以用后一种方式实现。
3641
yueliang150
文章数:389
年度积分:50
历史总积分:3641
注册时间:2003/4/24
发站内信
发表于:2011/7/25 21:01:03
#3楼
#include <reg52.h>

//实际使用中输入要进行消抖处理;
//输入
sbit X0=P1^0;
sbit X1=P1^1;
sbit X2=P1^2;
//输出
sbit Y0=P0^0;
sbit Y1=P0^1;
sbit Y2=P0^2;
//
bit M0,M1,M2;  //辅助标志
void main(void)
{
M0=0;M1=0; M2=0;    ;
while(1)
{  
//应用程序*****************************************
if(X0==1)Y0=0;  //X0按下,一直执行Y0亮,X0松开Y0一直保持亮

if(X1==1)Y1=0;  //X0按下,一直执行Y0亮
else   Y1=1;  //X0松开,Y0灭

if(X2==1 && M0==0)  //X2按下,
{
M0=1;Y2=0;  //Y2执行一次亮,X2一直按下也只
}  
if(X2==0 && M0==1){M0=0;Y2=1;}  //X2松开,Y2灭后不再执行,
}
}
单片机、ARM产品开发设计;
小设备、夹具、治具控制器设计开发;数码管、点阵LED电子看板开发;
27950
guanyumou 版主
文章数:10552
年度积分:1133
历史总积分:27950
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2012/1/2 13:57:52
#4楼
以下是引用wrock在2011/7/16 8:02:30的发言:
请问下51单片机外部按键,如何实现不管按键按下多长时间,只要没有按键电平变化,内部数据只加一个数。
你的意思是检测上升沿或者下降沿吗?应该是这个意思吧!
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
1261
746205442
文章数:277
年度积分:50
历史总积分:1261
注册时间:2011/11/14
发站内信
发表于:2012/1/2 16:53:12
#5楼
检测键的释放!
2181
jog0821
文章数:250
年度积分:50
历史总积分:2181
注册时间:2010/6/16
发站内信
发表于:2012/1/5 21:54:38
#6楼
if(!x0)
{
y0=0;
while(!x0);
}
使用 while 语句即可!
天道酬勤!
9620
Kate
文章数:1123
年度积分:68
历史总积分:9620
注册时间:2002/3/24
发站内信
发表于:2012/1/6 9:44:43
#7楼
不建议采用while语句,一while起来其他事情都不能处理了。
人有人意我有我意合得人意恐非我意合得我意恐非人意人意我意恐非天意合得天意自然如意
513
就是爱你
文章数:13
年度积分:50
历史总积分:513
注册时间:2012/1/17
发站内信
发表于:2012/1/17 14:06:13
#8楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
2181
jog0821
文章数:250
年度积分:50
历史总积分:2181
注册时间:2010/6/16
发站内信
发表于:2012/1/19 22:18:50
#9楼
以下是引用Kate在2012/1/6 9:44:43的发言:
不建议采用while语句,一while起来其他事情都不能处理了。
按键释放的问题      楼上的可能有更好的建议么       欢迎交流!

楼主可能已经解决了这个问题
天道酬勤!

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

109.2007