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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5312|回復: 14
打印 上一主題 下一主題
收起左側

求程序思路 單片機按鍵次數控制流水燈

[復制鏈接]
跳轉到指定樓層
樓主
ID:895128 發表于 2021-4-7 22:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
由于本論壇禁止直接求程序,禁止伸手黨,所以向大家請教一下大致的實現方法與思路,理清頭緒后我自己來寫程序去實現,謝謝大家

例如按一下全亮,連續按兩下流水燈,連續三下換一種流水燈。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:895128 發表于 2021-4-7 22:53 | 只看該作者
我暫時的思路是定時計數,定時3s內統計按鍵次數在用按鍵次數去控制不同的燈動作。但是這樣的話會有很大的延遲,每次都要等3s才會停止計數的話。太浪費時間了。
回復

使用道具 舉報

板凳
ID:752974 發表于 2021-4-8 08:35 | 只看該作者
對按鍵計數就可以,1全亮,2流水,3換一個流水,并清零變量。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:584814 發表于 2021-4-8 08:36 | 只看該作者
Dieouy 發表于 2021-4-7 22:53
我暫時的思路是定時計數,定時3s內統計按鍵次數在用按鍵次數去控制不同的燈動作。但是這樣的話會有很大的延 ...

那么問題來了:你按了1次或2次后怎么才知道你不是要按3次呢 ?

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:592807 發表于 2021-4-8 08:48 | 只看該作者
Dieouy 發表于 2021-4-7 22:53
我暫時的思路是定時計數,定時3s內統計按鍵次數在用按鍵次數去控制不同的燈動作。但是這樣的話會有很大的延 ...

3S?你這個東西是給老年人用的?你自己用個計時器算一下3S你能按多少下按鍵,連續按鍵間隔超過0.5秒都不叫連續。得到按鍵信號0.5秒內,沒有下一個按鍵信號就可以處理了

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:487569 發表于 2021-4-8 09:40 | 只看該作者
思路就是松開按鍵執行動作。判斷到按鍵按下,先暫存按鍵的鍵值,按下次數+1,然后給一個變量賦值用作延時判斷。等到判斷按鍵松開延時就開始倒計,倒計為0的時候,把暫存的鍵值取出來,并執行判斷是哪個按鍵,按下幾次。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

7#
ID:895128 發表于 2021-4-8 10:40 | 只看該作者
unsigned char key_read(void)
{
    static unsigned char key_m = key_state_0, key_time_1 = 0;
    unsigned char key_return = N_key,key_temp;
     
    key_temp = key_driver();
     
    switch(key_m)
    {
        case key_state_0:
            if (key_temp == S_key )
            {
                 key_time_1 = 0;               // 第1次單擊,不返回,到下個狀態判斷后面是否出現雙擊
                 key_m = key_state_1;
            }
            else
                 key_return = key_temp;        // 對于無鍵、長鍵,返回原事件
            break;

        case key_state_1:
            if (key_temp == S_key)             // 又一次單擊(間隔肯定<500ms)
            {
                 key_return = D_key;           // 返回雙擊鍵事件,回初始狀態
                 key_m = key_state_0;
            }
            else                                
            {                                  // 這里500ms內肯定讀到的都是無鍵事件,因為長鍵>1000ms,在1s前低層返回的都是無鍵
                 if(++key_time_1 >= 50)
                 {
                      key_return = S_key;      // 500ms內沒有再次出現單鍵事件,返回上一次的單鍵事件
                      key_m = key_state_0;     // 返回初始狀態
                 }
             }
             break;
    }
    return key_return;
}     



這個怎么添加第n次的判斷啊
回復

使用道具 舉報

8#
ID:895128 發表于 2021-4-8 11:03 | 只看該作者
已經做出來了,謝謝各位大佬。



#include<reg52.h>
#define N_key    0              //無鍵
#define S_key    1              //單鍵
#define D_key    2              //雙鍵
#define L_key    3              //長鍵
#define C_key    4              //三擊鍵
#define E_key    5              //四擊鍵
#define key_state_0 0
#define key_state_1 1
#define key_state_2 2
#define key_state_3 3
#define key_state_4 4
#define key_state_5 5
sbit key_input = P2^0;    // 按鍵輸入口
unsigned char time_10ms_ok = 0;
unsigned char key = 0;

unsigned char key_driver(void)
{
    static unsigned char key_state = key_state_0, key_time = 0;
    unsigned char  key_return = N_key;
        bit key_press;

    key_press = key_input;                    // 讀按鍵I/O電平

    switch (key_state)
    {
      case key_state_0:                              // 按鍵初始態
        if (!key_press) key_state = key_state_1;      // 鍵被按下,狀態轉換到按鍵消抖和確認狀態
        break;
      
      case key_state_1:                      // 按鍵消抖與確認態
        if (!key_press)
        {
             key_time = 0;                   //  
             key_state = key_state_2;   // 按鍵仍然處于按下,消抖完成,狀態轉換到按下鍵時間的計時狀態,但返回的還是無鍵事件
        }
        else
             key_state = key_state_0;   // 按鍵已抬起,轉換到按鍵初始態。此處完成和實現軟件消抖,其實按鍵的按下和釋放都在此消抖的。
        break;
      
      case key_state_2:
        if(key_press)
        {
             key_return = S_key;        // 此時按鍵釋放,說明是產生一次短操作,回送S_key
             key_state = key_state_0;   // 轉換到按鍵初始態
        }
        else if (++key_time >= 100)     // 繼續按下,計時加10ms(10ms為本函數循環執行間隔)
        {
             key_return = L_key;        // 按下時間>1000ms,此按鍵為長按操作,返回長鍵事件
             key_state = key_state_3;   // 轉換到等待按鍵釋放狀態
        }
        break;

      case key_state_3:                 // 等待按鍵釋放狀態,此狀態只返回無按鍵事件
        if (key_press) key_state = key_state_0; //按鍵已釋放,轉換到按鍵初始態
        break;
    }
    return key_return;
}

/*=============
中間層按鍵處理函數,調用低層函數一次,處理雙擊事件的判斷,返回上層正確的無鍵、單鍵、雙鍵、長鍵4個按鍵事件。
本函數由上層循環調用,間隔10ms
===============*/

unsigned char key_read(void)
{
    static unsigned char key_m = key_state_0, key_time_1 = 0;
    unsigned char key_return = N_key,key_temp;
     
    key_temp = key_driver();
     
    switch(key_m)
    {
        case key_state_0:
            if (key_temp == S_key )
            {
                 key_time_1 = 0;               // 第1次單擊,不返回,到下個狀態判斷后面是否出現雙擊
                 key_m = key_state_1;
            }
            else
                 key_return = key_temp;        // 對于無鍵、長鍵,返回原事件
            break;

        case key_state_1:
            if (key_temp == S_key)             // 又一次單擊(間隔肯定<500ms)
         
                                                
            {   if( key_temp == S_key)
               
                                                         {
                 key_time_1 = 0;               // 第1次單擊,不返回,到下個狀態判斷后面是否出現雙擊
                 key_m = key_state_4;
               }
                                                        
                                                         else
                                                                          { key_return = D_key;           // 返回雙擊鍵事件,回初始狀態
                     key_m = key_state_0; }
                                                                 
            }
            else                                
            {                                  // 這里500ms內肯定讀到的都是無鍵事件,因為長鍵>1000ms,在1s前低層返回的都是無鍵
                 if(++key_time_1 >= 50)
                 {
                      key_return = S_key;      // 500ms內沒有再次出現單鍵事件,返回上一次的單鍵事件
                      key_m = key_state_0;     // 返回初始狀態
                 }
             }
             break;
       case key_state_4:
            if (key_temp == S_key)             // 又一次單擊(間隔肯定<500ms)
         
                                                
            {   if( key_temp == S_key)
               
                                                         {
                 key_time_1 = 0;               // 第1次單擊,不返回,到下個狀態判斷后面是否出現雙擊
                 key_m = key_state_5;
               }
                                                        
                                                         else
                                                                          { key_return = C_key;           // 返回雙擊鍵事件,回初始狀態
                     key_m = key_state_0; }
                                                                 
            }
            else                                
            {                                  // 這里500ms內肯定讀到的都是無鍵事件,因為長鍵>1000ms,在1s前低層返回的都是無鍵
                 if(++key_time_1 >= 50)
                 {
                      key_return = D_key;      // 500ms內沒有再次出現單鍵事件,返回上一次的單鍵事件
                      key_m = key_state_0;     // 返回初始狀態
                 }
             }
             break;
                        case key_state_5:
            if (key_temp == S_key)             // 又一次單擊(間隔肯定<500ms)
            {
                 key_return = E_key;           // 返回四擊鍵事件,回初始狀態
                 key_m = key_state_0;
            }
            else                                
            {                                  // 這里500ms內肯定讀到的都是無鍵事件,因為長鍵>1000ms,在1s前低層返回的都是無鍵
                 if(++key_time_1 >= 50)
                 {
                      key_return = C_key;      // 500ms內沒有再次出現單鍵事件,返回上一次的單鍵事件
                      key_m = key_state_0;     // 返回初始狀態
                 }
             }
             break;



     }
               
                return key_return;
}     

void main()
{
        P0 = 0xff;        //IO口初始化
        P2 = 0xff;
                        //定時器的初始化                                                   
        TMOD = 0x01;                           //選擇定時器的工作模式:定時器0,方式1
        TH0 = (65535 - 10000)/256; //定時器的初值
        TL0 = (65535 - 10000)%256;
        EA = 1;                                           //開打總中斷使能
        ET0 = 1;                                   //打開定時器0 的使能
        TR0 = 1;                                   //打開定時器0 ,開始工作

        while(1)
        {
                if(time_10ms_ok)          //time_10ms_ok = 1,表示計時到了10MS。(10MS掃描一次按鍵)
                {
                        time_10ms_ok = 0; //清除計時10MS標志
                        key = key_read(); //調用掃描按鍵程序,返回一個鍵值

                        if (key == L_key) //長按:點亮P1口上的8個LED燈。(低電平點亮)
                        {
                                P0 = 0x00;
                        }  
            else if(key == D_key)//雙擊:點亮P1口上第二個LED燈。(低電平點亮)  
            {
                                P0 = 0xfd;
                        }  
            else if(key == S_key)//單擊:點亮P1口上第一個LED燈。(低電平點亮)  
            {
                                P0 = 0xfe;
                        }
                              else if(key == C_key)//單擊:點亮P1口上第1個和第二個LED燈。(低電平點亮)  
            {
                                P0 = 0xfc;//11111100
                        }
                              else if(key == E_key)//單擊:點亮P1口上第1個和第二個LED燈。(低電平點亮)  
            {
                                P0 = 0xf0;//11110000
                        }
                }
        }
}

void timer0(void) interrupt 1        //用的是定時器0, 這個“interrupt 1”中的“1”代表1號中斷即是定時器0中斷。如果是“0”就是外部中斷0;“2“=外部中斷1;”3“定時器1中斷;”4“=串行口中斷
{
        TH0 = (65535 - 10000)/256;
        TL0 = (65535 - 10000)%256; //定時器0的方式1,得在中斷程序中重復初值。
        time_10ms_ok = 1;  //定時10MS 的標志
}

在原代碼基礎上修改      原代碼鏈接:https://blog.csdn.net/Sun19910114/article/details/53810110
回復

使用道具 舉報

9#
ID:451718 發表于 2021-4-8 12:04 | 只看該作者
本帖最后由 robinsonlin 于 2021-4-8 13:54 編輯

1,在1ms定時器中斷里面建一個 unsigned long SysTick++;
2,當檢測到按鍵響應時,變量TKey = SysTick,采集此時的系統時鐘,同時KeyCount變量+1;
3,在SysTick - Tkey<=1500時,如果還有按鍵響應,就KeyCount++;
4,當SysTick - TKey>1500時,執行switch(KeyCount), break后KeyCount變量清零。
附長短周期判斷,長短周期判斷,實際是檢測按鍵的連續性, 需要再加一個10ms的定時器做按鍵判斷。在10ms定時器中,設定按鍵檢測標志,并記錄SysTick,如按下時,TFlag = 1; KeyDelay = SysTick;這個操作記得加鎖,只執行一次。 當檢測到按鍵彈起,TFlag = 0;  然后判斷 SysTick - KeyDelay是否大于500,如果大于就是長按鍵,KeyCount += 10;如果SysTick - KeyDelay小于500ms,就是短按鍵,KeyCount ++ ;  KeyCount 十位就是長按次數,個位是短按次數。   SysTick - Tkey > 1500時,記得清理keyCount。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

10#
ID:47286 發表于 2021-4-8 12:32 | 只看該作者
用一個變量當計數器 每按一下按鍵 計數器+一次 然后判斷變量值 運行對應的部分 大致框架如下 細節還需要補上 比如防抖什么的

if(key==1)
{
keynum++;
if(keynum==10)
{
keynum=0;//假設10種流水方式
}
}

if(keynum==0)
{
停止流水或關燈
}
else if(keynum==1)
{
流水1
}
else if(........)
{

}

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

11#
ID:895128 發表于 2021-4-8 13:13 | 只看該作者
這個問題解決的,現在新的問題是通過按鍵

比如按鍵中間間隔延時實現兩長一短,或者兩短一長這樣的判斷。

暫時思路是通過延時來實現:
檢測按鍵是否按下,按下后等待500ms又按下后在等待1000ms后按下就是兩短一長。兩長一短同理,但是實現起來有一個代碼我有點蒙蔽。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

12#
ID:895128 發表于 2021-4-8 13:13 | 只看該作者
dzbj 發表于 2021-4-8 12:32
用一個變量當計數器 每按一下按鍵 計數器+一次 然后判斷變量值 運行對應的部分 大致框架如下 細節還需要補 ...

這個實現的不是連續按鍵,是每一次按鍵對應的事件吧。
回復

使用道具 舉報

13#
ID:895128 發表于 2021-4-8 14:31 | 只看該作者
突然想,能不能用按鍵中間時間間隔實現莫爾斯電碼的輸入。
回復

使用道具 舉報

14#
ID:895128 發表于 2021-4-8 14:51 | 只看該作者
#include<reg52.h>
#define N_key    0              //無鍵
#define S_key    1              //單鍵
#define D_key    2              //雙鍵
#define L_key    3              //長鍵
#define C_key    4              //三擊鍵
#define E_key    5              //四擊鍵
#define F_key    6              //兩短一長擊建
#define key_state_0 0
#define key_state_1 1
#define key_state_2 2
#define key_state_3 3
#define key_state_4 4
#define key_state_5 5
sbit key_input = P2^0;    // 按鍵輸入口
unsigned char time_10ms_ok = 0;
unsigned char key = 0;

unsigned char key_driver(void)
{
    static unsigned char key_state = key_state_0, key_time = 0;
    unsigned char  key_return = N_key;
        bit key_press;

    key_press = key_input;                    // 讀按鍵I/O電平

    switch (key_state)
    {
      case key_state_0:                              // 按鍵初始態
        if (key_press) key_state = key_state_1;      // 鍵被按下,狀態轉換到按鍵消抖和確認狀態
        break;
      
      case key_state_1:                      // 按鍵消抖與確認態
        if (key_press)
        {
             key_time = 0;                   //  
             key_state = key_state_2;   // 按鍵仍然處于按下,消抖完成,狀態轉換到按下鍵時間的計時狀態,但返回的還是無鍵事件
        }
        else
             key_state = key_state_0;   // 按鍵已抬起,轉換到按鍵初始態。此處完成和實現軟件消抖,其實按鍵的按下和釋放都在此消抖的。
        break;
      
      case key_state_2:
        if(!key_press)
        {
             key_return = S_key;        // 此時按鍵釋放,說明是產生一次短操作,回送S_key
             key_state = key_state_0;   // 轉換到按鍵初始態
        }
        else if (++key_time >= 100)     // 繼續按下,計時加10ms(10ms為本函數循環執行間隔)
        {
             key_return = L_key;        // 按下時間>1000ms,此按鍵為長按操作,返回長鍵事件
             key_state = key_state_3;   // 轉換到等待按鍵釋放狀態
        }
        break;

      case key_state_3:                 // 等待按鍵釋放狀態,此狀態只返回無按鍵事件
        if (!key_press) key_state = key_state_0; //按鍵已釋放,轉換到按鍵初始態
        break;
    }
    return key_return;
}

/*=============
中間層按鍵處理函數,調用低層函數一次,處理雙擊事件的判斷,返回上層正確的無鍵、單鍵、雙鍵、長鍵4個按鍵事件。
本函數由上層循環調用,間隔10ms
===============*/

unsigned char key_read(void)
{
    static unsigned char key_m = key_state_0, key_time_1 = 0;
    unsigned char key_return = N_key,key_temp;
     
    key_temp = key_driver();
     
    switch(key_m)
    {
         case key_state_0:
            if (key_temp == S_key )
            {
                 key_time_1 = 0;               // 第1次單擊,不返回,到下個狀態判斷后面是否出現雙擊
                 key_m = key_state_1;
            }
            else
                 key_return = key_temp;        // 對于無鍵、長鍵,返回原事件
            break;

          case key_state_1:
            if (key_temp == S_key)             // 又一次單擊(間隔肯定<500ms)
            {
                 key_return = D_key;           // 返回雙擊鍵事件,回初始狀態
                 key_m = key_state_0;
            }
            else                                
            {                                  // 這里500ms內肯定讀到的都是無鍵事件,因為長鍵>1000ms,在1s前低層返回的都是無鍵
                 if(++key_time_1 >= 50&&++key_time_1 <= 75)
                 {
                      key_return = E_key;      // 500ms內沒有再次出現單鍵事件,返回上一次的單鍵事件
                      key_m = key_state_0;     // 返回初始狀態
                 }
                 else
                                                                         if(++key_time_1 >= 75)

                 {
                      key_return = S_key;      // 500ms內沒有再次出現單鍵事件,返回上一次的單鍵事件
                      key_m = key_state_0;     // 返回初始狀態
                 }

            }
                                                 
                                                 
                                                 
             break;
               
                return key_return;
}     

void main()
{
        P0 = 0xff;        //IO口初始化
        P2 = 0x00;  //定時器的初始化                                                  
        TMOD = 0x01;                           //選擇定時器的工作模式:定時器0,方式1
        TH0 = (65535 - 10000)/256; //定時器的初值
        TL0 = (65535 - 10000)%256;
        EA = 1;                                           //開打總中斷使能
        ET0 = 1;                                   //打開定時器0 的使能
        TR0 = 1;                                   //打開定時器0 ,開始工作

        while(1)
        {
                if(time_10ms_ok)          //time_10ms_ok = 1,表示計時到了10MS。(10MS掃描一次按鍵)
                {
                        time_10ms_ok = 0; //清除計時10MS標志
                        key = key_read(); //調用掃描按鍵程序,返回一個鍵值

                        if (key == L_key) //長按:點亮P1口上的8個LED燈。(低電平點亮)
                        {
                                P0 = 0x00;
                        }  
            else if(key == D_key)//雙擊:點亮P1口上第二個LED燈。(低電平點亮)  
            {
                                P0 = 0xfd;
                        }  
            else if(key == S_key)//單擊:點亮P1口上第一個LED燈。(低電平點亮)  
            {
                                P0 = 0xfe;
                        }
                              else if(key == C_key)//單擊:點亮P1口上第1個和第二個LED燈。(低電平點亮)  
            {
                                P0 = 0xfc;//11111100
                        }
                              else if(key == E_key)//單擊:點亮P1口上第1個和第二個LED燈。(低電平點亮)  
            {
                                P0 = 0xf0;//11110000
                        }
                               else if(key == F_key)//單擊:點亮P1口上第1個和第二個LED燈。(低電平點亮)  
            {
                                P0 = 0x70;//11110000
                        }
                }
        }
}

void timer0(void) interrupt 1        //用的是定時器0, 這個“interrupt 1”中的“1”代表1號中斷即是定時器0中斷。如果是“0”就是外部中斷0;“2“=外部中斷1;”3“定時器1中斷;”4“=串行口中斷
{
        TH0 = (65535 - 10000)/256;
        TL0 = (65535 - 10000)%256; //定時器0的方式1,得在中斷程序中重復初值。
        time_10ms_ok = 1;  //定時10MS 的標志
}


led.c(117): error C141: syntax error near 'void'

報錯,求助。
回復

使用道具 舉報

15#
ID:584814 發表于 2021-4-20 08:23 | 只看該作者
unsigned char key_read(void) 尾巴上少了個 }
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
男插女视频久久久| 欧美性猛交xxxx乱大交蜜桃| 亚洲精品在线观看91| 久久久久亚洲精品中文字幕| 天天操天天怕| 免费在线色视频| 国产黄色免费| 日本亲与子乱a| 免费黄网大全| jizz在线播放| 国产网站av| 午夜影院网站| 日产精品久久久久久久性色| 佐山爱痴汉视频一区二区三区| 宅男午夜在线| 久草视频在线看| 1769在线观看| 国产美女高潮在线观看| 最新中文字幕在线播放| 日韩精品99| 久久伦理中文字幕| 羞羞色国产精品网站| 九色精品91| 伊人色**天天综合婷婷| 成人高潮成人免费观看| 羞羞视频在线免费看| 你懂的免费在线观看视频网站| 欧美日韩影视| aaa在线观看| 欧美24videosex性欧美| 97久久香蕉国产线看观看| 精品自拍视频| 午夜欧洲一区| 一区二区三区中文| 久久深夜福利| 成人免费视频视频| 国产精品久久久久一区二区三区共| 亚洲男人天堂一区| 91高清视频免费看| 日韩视频免费观看高清在线视频| 亚洲国产日韩欧美在线99| 一区二区三区四区精品| 久久这里有精品视频| 日产日韩在线亚洲欧美 | 亚洲成a人无码| 国产美女视频免费观看下载软件| 国产无遮挡在线观看| 久久精品视频久久| 久久av喷吹av高潮av| 蜜臀av.com| 男人的天堂最新网址| 亚洲成人日韩在线| 99热国产在线观看| 欧美一区二区黄片| 色多多视频网站| 伊人色综合久久| 日本三级在线观看网站 | 在线观看欧美黄色| 亚洲欧美在线播放| 国产99久久精品一区二区永久免费| 国产精品三区四区| 国产精品无码免费专区午夜| 青娱乐国产精品视频| 麻豆视频在线免费看| 国产夫绿帽单男3p精品视频| 黑粗硬大欧美视频| 中文字幕校园春色| 欧美黑人猛交| 日韩免费电影在线观看| 国产一区二区你懂的| 波多野结衣亚洲一区| 午夜精品视频在线观看| 日韩久久免费电影| 国产精品美乳一区二区免费| 中文精品视频一区二区在线观看| 岛国av免费在线| 久操免费在线视频| 97一区二区三区| 成人午夜天堂| 国产三级电影在线播放| 欧美人与牛zoz0性行为| 久久精品二区亚洲w码| 一区二区久久久久久| 亚洲精品中文字幕女同| 91精品久久久久久久久不口人| 91成人在线视频观看| 9.1成人看片| 99免费在线视频| av女片在线| 密臀av在线播放| 久久精品免费一区二区三区| a亚洲天堂av| 91精品国产综合久久久久久漫画| 久久青草精品视频免费观看| 亚洲电影一二三区| 欧美狂猛xxxxx乱大交3| 国内老熟妇对白hdxxxx| www.国产91| 成人免费无遮挡| 国语自产精品视频在线看8查询8| 国产日韩精品久久久| 日韩女优毛片在线| 国产欧美日韩丝袜精品一区| 欧美国产亚洲一区| 日本青青草视频| 国产欧美一区二区三区小说| 久久日韩视频| 99热国内精品| 国产精品网曝门| 亚洲午夜精品久久久久久性色| 国产伦精品一区二区三| 国产成人av片| 六月婷婷综合网| 国际av在线| 精品日韩一区| 国产精品免费aⅴ片在线观看| 亚洲精品小视频| 欧美成ee人免费视频| 成人影视免费观看| 澳门永久av免费网站| 免费黄色在线看| 久久精品久久久| 一区二区三区精品久久久| 欧美精品一区三区| 97超碰免费观看| 日韩欧美中文字幕视频| 爽爽影院免费观看视频| 欧美日韩视频网站| 蜜臀av性久久久久蜜臀aⅴ流畅| 一本色道a无线码一区v| 国产成人短视频| 日本久久久久久久久久久久| 中文字幕制服诱惑| 在线香蕉视频| 国产在视频线精品视频www666| 2021国产精品久久精品| 夜夜嗨av一区二区三区免费区 | 99久久久无码国产精品性色戒| 91麻豆制片厂| 日本免费黄网站| 日本国产一区| 成人性色生活片| 国产亚洲成av人片在线观看桃| 亚洲一区二区精品在线观看| 久久久精品视频免费观看| 狠狠干狠狠插| 国产成人澳门| 国产精品看片你懂得| 欧美国产日韩一区| 日韩在线第三页| 亚洲国产精品无码久久| 韩国av网站在线| 久久国产精品久久久久久电车 | 国产精品18久久久久网站| 午夜影院一区| 激情综合色播激情啊| 日韩高清av在线| 中文字幕一区二区三区四区五区六区| 欧美成人一区二区三区高清| baoyu777.永久免费视频| 欧美女王vk| 黄色一区二区在线观看| 亚洲一区二区三区xxx视频| 亚洲久久久久久| 性xx十八spa按摩| 中文字幕亚洲在线观看 | 日韩免费av一区二区三区| 久久丫精品久久丫| av福利导福航大全在线播放| 97精品国产一区二区三区 | 国产精品视频二区三区| 精品福利av| 日韩亚洲国产中文字幕欧美| 日本高清不卡一区二区三| 日韩欧美亚洲视频| 日韩欧美中文字幕一区二区| h短视频大全在线观看| 亚洲高清影视| 欧美一区二区二区| 中文字幕中文字幕在线中心一区 | 88xx成人精品| 成年人的黄色片| www.就去干.com| 蜜桃一区二区三区| 色域天天综合网| 欧美一区二区三区电影在线观看| 圆产精品久久久久久久久久久| 精品视频一二区| 捆绑调教美女网站视频一区| 中文字幕无线精品亚洲乱码一区 | 国产激情在线播放| av一区二区三区| 538国产精品一区二区免费视频| 国产在线a视频| av电影不卡在线观看| 日韩中文字幕高清在线观看| 在线播放中文字幕一区| 91传媒免费视频| 天堂中文在线看| 久久在线观看| 欧美日韩国产中字| 神马影院我不卡午夜| 一级全黄少妇性色生活片| 蜜臀久久精品| 亚洲欧洲一区二区三区| 97人人澡人人爽| 91在线视频在线观看| 色屁屁www国产馆在线观看| www.成人在线| 91老司机在线| 日韩乱码在线观看| 欧美1—12sexvideos| 国产日韩亚洲欧美综合| 亚洲精品欧美日韩| 狠狠人妻久久久久久| av在线私库| 亚洲精品乱码久久久久久久久| 亚洲欧美激情四射在线日| 亚洲不卡视频在线| 青草视频.com| 国产精品porn| 精品国产一区av| 成年人网站免费看| 亚洲嫩模一区| 国产成人福利片| 国产色婷婷国产综合在线理论片a| 久久精品一区二区三| 日本无删减在线| 中文字幕在线免费不卡| 欧美日韩国产三区| 亚洲精品久久久久久久久久| 超碰成人在线观看| 日韩欧美综合在线| 性生活一级大片| 天堂中文字幕——hd| 韩国成人精品a∨在线观看| 国产成人亚洲综合| av大片在线免费观看| 午夜影视一区二区三区| 精品久久久香蕉免费精品视频| 精品一区二区成人免费视频 | 中文字幕在线不卡一区二区三区| 久久亚洲精品欧美| 亚洲av毛片成人精品| 欧美日韩一二| 中文字幕久久亚洲| 亚洲天堂av中文字幕| av免费网站在线观看| 综合av第一页| 日本a在线天堂| 开心激情五月婷婷| 日本中文在线一区| 国产在线精品一区免费香蕉| 国产乱淫av片免费| 蜜桃一区二区| 久久精品成人动漫| 久久亚洲国产成人精品性色| 我爱我色成人网| 欧美日韩成人一区| 在线成人精品视频| av电影在线观看一区二区三区| 亚洲欧洲日本在线| 福利视频一二区| 免费高清特黄a大片| 成人高清在线视频| 日本一区不卡| 影音先锋5566资源站| 日韩国产欧美三级| 91成人免费观看| 天天摸天天碰天天爽天天弄| 91精品国产麻豆国产在线观看 | 中文字幕av一区二区| 糖心vlog免费在线观看| 日韩av中字| 欧美精品一区二区三区在线播放 | 久久99久久| 一区二区三区在线影院| 能在线观看的av| 伊人75在线| 亚洲美女在线一区| 久久久精品三级| 久久电影中文字幕| 午夜精品成人在线视频| 黄色在线视频网| 9色在线视频| 黑人与娇小精品av专区| 久久黄色一级视频| 激情av在线播放| 91精品国产色综合久久ai换脸| 成年人在线观看av| 午夜日韩成人影院| 亚洲精品国产综合久久| 成人观看免费视频| 国产精品香蕉| 欧美疯狂做受xxxx高潮| 国产精品视频无码| 国产精品扒开腿做爽爽爽软件| 国产精品亚洲网站| 小早川怜子痴女在线精品视频| 日韩va亚洲va欧美va久久| 久久99国产精品| jjzzjjzzjjzz| 国产精品日日摸夜夜摸av| 欧美成人精品欧美一级乱| 狠狠v欧美ⅴ日韩v亚洲v大胸| 性做久久久久久免费观看欧美| 色婷婷综合在线观看| heyzo在线欧美播放| 日韩视频免费观看高清在线视频| 人妻少妇精品一区二区三区| 国产精品久久久久av蜜臀| 欧美精品第一页在线播放| 国产成人精品白浆久久69| 亚洲一区二区三区高清| 茄子视频成人在线观看| 黄色一级影院| 亚洲已满18点击进入久久| 波多野结衣电影免费观看| 日韩脚交footjobhd| 亚洲精品一二区| 中国a一片一级一片| 欧美日韩国产亚洲一区| 国产丝袜不卡| 天天夜碰日日摸日日澡| 亚洲欧美一区二区视频| 日本少妇一级片| se69色成人网wwwsex| 日韩在线国产精品| 精品人妻一区二区三区浪潮在线 | 亚洲欧洲激情在线| 亚洲精品一区二区二区| 亚洲第一黄网| 手机看片福利永久国产日韩| 日本福利视频| 色综合久久久久久久| 国产日产精品一区二区三区的介绍| 欧美激情网址| 成人性生交大片免费观看嘿嘿视频| 又长又粗又大又爽| 国产精品麻豆久久久| 扒开伸进免费视频| 久久的色偷偷| 日本伊人精品一区二区三区介绍 | 国产一级大片| 日韩欧美国产激情| h色网站在线观看| 99精品视频在线观看免费播放| 高清免费日韩| 激情视频免费观看在线| 欧美性猛片xxxx免费看久爱| 国产在线视频二区| 国产精品草草| 久久国产精品免费观看| v天堂福利视频在线观看| 亚洲视频一区二区三区| 蜜桃91麻豆精品一二三区| 成人综合在线视频| 伊人五月天婷婷| julia中文字幕一区二区99在线| 国产精品一区二区久久精品| 99riav视频| 欧洲国内综合视频| 无码人妻精品一区二| 日韩精品成人一区二区三区| 国产精彩视频一区二区| 欧美亚洲日本精品| 孩xxxx性bbbb欧美| 伊人无码高清| 欧美日韩国产限制| 日韩污视频在线观看| 久久精品卡一| 无码内射中文字幕岛国片| 另类一区二区| 国产中文欧美精品| 在线观看你懂得| 亚洲免费电影一区| 1区2区3区视频| 亚洲欧美综合色| 国产十六处破外女视频| 亚洲一区久久| 免费观看成人网| 视频免费一区二区| 国产精品国产精品| 大地资源中文在线观看免费版| 在线电影中文日韩| free欧美性| 日本福利一区二区| 中文字幕永久在线| 成人一道本在线| 五月婷婷综合在线观看| 欧美1区视频| 蜜桃传媒一区二区三区| 日韩成人精品一区二区三区| 亚洲xxx视频| 91青青在线视频| 久久91亚洲人成电影网站| eeuss影院www在线| 欧美成人一区二区三区在线观看 | 国产精品亚洲片夜色在线| 中文字幕欧美一区二区|