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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

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

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

}
elsekey_flag1=1;

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


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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

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

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


回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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


回復(fù)

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

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

個(gè)人觀點(diǎn)。
回復(fù)

使用道具 舉報(bào)

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

樓主說(shuō)的對(duì),我理解錯(cuò)了,就是正如你所說(shuō)的,沒(méi)有按下時(shí)計(jì)時(shí)清零
回復(fù)

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产免费一区 | 亚洲国产中文字幕 | 精品久久久久久亚洲综合网 | 日本视频在线 | av夜夜操 | 国产精品视频一区二区三区 | 日日夜夜免费精品视频 | 四虎影院新地址 | 密桃av| 亚洲一区二区免费看 | 久久久久久国产一区二区三区 | 日本一区二区三区在线观看 | 亚洲欧美激情国产综合久久久 | 精品一区二区在线观看 | 欧美色综合天天久久综合精品 | 97国产精品视频人人做人人爱 | 免费看a| 久久这里有精品 | 二区三区视频 | 亚洲高清一区二区三区 | 91在线观看免费视频 | 亚洲精品自在在线观看 | 免费毛片网站 | 亚洲国产高清高潮精品美女 | 成人精品鲁一区一区二区 | 日韩在线大片 | 日韩视频福利 | 日韩中文一区二区三区 | 日本天堂视频 | 欧美视频第二页 | 欧美精品一二区 | 欧美一区二区三区在线 | 精品久久久久久久久久久院品网 | 国产精品欧美一区二区 | 久久久久国产 | 成人在线精品视频 | 日韩aⅴ视频 | 成人视屏在线观看 | 精品av| 亚洲一区国产 | 天天想天天干 |