標(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、變量的說明
- //長按鍵的時長
- #define longkey_times 2000
- //長按單次模式定義,如果要長按時一直執(zhí)行,請注釋下一行
- #define LONG_PROCESS_ONCE
- uint8_t KEY_PRESS; //當(dāng)前按下的鍵值
- uint8_t KEY_NOT_PRESS; //當(dāng)前未被按的鍵值
- uint8_t KEY_LAST; //上一次的鍵值
- uint8_t KEY_LONG; //長按的鍵值
- uint8_t KEY_DOWN; //按下的鍵值
- uint8_t KEY_UP; //彈起的鍵值
- uint8_t KEY_UP_NL; //彈起的鍵值不帶長按鍵
- uint32_t KEY_TICKS; //按鍵時間,用于長按計時
復(fù)制代碼
2、按鍵相關(guān)函數(shù)說明
- //按鍵處理程序
- void JUDGE_KEY(bool SINGLE_KEY); //鍵值掃描及邏輯處理
- void KEY_LONG_PROCESS(void); //長按事件
- void KEY_PRESS_PROCESS(void); //按住狀態(tài)事件
- void KEY_NOT_PRESS_PROCESS(void); //松開狀態(tài)事件
- void KEY_DOWN_PROCESS(void); //按下事件
- void KEY_UP_PROCESS(void); //彈起事件
復(fù)制代碼3、按鍵掃描及邏輯處理思路
- //bool SINGLE_KEY 防抖開關(guān),True時打開
- void JUDGE_KEY(bool SINGLE_KEY)
- {
- uint8_t TEMP_KEY; //臨時的鍵值緩存
- TEMP_KEY = PIND & 0x0C; //批量掃描IO,并生成鍵值,用戶需結(jié)合項目自已修改,PIND
- //此處表示PD0-7的端口,不同單片機不一樣,0x0C只取出
- //PD2 PD3的值
- TEMP_KEY ^= 0x0C; //此處主要是把鍵值取反,如果你的按鍵是低電平觸發(fā)的話
- //如果你的按鍵是高電平觸發(fā),則刪除此行,不需要取反
- if(TEMP_KEY > 0) //鍵值大于0,表示有按鍵按著
- {
- delay(10); //防抖延時
- //以下再一次批量掃描鍵值
- KEY_PRESS = PIND & 0x0C;
- KEY_PRESS ^= 0x0C;
- //如果防抖開關(guān)有效且兩次鍵值不一致,返回不處理
- if(TEMP_KEY!=KEY_PRESS && SINGLE_KEY)
- {
- return;
- }
- }
- else //無按鍵動作,當(dāng)前按下的鍵值=0
- {
- KEY_PRESS=0;
- }
- //核心按鍵邏輯判斷
- KEY_DOWN=(KEY_LAST^KEY_PRESS) & KEY_PRESS; //按下的鍵值
- KEY_UP=(KEY_LAST^KEY_PRESS) & KEY_LAST;//彈起的鍵值(包含長按鍵)
- KEY_UP_NL=(~KEY_LONG) & KEY_UP; //彈起的鍵值(不包含長按鍵)
- KEY_NOT_PRESS=~KEY_PRESS; //未按的鍵狀態(tài)值
- if(KEY_LONG & KEY_UP)
- {
- KEY_LONG=0;
- }
- if(KEY_PRESS > 0) //當(dāng)前有按鍵值按下
- {
- if(KEY_LAST & KEY_PRESS) //如果當(dāng)前的值與上次按下的值有相同的地方
- //表示有鍵一直按著,否則可能只是切換了其他按鍵
- {
- //millis()函數(shù)是Arduino的開機時間毫秒計數(shù),其他單片機自己實現(xiàn)
- if(millis() - KEY_TICKS > longkey_times) //按鍵時間大于長按時間
- {
- KEY_LONG =KEY_LAST & KEY_PRESS; //長按鍵值等于一直按住的值
- KEY_LONG_PROCESS(); //長按鍵處理
- #ifdef LONG_PROCESS_ONCE //如果是長按單次處理
- KEY_TICKS=millis(); //更新長按時間標(biāo)記,避免進(jìn)入長按判斷
- #endif
- }
- }
- else
- {
- KEY_TICKS=millis(); //切換了其他鍵,更新長按時間標(biāo)記,避免進(jìn)入長按判斷
- }
- }
- else //當(dāng)前無按鍵按下
- {
- KEY_TICKS=millis(); //更新長按時間標(biāo)記,避免進(jìn)入長按判斷
- }
- if(KEY_UP > 0) //如果有彈起的按鍵值
- {
- KEY_UP_PROCESS(); //按鍵彈起時處理
- KEY_UP = 0; //復(fù)位彈起的鍵值
- }
- if(KEY_DOWN > 0)
- {
- KEY_DOWN_PROCESS(); //按鍵按下時處理
- }
- if(KEY_PRESS > 0)
- {
- KEY_PRESS_PROCESS(); //按鍵按著狀態(tài)處理
- }
- if(KEY_NOT_PRESS)
- {
- KEY_NOT_PRESS_PROCESS(); //按鍵彈起狀態(tài)處理
- }
- KEY_LAST=KEY_PRESS; //更新上一次的鍵值
- }
復(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
作者: ximao 時間: 2021-9-27 04:11
謝了

好資料,51黑有你更精彩!!!
作者: zyhlove813 時間: 2021-9-27 10:16
有用就好
作者: 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
這個只是把按鍵值用計算的方式來產(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
多個項目應(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
核心思想是把按鍵的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|
视频国产精品|