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

標題: 關于單片機獨立按鍵程序里判斷key1 和key2同時按下的意義 [打印本頁]

作者: wuxinxin    時間: 2020-5-17 14:37
標題: 關于單片機獨立按鍵程序里判斷key1 和key2同時按下的意義
單片機設置兩個獨立按鍵,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) //執行按鍵對應的控制內容
{
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); //保存數據到單片機EEPROM中
byte_write(0x2000,shu/256);
byte_write(0x2001,shu%256);

}
elsekey_flag1=1;

if(!key_2) //判斷按鍵是否按下
{
OK=0; //執行按鍵對應的控制內容
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); //保存數據到單片機EEPROM中
byte_write(0x2000,shu/256);
byte_write(0x2001,shu%256);
}
elsekey_flag2=1;
}
if(key_1==1&&key_2==1) //判斷按鍵是否按下
{
sec=0; //重新計時
}
}



作者: Magiks    時間: 2020-5-17 17:44
應該是消抖,普中的視頻里有講這個
作者: man1234567    時間: 2020-5-17 19:26
程序設計邏輯有點呵呵,程序不完整先猜著:
雙鍵同按是按鍵按下的計時歸零(可能是在中斷里,抬起按鍵并不歸零)
作者: wuxinxin    時間: 2020-5-18 10:07
Magiks 發表于 2020-5-17 17:44
應該是消抖,普中的視頻里有講這個

還望樓主能不能詳細指點一下,或者可不可以分享一下視頻內容
作者: wuxinxin    時間: 2020-5-18 10:13
man1234567 發表于 2020-5-17 19:26
程序設計邏輯有點呵呵,程序不完整先猜著:
雙鍵同按是按鍵按下的計時歸零(可能是在中斷里,抬起按鍵并不歸零 ...

對樓主 猜對了,中斷里也涉及了按鍵控制,但是還不太懂,我覺得可能是是消抖,中斷程序如下,還望樓主指點
void init_1() interrupt 1  //定時器1 計數器0  interrupt 1 是定時器T0中斷
{
        TL0 = 0xB0;               
        TH0 = 0x3C;                //設置定時初值
        ms++;                   //50ms定時計數
        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  //外部中斷檢測當前傳感器頻率  //定時器計數器1
{
        cs++;        //中斷溢出計數
}



作者: f556    時間: 2020-5-18 14:55
同時按下是對sec清零
作者: wuxinxin    時間: 2020-5-18 17:24
f556 發表于 2020-5-18 14:55
同時按下是對sec清零

清零的意義是什么呢 ? 仿真里 同時按下是不加也不減,不加也不減為什么要設計判斷它呢?我好蒙圈
作者: TTQ001    時間: 2020-5-19 04:57
為了避免無效的按鍵操作,必須檢測到同時或幾乎同時發生的兩個按鍵。 如果發生這種情況,則將其視為無效的鍵操作。
作者: wulin    時間: 2020-5-19 08:25
wuxinxin 發表于 2020-5-18 17:24
清零的意義是什么呢 ? 仿真里 同時按下是不加也不減,不加也不減為什么要設計判斷它呢?我好蒙圈

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



作者: f556    時間: 2020-5-19 09:51
wuxinxin 發表于 2020-5-18 17:24
清零的意義是什么呢 ? 仿真里 同時按下是不加也不減,不加也不減為什么要設計判斷它呢?我好蒙圈

清零就是 sec=0;
K1、K2才設計成加減,清零是到一定值后,迅速變成0,不用再一步步加減。
作者: chinayanhui    時間: 2020-5-19 11:24
兩個按鍵同時按是有意議的判斷。

現在的觸摸屏都支持10個觸點判斷的。
作者: chinayanhui    時間: 2020-5-19 11:27
我覺得主要是節約硬件資源開銷,減少GPIO的使用。

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

個人觀點。
作者: wuxinxin    時間: 2020-5-19 11:30
wulin 發表于 2020-5-19 08:25
樓主理解錯誤并誤導大家。程序中根本沒有兩個按鍵同時按下的語句。只是判斷在沒有按鍵按下時sec清0。
        i ...

樓主說的對,我理解錯了,就是正如你所說的,沒有按下時計時清零
作者: wuxinxin    時間: 2020-5-19 11:32
TTQ001 發表于 2020-5-19 04:57
為了避免無效的按鍵操作,必須檢測到同時或幾乎同時發生的兩個按鍵。 如果發生這種情況,則將其視為無效的 ...

一語驚人的大佬,這是我最想要的答案,
作者: fkjaa    時間: 2024-5-10 15:36
能給我講講嗎




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人在线免费电影 | 国产成人精品久久二区二区 | 亚洲精品av在线 | 欧美性video 精品亚洲一区二区 | 日韩欧美网 | 欧美激情视频一区二区三区在线播放 | 夜夜骑首页 | 伊人网在线播放 | 中文字幕日韩一区 | av官网在线| 欧美激情99| 精品视频在线一区 | 中文字幕 国产 | 国产一区二区在线播放 | 日韩国产一区二区三区 | 国产精品国产成人国产三级 | 欧美日韩久久 | 欧美一级久久 | 中文字幕日韩欧美一区二区三区 | 91不卡| 国产一级视屏 | 蜜臀久久99精品久久久久野外 | 亚洲国产精品成人无久久精品 | 日韩欧美一区二区三区在线播放 | 久久久久国产精品 | 亚洲一区中文 | 久久综合九色综合欧美狠狠 | 国产欧美一区二区久久性色99 | 国产高清视频一区 | 性网站免费 | 国产高清在线精品 | 国产精品亚洲一区二区三区在线观看 | 福利久久 | 在线国产一区二区 | 91文字幕巨乱亚洲香蕉 | 中文字幕 国产精品 | 波多野结衣精品在线 | 国产乱码精品一区二区三区五月婷 | 一区二区国产精品 | 婷婷91| 99精品视频一区二区三区 |