登录
首页 单片机论坛
回帖 发帖
正文

主题:51单片机这样的按键如何实现?

点击:1369 回复:10

请问下51单片机外部按键,如何实现不管按键按下多长时间,只要没有按键电平变化,内部数据只加一个数。
11-07-16 08:02
当电平变化再确认按键就可以了。
11-07-16 09:27
楼上的问题:在单片机系统中,对按键的处理一般有如下两个时机,一是在判断出确实有按键按下后,马上执行按键功能,然后再等待按键释放;二是在判断出有按键按下后,先不执行按键功能,一直等待按键释放,在按键释放的一瞬间执行按键解释程序。你的问题可以用后一种方式实现。
11-07-22 09:15
#include
//实际使用中输入要进行消抖处理;
//输入
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灭后不再执行,
}
}
11-07-25 21:01

引用 wrock 在 2011/7/16 8:02:30 发言【内容省略】

你的意思是检测上升沿或者下降沿吗?应该是这个意思吧!
12-01-02 13:57
检测键的释放!
12-01-02 16:53
if(!x0)
{
y0=0;
while(!x0);
}
使用 while 语句即可!
12-01-05 21:54
不建议采用while语句,一while起来其他事情都不能处理了。
12-01-06 09:44
8楼
该帖内容不符合相关规定!
12-01-17 14:06

引用 Kate 在 2012/1/6 9:44:43 发言【内容省略】

按键释放的问题      楼上的可能有更好的建议么       欢迎交流!
楼主可能已经解决了这个问题
12-01-19 22:18

上一页下一页

工控新闻

更多新闻资讯