Ⅰ 請問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) 函數語句為空,即程序一直等待在此處循環。(即等待鬆手)