Ⅰ 请问C51单片机,按键的松手检测语句应该放在什么位置
因为在第二个if语句里有P3的输出语句:P3=0x0f; 这样才能检测到P3!=0x0f是按键状态,才能等待按键松开,而在if语句外就会处于死循环。
Ⅱ at89c51单片机等待键释放的程序怎么写
楼上的都是使用等待按键松手的方法,比较容易理解,还有一种等待按键释放的程序段思路大概是这样的:设置一个标志位,然后,有按键按下置位标志位,按键松开清空标志位,去判断标志位,就知道按键松开了没,这样不用让cpu等待按键松开,在等待的时间里,cpu还可以做其他的事情
Ⅲ 按键 是按着不动还是一按就松手
按键就是一按之后就松手既有自锁程序。有的按键点按和长按有不同的功能需要针对产品具体说明书进行操作。
Ⅳ 51单片机独立按键程序松手时的判断程序出了问题但是不知道在哪里
#include<reg51.h>
#include<intrins.h>
#define K1 P0^0
#define uchar unsigned char
#define uint unsigned int
delay(uint,uint); //这里的分号吧
void main()
{
P2=0x01;
while(1)
{
if(K1==0)
{
delay(100,100);
P2=_cror_(P2,1) ; //
if(K1!=0) //
delay(100,100); //
}
}
}
delay(uint x,uint y)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<y;j++);
}
Ⅳ 单片机大侠 帮帮我 谢谢了!单片机按键短按,长按,弃抖动,松手检测程序
短按
用电平变换中端口最好
直接if(rb0)判断就行了
长按
if(rb0)
dealy(100ms);
if(rb0)
do;
抖动,就是一个确定的延时检测时间
if(rb0)
delay(10ms);
if(rb0)
do;
Ⅵ 求解释单片机键盘扫描的一段程序(关键是松手那块不明白)
松手检测也就是消抖嘛,在你这程序中就是
if
(key==0xff){
//如果读取不到P0口的值,比如是干扰,我们不做键值处理,返回
SPK=1;
//按键有松开,停止蜂鸣器响
return;
}
主要作用就是防止其他干扰信号误判成按键信号。
另一个就是假如你长按不放的话就要使它在那等待你放开才会执行程序,所以这在你这的程序就是
if(l_keyold==key)
{
//检测按键放开否,如果一样表明没放开,
return;
}
其实这个return可以不要,直接用分号等待也行,还有什么不懂的吗?
Ⅶ 求一单片机c语言程序:两个按键控制两个led,按键按住不放led闪烁,松手led熄灭
一个按键时程序如下:
while(1)
{
if(key==0)//按键按下
{ delayms(20);//延时消抖
if(key==0)//再次判断按键是否按下
{
while(key==0)//按键没有抬起
{ led=!led; delayms(200);}//LED闪烁
}
}
else led=0;
}
Ⅷ 为什么加按键松手检测
如果你不检测松开,你按下去的时间他整个程序扫描几遍了,会运行很快的,相当于只要是按着的,他就会检测 ,但是这按下去的这段时间他检测几遍了,就像你按了几次,如果加了,他就会检测按下去的键松开了没有,没有就会一直等待。
Ⅸ 单片机按键松手检测
电机转
代码放
等待按键松手
while()
加
号
即松手
再进行电机控制
if(!KEY1)
//检测按键按
{
DelayMs(200);
//
抖
if(!KEY1)
//检测按键确实按
进行按键处理
{
while(!KEY1);
//等待按键松手
Coil_A1
//遇
Coil_A1
用{A1=1;B1=0;C1=0;D1=0;}代替
DelayMs(Speed);
//改变
参数
调整电机转速
Coil_B1
DelayMs(Speed);
Coil_C1
DelayMs(Speed);
Coil_D1
DelayMs(Speed);
}
}
Ⅹ 郭天祥十天学会单片机中,按键松手检测语句 while(!key1);
如果key1 没有松手,即 key1=0;
' !'为取反;
则!key1=1, 此时While(!key1) 条件成立,while(!key1) 函数语句为空,即程序一直等待在此处循环。(即等待松手)