登录
首页
单片机论坛
回帖
发帖
正文
主题:51单片机这样的按键如何实现?
点击:1373 回复:10
楼主
编辑
引用
管理
wrock
请问下51单片机外部按键,如何实现不管按键按下多长时间,只要没有按键电平变化,内部数据只加一个数。
11-07-16 08:02
1楼
编辑
引用
管理
tigermu
当电平变化再确认按键就可以了。
11-07-16 09:27
2楼
编辑
引用
管理
hDragon
楼上的问题:在单片机系统中,对按键的处理一般有如下两个时机,一是在判断出确实有按键按下后,马上执行按键功能,然后再等待按键释放;二是在判断出有按键按下后,先不执行按键功能,一直等待按键释放,在按键释放的一瞬间执行按键解释程序。你的问题可以用后一种方式实现。
11-07-22 09:15
3楼
编辑
引用
管理
yueliang150
#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
4楼
编辑
引用
管理
guanyumou
引用
wrock
在 2011/7/16 8:02:30 发言
【内容省略】
你的意思是检测上升沿或者下降沿吗?应该是这个意思吧!
12-01-02 13:57
5楼
编辑
引用
管理
746205442
检测键的释放!
12-01-02 16:53
6楼
编辑
引用
管理
jog0821
if(!x0)
{
y0=0;
while(!x0);
}
使用 while 语句即可!
12-01-05 21:54
7楼
编辑
引用
管理
Kate
不建议采用while语句,一while起来其他事情都不能处理了。
12-01-06 09:44
8楼
管理
就是爱你
该帖内容不符合相关规定!
12-01-17 14:06
9楼
编辑
引用
管理
jog0821
引用
Kate
在 2012/1/6 9:44:43 发言
【内容省略】
按键释放的问题 楼上的可能有更好的建议么 欢迎交流!
楼主可能已经解决了这个问题
12-01-19 22:18
上一页
下一页
工控新闻
芯科科技FG23L无线SoC现已全面供货,为Sub-GHz物联网应用提供最佳性价比
SENSOR CHINA 十年:定义中国传感产业的全球坐标,书写智能感知的未来
工信部召开工业和信息化“十五五”规划企业座谈会
许继电气携手上海大学共建电力装备具身智能联合创新中心
大联大诠鼎集团推出两款基于英诺赛科产品的48V四相2kW降压电源方案
繁易的战略进击:从HMI到PLC,走向全栈式自动化融合创新
安森美将在PCIM Asia 2025展示汽车、工业与AI数据中心前沿电源创新技术
研华模块化电脑SOM-6884:通过AI集成和可扩展设计推进人形机器人技术发展
更多新闻资讯