久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2557|回復: 12
打印 上一主題 下一主題
收起左側

C語言if判斷怎么不靈,按一次按鍵LED都全亮了,IF判斷無效樣的,那問題?

  [復制鏈接]
跳轉到指定樓層
樓主
ID:475031 發表于 2019-12-28 12:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
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();                                                         

}
                                 

}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:395068 發表于 2019-12-28 12:45 | 只看該作者
程序里按鍵沒有松手檢測,按下去等于是ID一直在+,速度很快,看上去燈就是一直亮著

評分

參與人數 1黑幣 +8 收起 理由
鬼推磨 + 8

查看全部評分

回復

使用道具 舉報

板凳
ID:332444 發表于 2019-12-28 12:51 | 只看該作者
按鈕程序沒寫等待釋放語句,因此,按鍵值會不停增大,某時候會超過8,如果你改判斷為>=8試一下肯定不同。
回復

使用道具 舉報

地板
ID:437615 發表于 2019-12-28 12:59 | 只看該作者
去抖的時間太短,沒有松手檢測,沒有后沿去抖
回復

使用道具 舉報

5#
ID:395068 發表于 2019-12-28 13:07 | 只看該作者
而且你的燈點亮后,也沒關掉
回復

使用道具 舉報

6#
ID:475031 發表于 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;
}
}

我硬是搞的懷疑人生了,
的確是你說的這個問題。我增加按鍵松手檢測,就好使了,謝謝你指導。。
回復

使用道具 舉報

7#
ID:394424 發表于 2019-12-28 13:24 | 只看該作者
按鍵檢測不建議你用delay做  你去看看別人怎么做的  ,  按鍵觸發后 又可能一直在觸發,你要控制好條件,是在按下去觸發還是松手觸發,還是一直按著觸發
回復

使用道具 舉報

8#
ID:395068 發表于 2019-12-28 13:38 | 只看該作者
166864646883 發表于 2019-12-28 12:45
程序里按鍵沒有松手檢測,按下去等于是ID一直在+,速度很快,看上去燈就是一直亮著

而且你的燈打開之后就沒有關掉了,所以肯定是一直亮著
回復

使用道具 舉報

9#
ID:481073 發表于 2019-12-28 14:32 | 只看該作者
代碼沒有寫好,放到死循環里面了,建議用一個標志位來進行判斷,這樣是達不到按鍵的效果的,死循環里面肯定會一直增加的。
回復

使用道具 舉報

10#
ID:676031 發表于 2019-12-28 14:59 | 只看該作者
在if檢測按鍵后面加一個松手檢測,,也就是用while一直循環k1==0;當k1==1表示松手跳出while
回復

使用道具 舉報

11#
ID:676596 發表于 2019-12-29 14:15 | 只看該作者
沒有去抖動吧,設置一個延時去抖動就行了
回復

使用道具 舉報

12#
ID:130230 發表于 2019-12-30 16:46 | 只看該作者
沒有抬起檢測。
回復

使用道具 舉報

13#
ID:677934 發表于 2019-12-31 13:36 | 只看該作者
你加完之后要再檢測一遍是否還是高電平,不是就停止
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久精品一区二区三区 | 日日夜夜天天久久 | 亚洲国产视频一区 | 亚洲午夜精品在线观看 | 日日日日操 | 成人免费久久 | 国产一区二区精品在线观看 | 欧美在线天堂 | 91av在线看 | 91网站在线看 | 精品国产乱码久久久久久果冻传媒 | 国产999精品久久久影片官网 | 国产精品a一区二区三区网址 | 新疆少妇videos高潮 | 免费人成在线观看网站 | 日韩中文字幕一区二区 | 久草在线视频中文 | 久久久久高清 | 国产精品视频97 | 久久精品毛片 | 久久成人一区二区三区 | 国产视频中文字幕在线观看 | www国产成人| 99成人免费视频 | 玖玖视频免费 | 欧美一区久久 | 一区二区三区四区免费在线观看 | 精品在线一区二区三区 | 欧美一区二区黄 | 久久亚洲一区二区 | 在线一区视频 | 成人国产精品久久久 | 国产一区二区美女 | 成人精品视频在线观看 | 天天视频成人 | 一区二区手机在线 | 色综合中文 | 国产精品高潮呻吟久久 | 亚洲精品久久久久久久久久吃药 | 国产中文字幕在线观看 | 日本一区二区高清不卡 |