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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機基于事件的按鍵處理編程思想(原創(chuàng))

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:471574 發(fā)表于 2021-9-25 09:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 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)記,避免進入長按判斷
  47.                  #endif
  48.              }
  49.         }
  50.        else
  51.        {
  52.             KEY_TICKS=millis();  //切換了其他鍵,更新長按時間標(biāo)記,避免進入長按判斷
  53.         }
  54.     }
  55.     else   //當(dāng)前無按鍵按下
  56.     {
  57.       KEY_TICKS=millis();  //更新長按時間標(biāo)記,避免進入長按判斷
  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首次按下的鍵,先用異或^進行上次掃描鍵值和本次掃描鍵值計算,取得不一樣的鍵位,不一樣的鍵位和本次掃描鍵位相同,則表示首次按下。
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)事件里進行其他編程

如:
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)

評分

參與人數(shù) 2黑幣 +62 收起 理由
sadv + 12 好帖
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:968484 發(fā)表于 2021-9-27 04:11 | 只看該作者
謝了好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

無效樓層,該帖已經(jīng)被刪除
地板
ID:471574 發(fā)表于 2021-9-27 10:16 | 只看該作者
ximao 發(fā)表于 2021-9-27 04:11
謝了好資料,51黑有你更精彩!!!

有用就好
回復(fù)

使用道具 舉報

5#
ID:194006 發(fā)表于 2021-10-6 17:53 來自觸屏版 | 只看該作者
先收藏一下,以后用得上
回復(fù)

使用道具 舉報

6#
無效樓層,該帖已經(jīng)被刪除
7#
ID:971477 發(fā)表于 2021-10-12 16:19 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

8#
ID:971822 發(fā)表于 2021-10-13 20:27 | 只看該作者
不錯,值得學(xué)習(xí)
回復(fù)

使用道具 舉報

9#
無效樓層,該帖已經(jīng)被刪除
10#
無效樓層,該帖已經(jīng)被刪除
11#
ID:471574 發(fā)表于 2021-10-25 11:16 | 只看該作者

一起學(xué)習(xí),如果你有好的建議也不妨提出,給大家學(xué)習(xí)一下
回復(fù)

使用道具 舉報

12#
無效樓層,該帖已經(jīng)被刪除
13#
無效樓層,該帖已經(jīng)被刪除
14#
無效樓層,該帖已經(jīng)被刪除
15#
ID:941265 發(fā)表于 2021-11-1 17:00 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

16#
ID:370415 發(fā)表于 2021-11-9 12:47 | 只看該作者
一起學(xué)習(xí),51黑一定輝煌起來
回復(fù)

使用道具 舉報

17#
無效樓層,該帖已經(jīng)被刪除
18#
無效樓層,該帖已經(jīng)被刪除
19#
ID:850575 發(fā)表于 2021-11-19 08:18 | 只看該作者
很深奧的內(nèi)容。
回復(fù)

使用道具 舉報

20#
無效樓層,該帖已經(jīng)被刪除
21#
無效樓層,該帖已經(jīng)被刪除
22#
ID:814879 發(fā)表于 2022-1-12 11:01 | 只看該作者
剛好,我這個小白去學(xué)習(xí)學(xué)習(xí)!
回復(fù)

使用道具 舉報

23#
無效樓層,該帖已經(jīng)被刪除
24#
ID:8222 發(fā)表于 2022-1-31 09:28 | 只看該作者
很好的資料!
回復(fù)

使用道具 舉報

25#
無效樓層,該帖已經(jīng)被刪除
26#
ID:258676 發(fā)表于 2022-3-11 09:54 | 只看該作者
這個模塊很方便
回復(fù)

使用道具 舉報

27#
ID:22218 發(fā)表于 2022-3-19 03:39 | 只看該作者
本帖最后由 chinomango 于 2022-3-19 03:41 編輯

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

使用道具 舉報

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

這個只是把按鍵值用計算的方式來產(chǎn)生按下、彈長、長按等事件動作,連續(xù)兩次按鍵,你可以在按下或彈起的事件里,用一個值來判斷按了幾次,再加上一個時長,如果超時或者中間按了其他按鍵,這個值就初始化到初值;
這個程序主要作用是產(chǎn)生事件,至少邏輯處理,要做什么事情,是你要在事件里進行編程。我這個程序,如果 JUDGE_KEY(true)在定時器里中斷調(diào)用,就變成是中斷式,如果在Loop循環(huán)里調(diào)用,就成了堵塞式。看你的程序需求
回復(fù)

使用道具 舉報

29#
ID:933601 發(fā)表于 2022-5-19 18:29 | 只看該作者
收藏一下
回復(fù)

使用道具 舉報

30#
ID:966468 發(fā)表于 2022-6-23 09:35 | 只看該作者
非常好的設(shè)計思路,如果能提高實時性就更好了
回復(fù)

使用道具 舉報

31#
ID:471574 發(fā)表于 2022-6-25 11:37 | 只看該作者
mrzhou 發(fā)表于 2022-6-23 09:35
非常好的設(shè)計思路,如果能提高實時性就更好了

多個項目應(yīng)用證明,一般的項目都能應(yīng)對,如果有擔(dān)心的話,也可以把調(diào)用放在定時中斷里
回復(fù)

使用道具 舉報

32#
無效樓層,該帖已經(jīng)被刪除
33#
無效樓層,該帖已經(jīng)被刪除
34#
無效樓層,該帖已經(jīng)被刪除
35#
ID:364137 發(fā)表于 2022-8-19 22:45 | 只看該作者
很好的經(jīng)驗,謝謝分享。
回復(fù)

使用道具 舉報

36#
ID:509408 發(fā)表于 2022-8-20 09:03 | 只看該作者
按鍵IO那里還是要做的更通用些就好了,我自己的項目應(yīng)用中因為IO口緊張,是不太可能按鍵分布在連續(xù)IO口上的。
回復(fù)

使用道具 舉報

37#
ID:137736 發(fā)表于 2022-9-3 17:52 | 只看該作者
太好了,也上個51的源碼好了
回復(fù)

使用道具 舉報

38#
ID:1032507 發(fā)表于 2022-11-2 15:48 | 只看該作者
樓主寫的很詳細,謝謝分享。
回復(fù)

使用道具 舉報

39#
ID:979603 發(fā)表于 2022-11-10 07:54 | 只看該作者

好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

40#
ID:1013961 發(fā)表于 2022-12-3 17:28 | 只看該作者
很不錯的按鍵邏輯處理。收藏了。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
四虎影视网站| 黄色在线视频网站| 日韩欧美黄色片| 国产精品伦理一区| 日韩大片一区二区| 精品视频一区二区在线| 亚洲bt欧美bt日本bt| 欧美本精品男人aⅴ天堂| 91亚洲男人天堂| 美女国产精品| 国产一区二区三区久久久久久久久| 欧美成人精品一区二区三区在线看| 国产成人一二片| 风间由美中文字幕在线看视频国产欧美 | 国产视频亚洲色图| 精品国产乱码| 米奇777超碰欧美日韩亚洲| 亚洲人成亚洲精品| 国产日韩一区二区三免费高清| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | a视频在线看| 在线播放三级网站| 国产字幕在线看| 国产黄色大片网站| 91香蕉视频污在线观看| www.毛片com| 天天做天天爱夜夜爽| 国产精品尤物视频| 国产无遮挡又黄又爽在线观看| 欧美三根一起进三p| 久久精品国产亚洲av无码娇色| 91久久免费视频| 人与嘼交av免费| 久久久久久久国产精品毛片| 五月天婷婷久久| 国产女人爽到高潮a毛片| 秋霞视频一区二区| 国产真乱mangent| 天天色天天操天天射| 最近中文字幕免费在线观看| 亚洲一区在线观| 欧美一级淫片免费视频魅影视频| 欧美精品videosbestsex另类| 内射无码专区久久亚洲| 国产又粗又猛又爽又黄视频| 亚洲AV无码精品自拍| 精品一区二区三区高清免费不卡| 亚洲最大色图| 亚洲欧美激情国产综合久久久| 中文字幕日本人妻久久久免费 | 国产91色在线| 久久综合色88| 欧洲成人性视频| 国产精品白丝jk白祙| 性生活免费观看视频| 91久久久久久久久久久| 欧美国产精品人人做人人爱| 国产精品激情自拍| 久久国产精品久久久久久久久久| 亚洲精品中文字幕有码专区| 欧美噜噜久久久xxx| 欧美精品18videosex性欧美| 91精品视频大全| 欧美三级午夜理伦三级老人| 91欧美一区二区三区| 国产极品国产极品| youjizz亚洲女人| 中文字幕精品视频在线观看| 一区精品在线观看| 国产成人三级一区二区在线观看一 | 先锋在线亚洲| av官网在线观看| 中文字幕日韩三级| 国产一区二区小视频| 国产1卡2卡三卡四卡网站| 在线观看国产福利视频| 英国三级经典在线观看| 精品国产乱码久久久久久蜜坠欲下 | 7777精品视频| 色噜噜色狠狠狠狠狠综合色一 | 1024亚洲| 98色花堂精品视频在线观看| 欧美18xxxx| 清纯唯美亚洲综合一区| 一区二区不卡| 日韩天天综合| 久久国产精品无码网站| 亚洲视频香蕉人妖| 亚洲激情在线观看视频免费| 日韩在线观看视频免费| 午夜精品在线观看| 欧美日韩一区在线视频| 欧美午夜aaaaaa免费视频| xfplay5566色资源网站| 最新中文字幕一区| 欧日韩在线视频| 快色在线观看| 日韩精品一区二区三区av| 国产精品一线| 免费人成在线不卡| 精品国产精品三级精品av网址| 中文字幕日韩电影| 蜜桃传媒视频麻豆一区| 国产精品99久久久精品无码| 中文在线字幕免费观| 极品色影院av| 成人日韩在线| www.亚洲.com| 九色视频成人自拍| 国产www视频在线观看| 成人情趣视频| 久久综合九色综合欧美98| 欧美一区二区三区啪啪| 国产精品美女主播| 亚洲mv在线看| 日本japanese极品少妇| 18岁成人毛片| 国产精品九九九九| 欧美wwwwxxxx| 黄色网在线播放| 欧美手机在线| 日韩高清在线观看| 中文字幕欧美日韩一区| 亚洲美女av在线播放| 新版的欧美在线视频| 欧美精品一区二区性色a+v| 国内一区二区三区在线视频| 涩涩在线视频| 深夜福利视频一区二区| 最新国产一区| 蜜臀国产一区二区三区在线播放| 午夜久久一区| 欧美亚洲精品在线| 成人精品中文字幕| 青青青爽久久午夜综合久久午夜| 日本视频在线一区| 欧美国产精品中文字幕| 欧美一级日韩免费不卡| 久久久久久网址| 日韩啊v在线| 国产精品av免费观看| 亚洲国产成人精品无码区99| 极品白嫩的小少妇| 国产无遮挡又黄又爽又色视频| 精品国产一区二区三区不卡在线 | 99国产精品久久一区二区三区| 综合天堂久久久久久久| av在线不卡观看免费观看| 国产亚洲欧美一级| 6080国产精品一区二区| 亚洲九九九在线观看| 国产精品青青在线观看爽香蕉| 动漫美女被爆操久久久| 一本大道熟女人妻中文字幕在线 | 国产嫩草影院久久久久| 国产精品二区一区二区aⅴ污介绍| 亚洲精品视频在线观看免费| 精品国产乱码久久久久久夜甘婷婷 | 欧美性天天影视| av成人 com a| 三级黄视频在线观看| gogogo高清在线观看免费完整版| 欧美成人家庭影院| 一区二区国产精品| 激情欧美一区二区三区在线观看| 亚洲高清在线视频| 欧美成人三级电影在线| 久久精品国产亚洲一区二区| 97超碰国产精品女人人人爽| 成人网中文字幕| 国产精品人人妻人人爽人人牛| 久久亚洲av午夜福利精品一区| 精品乱码一区内射人妻无码| xfplay每日更新av资源在线| 综合另类专区| 久久福利影视| 日本精品视频一区二区| 国产亚洲综合久久| 久久久久久九九| 精品999在线| 精品免费囯产一区二区三区| 97国产在线播放| 日韩av网站在线播放| 四虎影视最新网址| 男女视频在线| 日韩视频中文| 日本一区二区不卡视频| 精品视频一区 二区 三区| 国产a∨精品一区二区三区不卡| 欧美日韩国产免费一区二区三区| 国产精品福利导航| 中文字幕人成高视频| 秋霞在线视频| 免费国产自线拍一欧美视频| 欧洲一区二区三区在线| 成人伊人精品色xxxx视频| 欧美狂野激情性xxxx在线观| 97成人资源站| av第一福利大全导航| 伊人精品影院| 99在线|亚洲一区二区| 国产欧美日韩综合精品一区二区| 亚洲毛片在线观看| 91精品国产毛片武则天| 天天干天天干天天| 五福影院新址进入www1378| 成人在线播放视频| 日韩精品中文字幕一区二区| 黄色精品一区| 欧美日韩亚洲精品内裤| 成人激情视频小说免费下载| 亚洲自拍偷拍精品| 国产精品人人| 欧美成人aaa| 久久人人爽爽爽人久久久| 久久艹在线视频| 色99中文字幕| 精品少妇一二三区| 麻豆电影在线观看| 91亚洲无吗| 国产精品久久毛片av大全日韩| 欧美巨乳美女视频| 欧美激情第一区| 欧美jizzhd欧美精品巨大| 久久久久黄色| 国产精品三级av在线播放| 亲子乱一区二区三区电影| caopor在线| 成人乱码一区二区三区| 黄色污污视频在线观看| 天天综合久久| 中文字幕字幕中文在线中不卡视频| 亚洲大尺度美女在线| 国产精品夜夜夜爽张柏芝| 美女久久久久久久久久| chinesegaysextube| 自拍欧美一区| 国产欧美精品在线观看| 热久久免费视频精品| www.欧美日本| 亚洲一区二区色| 深夜宅男网站免费进入| 视频在线观看免费影院欧美meiju 视频一区中文字幕精品 | 中文字幕一区在线观看| 亚洲天堂色网站| 97在线免费公开视频| 午夜视频网站在线观看| 免费a级毛片在线播放| 91精品一区二区三区综合| 欧美视频在线一区| 91九色国产在线| 免费成人美女女在线观看| 小视频在线播放| 亚洲制服一区| 欧美三级视频在线播放| 亚洲www在线| 鲁大师私人影院在线观看| 好看的av网站| 欧美午夜一区二区福利视频| 五月婷婷久久综合| 国产精品成人观看视频国产奇米| 91n.com在线观看| 国产精品免费视频二三区| 亚洲精品播放| 亚洲综合免费观看高清在线观看| caoporen国产精品| 色婷婷国产精品免| 每日更新av在线播放| 国产一区在线看| 国产精品大陆在线观看| 污污内射在线观看一区二区少妇| 天天插天天干| 中文在线不卡| 日韩av一卡二卡| 17c国产在线| 四虎精品成人免费观看| 天天做夜夜做人人爱精品| 欧美日韩高清一区二区不卡| a在线视频观看| 国产麻豆麻豆| 免费一区二区三区在线视频| 在线观看欧美黄色| 日韩成人在线资源| 亚洲成人av影片| 日本综合视频| 欧洲中文字幕精品| 青青青国产在线视频| 色偷偷777| 天天做天天爱综合| 亚洲视频999| 熟女人妻在线视频| 性开放的欧美大片| 国产精品理伦片| 成人有码在线播放| 天干夜夜爽爽日日日日| 成人国产在线| 亚洲色图一区二区| 亚洲在线色站| 偷窥自拍欧美色图| 欧美午夜影院| 亚洲精品一区av在线播放| 久久精品免费一区二区| 五月综合网站| 激情综合电影网| 亚洲国产小视频在线观看| 男女超爽视频免费播放| 日本三级视频网站| 三级不卡在线观看| 91精品网站| 日本va欧美va国产激情| 国产成人精品一区二区三区视频| 欧美日韩成人综合| 美脚丝袜脚交一区二区| 俄罗斯黄色一级片| 欧美在线国产| 97人人做人人爱| 免费一级a毛片| 九九久久婷婷| 久久精品国产成人| 丰满少妇在线观看资源站| 国产1区在线| 欧美日韩在线免费| 九一免费在线观看| 亚洲成人国产综合| 亚洲免费黄色| 亚洲字幕一区二区| 九九久久九九| 日韩伦理一区| 国产视频久久久久| 久久国产美女视频| 手机av免费在线| 欧美日韩一区二区三区视频| 欧美老熟妇喷水| 尤物在线视频观看| 久久精品国产免费| 国产精品久久不能| 免费a视频在线观看| 国产精品草草| 欧美激情一区二区三区成人| 国产一区二区视频免费| 国产成人调教视频在线观看 | 国产中文字幕一区二区| 日中文字幕在线| jlzzjlzz亚洲日本少妇| 丝袜美腿玉足3d专区一区| 天天操夜夜拍| 国产精品毛片高清在线完整版| 日韩一区不卡| 欧美野外性xxxxfeexxxx| 成人一区不卡| 最近中文字幕2019免费| 91精品国产综合久久久蜜臀九色| 青青热久免费精品视频在线18| 精品国产乱子伦一区| 久久综合激情网| 视频精品导航| 欧美日韩mp4| 欧美aaa级片| 久久porn| 国产精品7m视频| 欧美另类videos粗暴黑人| 国产成人自拍网| 久无码久无码av无码| 波多野结衣手机在线视频| 国产午夜三级一区二区三| www.天天射.com| 日韩精品123| 国产精品久久精品日日| 在线免费黄色网| 91精彩在线视频| 欧美一二三区精品| 成年人免费看毛片| 国色天香久久精品国产一区| 亚洲爱爱爱爱爱| 五月天精品在线| 日韩大片欧美大片| 9191成人精品久久| 免费一级片视频| 亚洲精品黑牛一区二区三区| 精品五月天久久| 国产又爽又黄免费软件| 日韩高清不卡一区二区| 国产乱码一区| 激情视频免费| 欧洲色大大久久| 精品一区二区三区四| 6080成人| 国产精品久久久久久久久久久久| xxxx性bbbb欧美| 亚洲欧洲制服丝袜| 青青草原av在线播放| 91九色porn在线资源| 日韩一区二区中文字幕| 国产第一页在线观看| 成人黄色小视频| 精选一区二区三区四区五区| 色资源网在线观看| 欧美成人福利视频| 亚洲综合精品在线| 久久超碰97中文字幕|