wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

標(biāo)題: 單片機基于事件的按鍵處理編程思想(原創(chuàng)) [打印本頁]

作者: zyhlove813    時間: 2021-9-25 09:39
標(biāo)題: 單片機基于事件的按鍵處理編程思想(原創(chuàng))
本帖最后由 zyhlove813 于 2021-9-25 10:57 編輯

單片機處理按鍵網(wǎng)上的思路也是五花八門。入門的,可能是直接判斷端口,老手的,可能是通過鍵值計算;不管是誰學(xué)單片機,都逃不了做按鍵處理的程序。我在做項目的過程中,參考一些網(wǎng)上的思路,結(jié)合自己的算法,通過項目調(diào)試和驗證,終于做出了比較優(yōu)化和滿意的按鍵處理程序,功能有如下幾個方面:
1、多鍵掃描處理,提高處理速度
2、支持長按處理(單次觸發(fā)或一直觸發(fā))
3、支持按下、彈起、按住、松開、長按的事件
4、項目中只需要修改掃描鍵值,然后在各事件中判斷對應(yīng)鍵值(單鍵或多鍵)
主要編程思路如下:
1、變量的說明
  1. //長按鍵的時長
  2. #define longkey_times 2000
  3. //長按單次模式定義,如果要長按時一直執(zhí)行,請注釋下一行
  4. #define LONG_PROCESS_ONCE
  5. uint8_t  KEY_PRESS;  //當(dāng)前按下的鍵值
  6. uint8_t  KEY_NOT_PRESS;  //當(dāng)前未被按的鍵值
  7. uint8_t  KEY_LAST;  //上一次的鍵值
  8. uint8_t  KEY_LONG;  //長按的鍵值
  9. uint8_t  KEY_DOWN;  //按下的鍵值
  10. uint8_t  KEY_UP; //彈起的鍵值
  11. uint8_t  KEY_UP_NL; //彈起的鍵值不帶長按鍵
  12. uint32_t KEY_TICKS;  //按鍵時間,用于長按計時
復(fù)制代碼

2、按鍵相關(guān)函數(shù)說明
  1. //按鍵處理程序
  2. void JUDGE_KEY(bool SINGLE_KEY); //鍵值掃描及邏輯處理
  3. void KEY_LONG_PROCESS(void);  //長按事件
  4. void KEY_PRESS_PROCESS(void);  //按住狀態(tài)事件
  5. void KEY_NOT_PRESS_PROCESS(void); //松開狀態(tài)事件
  6. void KEY_DOWN_PROCESS(void); //按下事件
  7. void KEY_UP_PROCESS(void);  //彈起事件
復(fù)制代碼
3、按鍵掃描及邏輯處理思路
  1. //bool SINGLE_KEY 防抖開關(guān),True時打開
  2. void JUDGE_KEY(bool SINGLE_KEY)
  3. {
  4.     uint8_t TEMP_KEY;  //臨時的鍵值緩存
  5.     TEMP_KEY = PIND & 0x0C; //批量掃描IO,并生成鍵值,用戶需結(jié)合項目自已修改,PIND
  6.                             //此處表示PD0-7的端口,不同單片機不一樣,0x0C只取出
  7. //PD2 PD3的值  
  8.     TEMP_KEY ^= 0x0C;       //此處主要是把鍵值取反,如果你的按鍵是低電平觸發(fā)的話
  9.                             //如果你的按鍵是高電平觸發(fā),則刪除此行,不需要取反
  10.     if(TEMP_KEY > 0)  //鍵值大于0,表示有按鍵按著
  11.     {
  12.      delay(10); //防抖延時
  13.      //以下再一次批量掃描鍵值
  14.     KEY_PRESS = PIND & 0x0C;         
  15.     KEY_PRESS ^= 0x0C;

  16.     //如果防抖開關(guān)有效且兩次鍵值不一致,返回不處理
  17.     if(TEMP_KEY!=KEY_PRESS && SINGLE_KEY)
  18.    {
  19.       return;
  20.     }
  21.     }
  22.     else //無按鍵動作,當(dāng)前按下的鍵值=0
  23.     {
  24.     KEY_PRESS=0;
  25.     }
  26.    //核心按鍵邏輯判斷
  27.     KEY_DOWN=(KEY_LAST^KEY_PRESS) & KEY_PRESS;   //按下的鍵值
  28.     KEY_UP=(KEY_LAST^KEY_PRESS) & KEY_LAST;//彈起的鍵值(包含長按鍵)
  29.     KEY_UP_NL=(~KEY_LONG) & KEY_UP; //彈起的鍵值(不包含長按鍵)
  30.     KEY_NOT_PRESS=~KEY_PRESS;  //未按的鍵狀態(tài)值
  31.           if(KEY_LONG & KEY_UP)
  32.     {
  33.      KEY_LONG=0;
  34.     }
  35.     if(KEY_PRESS > 0)  //當(dāng)前有按鍵值按下
  36.     {
  37.        if(KEY_LAST & KEY_PRESS)     //如果當(dāng)前的值與上次按下的值有相同的地方
  38.                                               //表示有鍵一直按著,否則可能只是切換了其他按鍵
  39.        {
  40.             //millis()函數(shù)是Arduino的開機時間毫秒計數(shù),其他單片機自己實現(xiàn)
  41.              if(millis() - KEY_TICKS > longkey_times)   //按鍵時間大于長按時間
  42.             {
  43.                  KEY_LONG =KEY_LAST & KEY_PRESS;    //長按鍵值等于一直按住的值
  44.                  KEY_LONG_PROCESS();   //長按鍵處理
  45.                   #ifdef LONG_PROCESS_ONCE  //如果是長按單次處理
  46.                   KEY_TICKS=millis(); //更新長按時間標(biāo)記,避免進(jìn)入長按判斷
  47.                  #endif
  48.              }
  49.         }
  50.        else
  51.        {
  52.             KEY_TICKS=millis();  //切換了其他鍵,更新長按時間標(biāo)記,避免進(jìn)入長按判斷
  53.         }
  54.     }
  55.     else   //當(dāng)前無按鍵按下
  56.     {
  57.       KEY_TICKS=millis();  //更新長按時間標(biāo)記,避免進(jìn)入長按判斷
  58.     }
  59.     if(KEY_UP > 0)  //如果有彈起的按鍵值
  60.     {
  61.     KEY_UP_PROCESS();    //按鍵彈起時處理
  62.     KEY_UP = 0;  //復(fù)位彈起的鍵值
  63.     }
  64.     if(KEY_DOWN > 0)
  65.     {
  66.     KEY_DOWN_PROCESS();  //按鍵按下時處理
  67.     }
  68.     if(KEY_PRESS > 0)
  69.     {
  70.     KEY_PRESS_PROCESS();  //按鍵按著狀態(tài)處理
  71.     }               
  72.                 if(KEY_NOT_PRESS)
  73.                 {
  74.      KEY_NOT_PRESS_PROCESS();  //按鍵彈起狀態(tài)處理
  75.     }
  76.      KEY_LAST=KEY_PRESS; //更新上一次的鍵值
  77. }
復(fù)制代碼


4、按鍵邏輯處理算法詳解
   4.1首次按下的鍵,先用異或^進(jìn)行上次掃描鍵值和本次掃描鍵值計算,取得不一樣的鍵位,不一樣的鍵位和本次掃描鍵位相同,則表示首次按下。
0000 0010表示上次掃描的鍵,第1位是按下的狀態(tài)
   0000 0110 表示本次掃描的鍵,第1位和第2位是按下的,
   我們要算出第2位是首次按下,則
  0000 0010 ^ 0000 0110=0000 0100
  0000 0100 & 0000 0110=0000 0100

又如 000 0010表示上次掃描的鍵,第1位是按下的
     0000 0100表示本次掃描的鍵,第2位是按下的,第1位已經(jīng)松開
     我們要算出第2位是首次按下,則
     0000 0010 ^ 0000 0100=0000 0110
     0000 0110 & 0000 0100=0000 0100  
   (所以與本次掃描的鍵值與,可以得到首次按下的鍵值)
       KEY_DOWN=(KEY_LAST^KEY_PRESS) & KEY_PRESS;   //按下的鍵值

   4.2彈起的鍵值
      與按下的原理一樣,不同的是要和上次掃描的鍵值相與
          0000 0010表示上次掃描的鍵,第1位是按下的狀態(tài)
          0000 0100 表示本次掃描的鍵,第2位是按下的,
          我們要算出第1位是彈起,則
          0000 0010 ^ 0000 0100=0000 0110
          0000 0110 & 0000 0010=0000 0010

          KEY_UP=(KEY_LAST^KEY_PRESS) & KEY_LAST;//彈起的鍵值(包含長按鍵)
   4.3長按鍵一般單獨處理,彈起時如果要排除,避免多次觸發(fā)事件,需要計算出
      不包含長按鍵的鍵值,用如下公式
           KEY_UP_NL=(~KEY_LONG) & KEY_UP; //彈起的鍵值(不包含長按鍵)
   4.4 長按鍵的計算邏輯,見程序注釋
5、如何使用

    5.1 設(shè)置好長按的時間
       #define longkey_times 2000  //這里表示2秒
    5.2 修改掃描鍵值
        TEMP_KEY = PIND & 0x0C; //批量掃描IO,并生成鍵值,用戶需結(jié)合項目自已修改,PIND
                            //此處表示PD0-7的端口,不同單片機不一樣,0x0C只取出 PD2 PD3的值  
         TEMP_KEY ^= 0x0C;       //此處主要是把鍵值取反,如果你的按鍵是低電平觸發(fā)的話
        //還有一處地方也要一起改
        KEY_PRESS = PIND & 0x0C;         
        KEY_PRESS ^= 0x0C;

注意:51或其他單片機中,如果按鍵不在同一序列,比如P01 P03 P14 P16,則可以如下設(shè)置
    TEMP_KEY = P0 & 0x0A; //取出 P01 P03
    TEMP_KEY |=(P1 & 0x50); //取出 P14 P16

    TEMP_KEY ^= (0x0A|0x50);       //此處主要是把鍵值取反,如果你的按鍵是低電平觸發(fā)的話,
                                    //如果你的按鍵是高電平觸發(fā),則刪除此行,不需要取反
    //還有一處地方也要一起改
    KEY_PRESS = P0 & 0x0A; //取出 P01 P03   
    KEY_PRESS |=(P1 & 0x50); //取出 P14 P16
    KEY_PRESS ^= (0x0A|0x50);      //此處主要是把鍵值取反,如果你的按鍵是低電平觸發(fā)的話,
                                 //如果你的按鍵是高電平觸發(fā),則刪除此行,不需要取反
為了編程方便,盡量使用同一序列的口,如果不同序列的口,那端口號也要能錯開,如用了P01,就不要用P11了。
這樣的話,才能方便計算,提高掃描效率,如果非要用,只能通過移位處理
如51或其他單片機中,想判斷 P01 P02 P12 P13的鍵
TEMP_KEY = P1 & 0x0C; //取出 P12 P13
TEMP_KEY =TEMP_KEY<<1; //左移1位,避開P12和P02交叉重疊
TEMP_KEY |= (P0 & 0x06); //取出 P01 P02
TEMP_KEY ^= (0x18|0x06);       //此處主要是把鍵值取反,如果你的按鍵是低電平觸發(fā)的話
                               //如果你的按鍵是高電平觸發(fā),則刪除此行,不需要取反
這樣鍵值里,0x02表示P01,0x04表示P02,0x08表示P12,0x10表示P13

5.3在單片機循環(huán)程序或定時器里,周期性調(diào)用掃描程序
void loop()
{
   JUDGE_KEY(true);
}
5.4在對應(yīng)事件里進(jìn)行其他編程

如:
void KEY_NOT_PRESS_PROCESS()   //按鍵彈起狀態(tài)處理
{
  if(KEY_NOT_PRESS & 0x04)
  {
    //Serial.println("KEY PD2 is NOT PRESSING");
  }
}
void KEY_PRESS_PROCESS() //按鍵按著狀態(tài)處理
{
  if(KEY_PRESS & 0x04)
  {
    //Serial.println("KEY PD2 is PRESSING");
  }
}
void KEY_LONG_PROCESS() //長按鍵處理
{
  if(KEY_LONG & 0x04)
  {
    Serial.println("KEY PD2 is LONG PRESS");
  }
  if(KEY_LONG & 0x08)
  {
    Serial.println("KEY PD3 is LONG PRESS");
  }  
}
void KEY_DOWN_PROCESS()  //按鍵按下時處理
{
  if(KEY_DOWN & 0x04)
  {
    Serial.println("KEY PD2 is DOWN NOW");
  }
  if(KEY_DOWN & 0x08)
  {
    Serial.println("KEY PD3 is DOWN NOW");
  }         
  Serial.println("---------------------");
}
void KEY_UP_PROCESS()    //按鍵彈起時處理
{
  if(KEY_UP_NL & 0x04)
  {
    Serial.println("KEY PD2 is UP_NL NOW");
  }        
  if(KEY_UP_NL & 0x08)
  {
    Serial.println("KEY PD3 is UP NOW");
  }  
  Serial.println("---------------------");
}
附上Arduino的測試程序,注意Arduino Uno中PD2表示數(shù)字腳2,PD3表示數(shù)字腳3
KEY_TEST-Arduino.rar (1.35 KB, 下載次數(shù): 135)


作者: ximao    時間: 2021-9-27 04:11
謝了好資料,51黑有你更精彩!!!
作者: zyhlove813    時間: 2021-9-27 10:16
ximao 發(fā)表于 2021-9-27 04:11
謝了好資料,51黑有你更精彩!!!

有用就好
作者: kavin21513    時間: 2021-10-6 17:53
先收藏一下,以后用得上
作者: 1009214562    時間: 2021-10-12 16:19
好資料,51黑有你更精彩!!!
作者: 窮書生    時間: 2021-10-13 20:27
不錯,值得學(xué)習(xí)
作者: zyhlove813    時間: 2021-10-25 11:16

一起學(xué)習(xí),如果你有好的建議也不妨提出,給大家學(xué)習(xí)一下
作者: adad2    時間: 2021-11-1 17:00
好資料,51黑有你更精彩!!!
作者: linyin    時間: 2021-11-9 12:47
一起學(xué)習(xí),51黑一定輝煌起來
作者: lddy123456    時間: 2021-11-19 08:18
很深奧的內(nèi)容。
作者: 小送送    時間: 2022-1-12 11:01
剛好,我這個小白去學(xué)習(xí)學(xué)習(xí)!
作者: 溫xyz    時間: 2022-1-31 09:28
很好的資料!
作者: qidiao007    時間: 2022-3-11 09:54
這個模塊很方便
作者: chinomango    時間: 2022-3-19 03:39
本帖最后由 chinomango 于 2022-3-19 03:41 編輯

這個適合別的uP和C編譯嗎?最好前面有#if以自動適合不同的C編譯。
看到晚了,上個月還自己寫了一個,不過支持連續(xù)按鍵2次,以即時關(guān)閉電源;單次則是延遲3分鐘關(guān)閉。不知用你這個要如何改動? 先謝過。這個是堵塞式的嗎還是定時中斷掃描鍵盤?

作者: zyhlove813    時間: 2022-3-30 08:10
chinomango 發(fā)表于 2022-3-19 03:39
這個適合別的uP和C編譯嗎?最好前面有#if以自動適合不同的C編譯。
看到晚了,上個月還自己寫了一個,不過 ...

這個只是把按鍵值用計算的方式來產(chǎn)生按下、彈長、長按等事件動作,連續(xù)兩次按鍵,你可以在按下或彈起的事件里,用一個值來判斷按了幾次,再加上一個時長,如果超時或者中間按了其他按鍵,這個值就初始化到初值;
這個程序主要作用是產(chǎn)生事件,至少邏輯處理,要做什么事情,是你要在事件里進(jìn)行編程。我這個程序,如果 JUDGE_KEY(true)在定時器里中斷調(diào)用,就變成是中斷式,如果在Loop循環(huán)里調(diào)用,就成了堵塞式。看你的程序需求
作者: lhtlhtl    時間: 2022-5-19 18:29
收藏一下
作者: mrzhou    時間: 2022-6-23 09:35
非常好的設(shè)計思路,如果能提高實時性就更好了
作者: zyhlove813    時間: 2022-6-25 11:37
mrzhou 發(fā)表于 2022-6-23 09:35
非常好的設(shè)計思路,如果能提高實時性就更好了

多個項目應(yīng)用證明,一般的項目都能應(yīng)對,如果有擔(dān)心的話,也可以把調(diào)用放在定時中斷里
作者: y1z2f4    時間: 2022-8-19 22:45
很好的經(jīng)驗,謝謝分享。
作者: tzs233    時間: 2022-8-20 09:03
按鍵IO那里還是要做的更通用些就好了,我自己的項目應(yīng)用中因為IO口緊張,是不太可能按鍵分布在連續(xù)IO口上的。
作者: zmc419    時間: 2022-9-3 17:52
太好了,也上個51的源碼好了
作者: nanjingcxy2008    時間: 2022-11-2 15:48
樓主寫的很詳細(xì),謝謝分享。
作者: xiaoshongdh009    時間: 2022-11-10 07:54

好資料,51黑有你更精彩!!!
作者: cooltao2008    時間: 2022-12-3 17:28
很不錯的按鍵邏輯處理。收藏了。
作者: qhp777    時間: 2023-5-12 16:47
既然都用事件了,為什么還要延時防抖呢?
作者: likejian    時間: 2023-8-21 23:26
值得慢慢研究,加入到我的代碼上去
作者: zyhlove813    時間: 2024-6-8 08:28
likejian 發(fā)表于 2023-8-21 23:26
值得慢慢研究,加入到我的代碼上去

核心思想是把按鍵的IO轉(zhuǎn)化為數(shù)值,然后通過新舊數(shù)據(jù)的運算,篩選出IO對應(yīng)的不同狀態(tài)值,然后使用時通過判斷是否為需要的IO值。




歡迎光臨 (http://www.izizhuan.cn/bbs/) Powered by Discuz! X3.1
欧美四级在线| 亚洲欧美怡红院| 日韩经典一区| 午夜爽爽视频| 天堂在线观看av| 九九热最新地址| 精品999在线| 欧美国产综合视频| 欧美激情一区二区三级高清视频| 欧美日韩国产中文字幕| 国产精品自产自拍| 久久精品青草| 美国十次综合久久| 影音先锋男人在线资源| 精品伦理一区二区| 韩国18福利视频免费观看| 亚洲 日本 欧美 中文幕| 亚洲av无码一区二区三区观看| 美脚丝袜脚交一区二区| 国产精品入口免费| 琪琪第一精品导航| 有码中文亚洲精品| 欧美一区二区三区四区久久| 亚洲精品中文在线| 97久久久精品综合88久久| 在线亚洲伦理| 欧美电影《睫毛膏》| 久久影视精品| 大黄网站在线观看| 久久精品色图| 国产农村av| 天堂网.www在线资源| 五月天婷婷在线观看| 欧美一区二区三区四| 国产精品密蕾丝袜| 亚洲成人精品在线播放| 久久精品99国产| 天堂精品视频| 激情一区二区三区| 国产精品一区二区3区| 欧美日本中文字幕| 原创国产精品91| 亚洲精品二三区| 91精品国产综合久久久久久久久久 | 国产欧美精品一区| 国产最新精品精品你懂的| 影院欧美亚洲| 亚洲综合自拍| 999精品色在线播放| 久久影院资源站| 成人亚洲精品| 国产极品一区| 免费视频观看成人| 手机看片久久| 亚洲三级欧美| 麻豆视频在线观看免费网站黄| 日本视频不卡| 成人高清免费观看mv| 最新天堂资源在线| 欧美13~18sex性hd| 成人观看视频| 色先锋影音av| www.1024| 黑巨人与欧美精品一区| 国产美女被遭强高潮免费网站| a天堂在线观看| 九色porn蝌蚪| 色先锋影音av| 116极品美女视频在线观看| 午夜av噜噜噜噜噜噜| 日本午夜大片| av影音资源| 男女视频网站免费观看| 88av在线| 国产在线观看网站| 黄色的网站在线观看| 国产在线观看av| 亚洲丝袜精品| av亚洲一区二区三区| 久久久免费人体| 免费一区二区三区在线视频| 国产精品香蕉| 成人精品视频| 一区精品久久| 美女视频黄频大全不卡视频在线播放| 久久精品99久久久| 成人永久免费视频| 国产欧美1区2区3区| 亚洲色图清纯唯美| 一本大道久久a久久精二百| 精品视频一区二区三区免费| 日韩久久久精品| 亚洲视频在线观看视频| 久久精品国产一区| 欧美一级视频在线观看| 91九色综合久久| 欧美日韩一区二区三区免费| 红桃一区二区三区| 日本888xxxx| 欧美无人区码suv| 亚洲国产美女视频| 中国女人真人一级毛片| 天天操天天操天天干| 国产1卡2卡三卡四卡网站| 色先锋影音av| av电影在线播放高清免费观看| 欧洲在线视频| 日韩精品成人在线观看| 欧美综合在线视频观看| 欧美色图麻豆| 国产成人免费视| 亚洲欧美视频一区| 91精品国产91久久久久久最新毛片| 亚洲精品动漫100p| 69久久夜色精品国产69乱青草| 91综合免费在线| 日本黄色播放器| 在线免费黄色小视频| 开心激情五月网| 一级片在线观看视频| 精品一成人岛国片在线观看| av二区三区| 怡红院红怡院欧美aⅴ怡春院| 四虎地址8848精品| 亚洲国产精品91| 国产精品一区在线| 亚洲宅男天堂在线观看无病毒| 日韩一区二区三区在线视频| 久久综合色影院| 春色成人在线视频| 黄色一级片播放| www.色天使| 中文字幕乱码人妻二区三区| 国产免费电影网站入口| 羞羞视频在线免费看| 欧美电影网站| 一本到12不卡视频在线dvd| 国产精品自拍三区| 欧美性猛交xxxx乱大交蜜桃 | 成人性生交大片免费看视频r| 国产在线二区| 欧美日韩精品一区二区三区在线观看| 亚洲小说欧美另类婷婷| 97久久超碰国产精品电影| 色综合一个色综合| 欧美美最猛性xxxxxx| 国严精品久久久久久亚洲影视| 日批视频在线免费看| 国产精品suv一区二区88| www.黄色av| 日本最黄视频| 亚洲伦理网站| 久久久噜噜噜久久狠狠50岁| 亚洲欧洲成人精品av97| 亚洲第一福利网站| 成人黄色在线免费| 能看的毛片网站| 国产av无码专区亚洲av毛网站| 亚洲人在线播放| 在线看黄的网站| 999国产精品一区| 国产真实乱子伦精品视频| 欧美性xxxxx极品娇小| 久久国产视频网站| 中文字幕中文字幕在线中一区高清| 中文字幕一区二区三区人妻| www香蕉视频| 亚洲校园欧美国产另类| 99这里只有精品视频| 国产麻豆精品在线| 欧美一区二区三区性视频| 国产一区视频在线| 日本高清久久久| 在线播放亚洲精品| 高清日韩av| 成人97精品毛片免费看| 日本午夜精品视频在线观看 | 免费在线观看91| 最近日本中文字幕| 亚洲色图偷窥| 蜜芽在线免费观看| 国产精品毛片久久| 亚洲女爱视频在线| 久久久久久12| 天天摸天天碰天天添| 中文字幕在线观看视频免费| 99精产国品一二三产品香蕉| 999精品嫩草久久久久久99| 精品午夜一区二区三区在线观看| 91精品国产一区二区三区蜜臀| 18成人在线| 成人免费av片| 国产浴室偷窥在线播放| av成人福利| 免费在线看成人av| 欧美大片顶级少妇| 三级三级久久三级久久18| 天海翼在线视频| 免费看大片爽| 亚洲午夜免费| 久久精品欧美日韩| 色综合老司机第九色激情| 国产一区二区在线视频播放| 亚洲 小说区 图片区| 天堂av在线播放| 亚洲乱码免费伦视频| 亚洲国产成人91porn| 国产成人短视频| 国产xxx在线观看| 黄网址在线永久免费观看| а√天堂资源官网在线资源 | 久久精品国产欧美亚洲人人爽| 国产高清www| 一级片在线免费观看视频| 成人精品一区二区三区免费 | 亚洲美女av在线| 国产成人生活片| 亚洲视频久久久| 黄色小网站在线观看| 久久www成人_看片免费不卡| 日韩午夜av电影| 青青草影院在线观看| 久久午夜鲁丝片| 黄网址在线观看| 久久99精品久久久久久久久久久久| 日韩va亚洲va欧洲va国产| 400部精品国偷自产在线观看| 自拍偷拍色综合| jizz性欧美| 韩国视频一区二区| 精品国产一区二区三区在线观看| 99久久国产宗和精品1上映| 视频污在线观看| 国产精品久久久久久久久久齐齐| 91麻豆国产福利在线观看| 国内精品伊人久久| www.四虎精品| jizzjizzjizz中国| 成人av二区| 欧美精品v国产精品v日韩精品 | 欧美自拍视频在线| 亚洲av成人精品一区二区三区| 黄色的视频在线观看免费| 自拍视频一区| 欧美日韩你懂的| 青春草在线视频免费观看| 国产精品福利电影| 激情黄产视频在线免费观看| 91在线免费播放| 国产精品爽黄69| 国产乱国产乱老熟300| 精品无吗乱吗av国产爱色| 日韩影院在线观看| 久久国产精品久久久久久久久久| 国产女主播在线播放| 可以看av的网址| 激情文学一区| 少妇高潮久久77777| 亚洲人成毛片在线播放女女| 欧美 日韩 国产精品| 日韩精品一区二区三区蜜臀| 国产伦精品一区二区三区视频金莲| 日韩中文字幕a| 天天av天天翘天天综合网| 日本高清在线观看wwwww色| 男女超爽视频免费播放| 中文字幕在线观看不卡视频| 青梅竹马是消防员在线| www亚洲成人| 国产精品色在线观看| 国产精品手机在线播放| 在线观看日韩一区| 麻豆视频传媒入口| 中文字幕av中文字幕| 国产精品极品| 91精品国产综合久久久久久久久久| 精品少妇人妻av免费久久洗澡| 尤物在线精品视频| 成人av资源电影网站| 亚洲的天堂在线中文字幕| www.色就是色.com| 国产黄色片大全| 韩国一区二区视频| 成人午夜两性视频| 久久亚洲精品石原莉奈| 亚洲美女炮图| 五月天激情综合| 日本免费a视频| 手机在线色视频| 噜噜噜在线观看免费视频日韩| 欧美激情第6页| 久草视频免费播放| sis001欧美| 欧洲一区二区三区在线| 黑鬼大战白妞高潮喷白浆| h视频在线免费看| 免费看欧美女人艹b| 国产精品一区二区电影| 亚洲综合精品在线| 91蝌蚪精品视频| 亚洲爱爱爱爱爱| 国产精品815.cc红桃| 麻豆视频在线观看免费网站| 亚洲三级电影全部在线观看高清| 热久久最新地址| 少妇与大狼拘作爱性a| 免费久久99精品国产自在现线| 日韩av成人在线| 亚洲视频中文字幕在线观看| 日韩区一区二| 国产午夜精品久久久| 91中文字幕永久在线| 污污的视频在线观看| 欧美日韩精品二区| 日本美女高潮视频| 中文字幕视频在线免费| 2020国产精品久久精品美国| 色女人综合av| 俺去啦在线观看| 成人黄色在线网站| 日韩在线三区| 福利地址发布页| 国产高清不卡一区二区| 精品日本一区二区三区在线观看| 欧美啪啪精品| 日韩黄色小视频| 精品国产一区二区三区四区精华 | 欧美电影免费观看完整版| 国产成人精品综合久久久久99| 在线观看免费黄视频| 亚洲成av人**亚洲成av**| 在线免费观看av的网站| 成人三级黄色免费网站| 亚洲狠狠爱一区二区三区| 天天干天天爽天天射| 精品视频二区| 精品毛片网大全| 日韩无码精品一区二区| 国产精品vvv| 精品久久久久香蕉网| 青花影视在线观看免费高清| 91麻豆精品国产综合久久久| 精品亚洲夜色av98在线观看 | 日韩欧美综合在线视频| 风韵丰满熟妇啪啪区老熟熟女| 日韩另类在线| 7777精品久久久大香线蕉| 极品蜜桃臀肥臀-x88av| 亚洲精品大全| 欧美成人中文字幕| 国产福利第一页| 一区二区国产在线观看| 国产高清精品一区| 全彩无遮挡全彩口工漫画h#| 国产jizzjizz一区二区| 久久久久久久久网| 亚洲最大黄色| 欧洲一区二区av| 久草综合在线视频| 青青视频一区二区| 国产a∨精品一区二区三区不卡| 免费不卡中文字幕视频| 久久精品免费观看| 综合视频在线观看| 天堂а√在线8种子蜜桃视频 | 翔田千里亚洲一二三区| www99avcom| 亚洲一卡二卡三卡四卡无卡久久| 麻豆av免费看| 国产福利91精品一区二区| 色偷偷av亚洲男人的天堂| 国产欧美一级片| 久久激情五月婷婷| 日本黄大片在线观看| 九色porny丨首页在线| 欧美大片免费久久精品三p| 亚洲黄色小说图片| 黄色亚洲精品| 色乱码一区二区三在线看| 在线免费视频你懂得| 欧洲在线/亚洲| 久久久久久久久久99| 我不卡影院28| 美女亚洲精品| 黄色网址在线播放| 欧美α欧美αv大片| 黄瓜视频在线免费观看| 亚洲欧洲另类| 午夜啪啪福利视频| 国产超级va在线视频| 精品亚洲精品福利线在观看| 国产精品久久久久久免费播放| 日日摸夜夜添夜夜添精品视频| 精品国产一区二区三区无码| av大片在线看| 亚洲小视频在线| 亚洲色图狠狠干| 国产亚洲欧美日韩在线一区| 性生交大片免费看l| 视频国产精品|