欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
C語言if判斷怎么不靈,按一次按鍵LED都全亮了,IF判斷無效樣的,那問題?
[打印本頁]
作者:
鬼推磨
時間:
2019-12-28 12:06
標題:
C語言if判斷怎么不靈,按一次按鍵LED都全亮了,IF判斷無效樣的,那問題?
if判斷怎么不靈,按一次按鍵LED都全亮了,IF判斷無效樣的,那問題?
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned int ID=0;
sbit k1=P2^0; //按鍵1
sbit k2=P2^1; //按鍵2
sbit LED1=P2^2; //LED1
sbit LED2=P2^3; //LED2
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//------------延時-----------------
void key_control()
{
if(k1==0)
{
delay(5);
if(k1==0)
{
ID=ID+1;//每按一次按鍵,ID加1
}
}
if(ID==8) //判斷ID是不是等于8,是就運行下面,2個LED燈點亮
{
ID=0;
LED1=0;
LED2=0;
}
}
void main()
{
while(1)
{
key_control();
}
}
作者:
166864646883
時間:
2019-12-28 12:45
程序里按鍵沒有松手檢測,按下去等于是ID一直在+,速度很快,看上去燈就是一直亮著
作者:
xianfajushi
時間:
2019-12-28 12:51
按鈕程序沒寫等待釋放語句,因此,按鍵值會不停增大,某時候會超過8,如果你改判斷為>=8試一下肯定不同。
作者:
zhy123654
時間:
2019-12-28 12:59
去抖的時間太短,沒有松手檢測,沒有后沿去抖
作者:
166864646883
時間:
2019-12-28 13:07
而且你的燈點亮后,也沒關掉
作者:
鬼推磨
時間:
2019-12-28 13:20
166864646883 發表于 2019-12-28 12:45
程序里按鍵沒有松手檢測,按下去等于是ID一直在+,速度很快,看上去燈就是一直亮著
if(k1==0)//判斷按鍵是不是按下
{
delay(5);
if(k1==0)//再次判斷按鍵是不是按下
{
while(!k1);//等待按鍵釋放
ID=ID+1;
}
}
我硬是搞的懷疑人生了,
的確是你說的這個問題。我增加按鍵松手檢測,就好使了,謝謝你指導。。
作者:
Wprogrammer
時間:
2019-12-28 13:24
按鍵檢測不建議你用delay做 你去看看別人怎么做的 , 按鍵觸發后 又可能一直在觸發,你要控制好條件,是在按下去觸發還是松手觸發,還是一直按著觸發
作者:
166864646883
時間:
2019-12-28 13:38
166864646883 發表于 2019-12-28 12:45
程序里按鍵沒有松手檢測,按下去等于是ID一直在+,速度很快,看上去燈就是一直亮著
而且你的燈打開之后就沒有關掉了,所以肯定是一直亮著
作者:
流星2019
時間:
2019-12-28 14:32
代碼沒有寫好,放到死循環里面了,建議用一個標志位來進行判斷,這樣是達不到按鍵的效果的,死循環里面肯定會一直增加的。
作者:
doudou666
時間:
2019-12-28 14:59
在if檢測按鍵后面加一個松手檢測,,也就是用while一直循環k1==0;當k1==1表示松手跳出while
作者:
3136247262
時間:
2019-12-29 14:15
沒有去抖動吧,設置一個延時去抖動就行了
作者:
jizhongbiao
時間:
2019-12-30 16:46
沒有抬起檢測。
作者:
ykxdsy
時間:
2019-12-31 13:36
你加完之后要再檢測一遍是否還是高電平,不是就停止
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1