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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

C51單片機按鍵添加防抖動延時后,其他按鍵就無效了?

[復制鏈接]
跳轉到指定樓層
樓主
K1添加防抖動延時后,其他按鍵就無效了,但是不添加的話,按一下會跳好多個

單片機代碼如下
#include<reg51.h>
#include<intrins.h>
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
unsigned int flag;  
void delay(int x)
{
int i,j;
for(i=x;i>0;x--)
  for(j=110;j>0;j--);
}
void main(void)
{
flag=0;  
while(1)
{
  if(K2==0)  
   {
   flag=1;
   P0=0xf0;
   }
  else if(K3==0)  
  {
   flag=1;
   P0=0x0f;
  }
  else if(K4==0)  
  {
   flag=0;
   P0=0xff;
  }
  else if(K1==0)   
  {   
     if(flag==0)
     P0=0xfe;
    else
    P0=_crol_(P0,1);
   flag=1;
  }
}
}

捕獲.PNG (144.09 KB, 下載次數: 103)

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

使用道具 舉報

沙發
ID:687694 發表于 2020-3-18 22:22 | 只看該作者
這圖上上電復位認真的嗎?防抖不會令其他按鍵失效,一定是寫錯了,最常見防抖是delay(x);if。。。。
回復

使用道具 舉報

板凳
ID:213173 發表于 2020-3-19 08:50 | 只看該作者
在你的程序中K1按一下會跳好多次是因為移位能夠觀察到,K2~K4也跳好多次只不過內容不變你觀察不到。添加一個標志flag并不能防抖動。修改如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. sbit K1=P1^0;
  4. sbit K2=P1^1;
  5. sbit K3=P1^2;
  6. sbit K4=P1^3;
  7. bit flag=0;  
  8. bit sign=0;

  9. void delay(unsigned int x)
  10. {
  11.         unsigned int i,j;
  12.         for(i=x;i>0;i--)
  13.                 for(j=110;j>0;j--);
  14. }

  15. void main(void)
  16. {
  17.         while(1)
  18.         {
  19.                 if((P1&0x0f)!=0x0f)
  20.                 {
  21.                         delay(10);
  22.                         if((P1&0x0f)!=0x0f && sign==0)
  23.                         {
  24.                                 sign=1;
  25.                                 if(K2==0)  
  26.                                 {
  27.                                         flag=0;
  28.                                         P0=0xf0;
  29.                                 }
  30.                                 else if(K3==0)  
  31.                                 {
  32.                                         flag=0;
  33.                                         P0=0x0f;
  34.                                 }
  35.                                 else if(K4==0)  
  36.                                 {
  37.                                         flag=0;
  38.                                         P0=0xff;
  39.                                 }
  40.                                 else if(K1==0)   
  41.                                 {   
  42.                                         if(flag==0)
  43.                                         {
  44.                                                 P0=0xfe;
  45.                                                 flag=1;
  46.                                         }
  47.                                         else P0=_crol_(P0,1);       
  48.                                 }
  49.                         }
  50.                 }
  51.                 else sign=0;
  52.         }
  53. }
復制代碼
回復

使用道具 舉報

地板
ID:704397 發表于 2020-3-19 18:13 | 只看該作者
lovexulu 發表于 2020-3-18 22:22
這圖上上電復位認真的嗎?防抖不會令其他按鍵失效,一定是寫錯了,最常見防抖是delay(x);if。。。。

好的,謝謝
回復

使用道具 舉報

5#
ID:704397 發表于 2020-3-19 18:14 | 只看該作者
wulin 發表于 2020-3-19 08:50
在你的程序中K1按一下會跳好多次是因為移位能夠觀察到,K2~K4也跳好多次只不過內容不變你觀察不到。添加一 ...

可以了可以了,謝謝謝謝
回復

使用道具 舉報

6#
ID:372579 發表于 2020-3-19 19:55 | 只看該作者
這個問題我也可以學習了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区,视频 | 91高清在线观看 | 久久久久久成人 | 成人伊人 | 日本天天操 | 欧美激情综合五月色丁香小说 | h视频免费在线观看 | 九九久久久 | 国产精品国产成人国产三级 | 欧美亚洲另类丝袜综合网动图 | 97视频久久 | 久久久影院 | 亚洲视频在线播放 | 日韩一级免费电影 | 亚洲一区二区三区四区五区午夜 | 国产高清免费视频 | 国产伦一区二区三区四区 | 亚洲一区二区中文字幕 | 国产精品视频在线播放 | 国产精品一区一区 | 久久亚洲国产精品日日av夜夜 | 国产午夜影院 | 韩国主播午夜大尺度福利 | 亚洲a一区 | 日韩中文字幕一区二区 | 色婷婷精品久久二区二区蜜臂av | 亚洲自拍偷拍欧美 | 日本成人在线播放 | 99视频在线 | 特级做a爰片毛片免费看108 | 美女久久久久久久久 | 久久久av一区 | 国产精品久久久久av | 久草免费在线 | 国产乱码精品1区2区3区 | 天堂va在线观看 | 在线观看成人精品 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 亚洲劲爆av | av一区二区三区在线观看 | 亚洲视频在线观看一区二区三区 |