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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6176|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機獨立按鍵程序里判斷key1 和key2同時按下的意義

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:753985 發(fā)表于 2020-5-17 14:37 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
單片機設(shè)置兩個獨立按鍵,key1 和key2 key1 按下加0.1或10 ,key2 按下減0.1或10 ,想問一下,這個程序里判斷key1 和key2同時按下有什么意義嗎,是消抖嗎還是什么,在仿真里反正是同時按下不增也不減,程序如下:
void key()
{
if(OK==1)
{
if(!key_1) //判斷按鍵是否按下
{
OK=0;
if(sec==3) //執(zhí)行按鍵對應(yīng)的控制內(nèi)容
{
if(shu<3000)shu+=10; //長按處理
}elseif(sec>1)
{
if(shu<3000)shu+=1; //短按處理
}
else
{
if(key_flag1)
{
key_flag1=0;
if(shu<3000)shu+=1;
}
}
SectorErase(0x2000); //保存數(shù)據(jù)到單片機EEPROM中
byte_write(0x2000,shu/256);
byte_write(0x2001,shu%256);

}
elsekey_flag1=1;

if(!key_2) //判斷按鍵是否按下
{
OK=0; //執(zhí)行按鍵對應(yīng)的控制內(nèi)容
if(sec==3)
{
if(shu>200)shu-=10;//長按處理
}elseif(sec>1)
{
if(shu>200)shu-=1; //短按處理
}
else
{
if(key_flag2)
{
key_flag2=0;
if(shu>200)shu-=1; //短按處理
}
}
SectorErase(0x2000); //保存數(shù)據(jù)到單片機EEPROM中
byte_write(0x2000,shu/256);
byte_write(0x2001,shu%256);
}
elsekey_flag2=1;
}
if(key_1==1&&key_2==1) //判斷按鍵是否按下
{
sec=0; //重新計時
}
}


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

使用道具 舉報

15#
ID:1120100 發(fā)表于 2024-5-10 15:36 | 只看該作者
能給我講講嗎
回復(fù)

使用道具 舉報

14#
ID:753985 發(fā)表于 2020-5-19 11:32 | 只看該作者
TTQ001 發(fā)表于 2020-5-19 04:57
為了避免無效的按鍵操作,必須檢測到同時或幾乎同時發(fā)生的兩個按鍵。 如果發(fā)生這種情況,則將其視為無效的 ...

一語驚人的大佬,這是我最想要的答案,
回復(fù)

使用道具 舉報

13#
ID:753985 發(fā)表于 2020-5-19 11:30 | 只看該作者
wulin 發(fā)表于 2020-5-19 08:25
樓主理解錯誤并誤導(dǎo)大家。程序中根本沒有兩個按鍵同時按下的語句。只是判斷在沒有按鍵按下時sec清0。
        i ...

樓主說的對,我理解錯了,就是正如你所說的,沒有按下時計時清零
回復(fù)

使用道具 舉報

12#
ID:695961 發(fā)表于 2020-5-19 11:27 | 只看該作者
我覺得主要是節(jié)約硬件資源開銷,減少GPIO的使用。

按鍵一般有【短按,長按,雙擊,三擊】,這樣使用一個GPIO就可以讓用戶有四種操作。如果再配上組合(不建議使用),如三長兩短,就像發(fā)信號一樣,就可以觸發(fā)一些內(nèi)置的管理員操作,就更高大上了。

個人觀點。
回復(fù)

使用道具 舉報

11#
ID:695961 發(fā)表于 2020-5-19 11:24 | 只看該作者
兩個按鍵同時按是有意議的判斷。

現(xiàn)在的觸摸屏都支持10個觸點判斷的。
回復(fù)

使用道具 舉報

10#
ID:282850 發(fā)表于 2020-5-19 09:51 | 只看該作者
wuxinxin 發(fā)表于 2020-5-18 17:24
清零的意義是什么呢 ? 仿真里 同時按下是不加也不減,不加也不減為什么要設(shè)計判斷它呢?我好蒙圈

清零就是 sec=0;
K1、K2才設(shè)計成加減,清零是到一定值后,迅速變成0,不用再一步步加減。
回復(fù)

使用道具 舉報

9#
ID:213173 發(fā)表于 2020-5-19 08:25 | 只看該作者
wuxinxin 發(fā)表于 2020-5-18 17:24
清零的意義是什么呢 ? 仿真里 同時按下是不加也不減,不加也不減為什么要設(shè)計判斷它呢?我好蒙圈

樓主理解錯誤并誤導(dǎo)大家。程序中根本沒有兩個按鍵同時按下的語句。只是判斷在沒有按鍵按下時sec清0。
        if(key_1==1 && key_2==1) //判斷按鍵是否按下        {
                sec=0; //重新計時
        }


回復(fù)

使用道具 舉報

8#
ID:420836 發(fā)表于 2020-5-19 04:57 | 只看該作者
為了避免無效的按鍵操作,必須檢測到同時或幾乎同時發(fā)生的兩個按鍵。 如果發(fā)生這種情況,則將其視為無效的鍵操作。
回復(fù)

使用道具 舉報

7#
ID:753985 發(fā)表于 2020-5-18 17:24 | 只看該作者
f556 發(fā)表于 2020-5-18 14:55
同時按下是對sec清零

清零的意義是什么呢 ? 仿真里 同時按下是不加也不減,不加也不減為什么要設(shè)計判斷它呢?我好蒙圈
回復(fù)

使用道具 舉報

6#
ID:282850 發(fā)表于 2020-5-18 14:55 | 只看該作者
同時按下是對sec清零
回復(fù)

使用道具 舉報

5#
ID:753985 發(fā)表于 2020-5-18 10:13 | 只看該作者
man1234567 發(fā)表于 2020-5-17 19:26
程序設(shè)計邏輯有點呵呵,程序不完整先猜著:
雙鍵同按是按鍵按下的計時歸零(可能是在中斷里,抬起按鍵并不歸零 ...

對樓主 猜對了,中斷里也涉及了按鍵控制,但是還不太懂,我覺得可能是是消抖,中斷程序如下,還望樓主指點
void init_1() interrupt 1  //定時器1 計數(shù)器0  interrupt 1 是定時器T0中斷
{
        TL0 = 0xB0;               
        TH0 = 0x3C;                //設(shè)置定時初值
        ms++;                   //50ms定時計數(shù)
        if(ms%4 ==0)          //按鍵處理時間控制  每200ms處理一次
        {
                OK=1;
        }
        if(ms%5==0)          //蜂鳴器報警,指示燈閃爍處理
        {
                if(beep1==1)
                {
                        led=0;
                        beep=!beep;
                }else
                {
                    led=1;
                        beep=1;
                }
        }
        if(ms>19)            //1s定時  處理 定時器定時50ms,故20次中斷就表示1s鐘到達
        {
                shu1=(long)cs*65535+TH1*256+TL1;        //計算頻率
                cs=TH1=TL1=0;
                ms=0;
                if(!key_1||!key_2)           //按鍵長按處理
                {
                        sec++;
                        if(sec>3)                 //長按3s判斷
                        {
                                sec=3;
                        }
                }else
                {
                        sec=0;
                }
        }
}

void init_3() interrupt 3  //外部中斷檢測當(dāng)前傳感器頻率  //定時器計數(shù)器1
{
        cs++;        //中斷溢出計數(shù)
}


回復(fù)

使用道具 舉報

地板
ID:753985 發(fā)表于 2020-5-18 10:07 | 只看該作者
Magiks 發(fā)表于 2020-5-17 17:44
應(yīng)該是消抖,普中的視頻里有講這個

還望樓主能不能詳細(xì)指點一下,或者可不可以分享一下視頻內(nèi)容
回復(fù)

使用道具 舉報

板凳
ID:584814 發(fā)表于 2020-5-17 19:26 | 只看該作者
程序設(shè)計邏輯有點呵呵,程序不完整先猜著:
雙鍵同按是按鍵按下的計時歸零(可能是在中斷里,抬起按鍵并不歸零)
回復(fù)

使用道具 舉報

沙發(fā)
ID:754172 發(fā)表于 2020-5-17 17:44 | 只看該作者
應(yīng)該是消抖,普中的視頻里有講這個
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区精品视频 | 国产无人区一区二区三区 | 国产高清一区二区 | 久久久91精品国产一区二区精品 | 亚洲国产第一页 | 四虎影视免费观看 | 亚洲电影免费 | 国产毛片视频 | 成人免费一区二区三区视频网站 | 免费在线成人 | 精品国产乱码久久久久久丨区2区 | 国产成人精品午夜视频免费 | 日韩视频精品在线 | 少妇无套高潮一二三区 | 久久国产精品视频 | 久久久青草婷婷精品综合日韩 | 请别相信他免费喜剧电影在线观看 | 亚洲最新在线 | 精区3d动漫一品二品精区 | 在线播放亚洲 | 国产成人免费观看 | 成年网站在线观看 | 国产福利91精品一区二区三区 | 国产精品日韩在线 | 精品美女久久久 | 欧美日韩电影一区二区 | 欧美一区二区三区在线观看 | 天堂中文在线观看 | 亚洲精品一区二区三区蜜桃久 | 久久精品久久久 | 看av网 | 蜜臀av日日欢夜夜爽一区 | 天天干天天操天天射 | 特黄视频 | 国产一级在线 | 夜夜爽99久久国产综合精品女不卡 | www视频在线观看 | 久久久久久久国产精品视频 | 国产精品久久久久久吹潮 | 久久精品a级毛片 | 色资源在线 |