www84811.com-国产区一区二区三区,亚洲第一中文字幕在线观看,91精品久久香蕉国产线看观看,国产精品欧美久久

電子開(kāi)發(fā)網(wǎng)

電子開(kāi)發(fā)網(wǎng)電子設(shè)計(jì) | 電子開(kāi)發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開(kāi)發(fā)網(wǎng) >> 電子開(kāi)發(fā) >> 單片機(jī) >> 正文

單片機(jī)系統(tǒng)中PS/2鍵盤(pán)驅(qū)動(dòng)程序的設(shè)計(jì)

作者:佚名    文章來(lái)源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2008/10/31

    在單片機(jī)系統(tǒng)中,經(jīng)常使用的鍵盤(pán)都是專(zhuān)用鍵盤(pán).此類(lèi)鍵盤(pán)為單獨(dú)設(shè)計(jì)制作的,成本高、使用硬件連接線(xiàn)多,且可靠性不高,這一狀況在那些要求鍵盤(pán)按鍵較多的應(yīng)用系統(tǒng)中更為突出.與此相比,在PC系統(tǒng)中廣泛使用PS/2鍵盤(pán)具有價(jià)格低、通用可靠,且使用連接線(xiàn)少(僅使用2根信號(hào)線(xiàn))的特點(diǎn),并可滿(mǎn)足多種系統(tǒng)的要求.因此在單片機(jī)系統(tǒng)中應(yīng)用PS/2鍵盤(pán)是一種很好的選擇.
    文中在介紹PS/2協(xié)議和PS/2鍵盤(pán)工作原理與特點(diǎn)的基礎(chǔ)上,給出了一個(gè)在單片機(jī)上實(shí)現(xiàn)對(duì)PS/2鍵盤(pán)支持的硬件連接與驅(qū)動(dòng)程序設(shè)計(jì)實(shí)現(xiàn).該
設(shè)計(jì)實(shí)現(xiàn)了在單片機(jī)系統(tǒng)中對(duì)PS/2標(biāo)準(zhǔn)104鍵盤(pán)按鍵輸入的支持.使用Keil C51開(kāi)發(fā)的驅(qū)動(dòng)程序接口和庫(kù)函數(shù)可以方便地移植到其他單片機(jī)或嵌入式系統(tǒng)中.所有程序在Keil uVision2上編譯通過(guò),在單片機(jī)AT89C51上測(cè)試通過(guò).

1 PS/2協(xié)議
目前,PC機(jī)廣泛采用的PS/2接口為mini-DIN 6pin的連接器,如圖1所示.
PS/2接口圖 
    PS/2設(shè)備有主從之分,主設(shè)備采用Female插座,從設(shè)備采用Male插頭.現(xiàn)在廣泛使用的PS/2鍵盤(pán)鼠標(biāo)均在從設(shè)備方式下工作.PS/2接口的時(shí)鐘
與數(shù)據(jù)線(xiàn)都是集電極開(kāi)路結(jié)構(gòu),必須外接上拉電阻(一般上拉電阻設(shè)置在主設(shè)備中).主從設(shè)備之間數(shù)據(jù)通信采用雙向同步串行方式傳輸,時(shí)鐘信號(hào)由從設(shè)備產(chǎn)生.

1.1 從設(shè)備到主設(shè)備的通信
    當(dāng)從設(shè)備向主設(shè)備發(fā)送數(shù)據(jù)時(shí),首先檢查時(shí)鐘線(xiàn),以確認(rèn)時(shí)鐘線(xiàn)是否為高電平.如果是高電平,從設(shè)備就可以開(kāi)始傳輸數(shù)據(jù);反之,從設(shè)備要等待獲得總線(xiàn)的控制權(quán),才能開(kāi)始傳輸數(shù)據(jù).傳輸?shù)拿恳粠?1位組成,發(fā)送時(shí)序及每一位的含義如圖2所示.
從設(shè)備到主設(shè)備的通信 
    每一幀數(shù)據(jù)中開(kāi)始位總是為0,數(shù)據(jù)校驗(yàn)采用奇校驗(yàn)方式,停止位始終為1.從設(shè)備到主設(shè)備通信時(shí),從設(shè)備總是在時(shí)鐘線(xiàn)為高時(shí)改變數(shù)據(jù)線(xiàn)狀態(tài),主設(shè)備在時(shí)鐘下降沿讀人數(shù)據(jù)線(xiàn)狀態(tài).

1.2 主設(shè)備到從設(shè)備的通信
    主設(shè)備與從設(shè)備進(jìn)行通信時(shí),主設(shè)備首先將時(shí)鐘線(xiàn)和數(shù)據(jù)線(xiàn)設(shè)置為“請(qǐng)求發(fā)送”狀態(tài),具體方式為:首先下拉時(shí)鐘線(xiàn)至少100us抑制通信,然后下拉數(shù)據(jù)線(xiàn)“請(qǐng)求發(fā)送”,最后釋放時(shí)鐘線(xiàn).在此過(guò)程中,從設(shè)備在不超過(guò)10us的間隔內(nèi)必須檢查這個(gè)狀態(tài),當(dāng)設(shè)備檢測(cè)到這個(gè)狀態(tài)時(shí),它將開(kāi)始產(chǎn)生時(shí)鐘信號(hào).此時(shí)數(shù)據(jù)傳輸?shù)拿恳粠?2位構(gòu)成,其時(shí)序和每一位含義如圖3所示.
主設(shè)備到從設(shè)備的通信 
    與從設(shè)備到主設(shè)備通信相比,其每幀數(shù)據(jù)多了一個(gè)ACK位.這是從設(shè)備應(yīng)答接收到字節(jié)的應(yīng)答位,由從設(shè)備通過(guò)拉低數(shù)據(jù)線(xiàn)產(chǎn)生,應(yīng)答位ACK總
是為0.主設(shè)備到從設(shè)備通信過(guò)程中,主設(shè)備總是在時(shí)鐘線(xiàn)為低電平時(shí)改變數(shù)據(jù)線(xiàn)的狀態(tài),從設(shè)備在時(shí)鐘上升沿讀人數(shù)據(jù)線(xiàn)狀態(tài).

2 PS/2鍵盤(pán)的編碼與命令集
2.1 PS/2鍵盤(pán)的編碼
    目前,PC機(jī)使用的PS/2鍵盤(pán)都默認(rèn)采用第2套掃描碼集.掃描碼有兩種不同的類(lèi)型:“通碼(make code)”和“斷碼(break code)”.當(dāng)一個(gè)鍵被按下或持續(xù)按住時(shí),鍵盤(pán)會(huì)將該鍵的通碼發(fā)送給主機(jī);而當(dāng)一個(gè)鍵被釋放時(shí),鍵盤(pán)會(huì)將該鍵的斷碼發(fā)送給主機(jī).根據(jù)鍵盤(pán)按鍵掃描碼的不同,可將按鍵分為3類(lèi):
第1類(lèi)按鍵 通碼為一個(gè)字節(jié),斷碼為0xF0+通碼形式.如A鍵,其通碼為0x1C;斷碼為0xF0 0x1C.
第2類(lèi)按鍵 通碼為兩字節(jié)0xE0+0xXX形式,斷碼為0xE0+0xF0+0xXX形式.如Right Ctrl鍵,其通碼為0xE0 0x14;斷碼為0xE0 0xF0 0x14.
第3類(lèi)特殊按鍵 有兩個(gè),Print Screen鍵,其通碼為0xE0 0x12 0xE0 0x7C;斷碼為0xE0 0xF0 0x7C 0xE0 0xF0 0x12.Pause鍵,其通碼為0xE1 0x14 0x77 0xE1 0xF0 0xl4 0xF0 0x77;斷碼為空.
    組合按鍵掃描碼的發(fā)送是按照按鍵發(fā)生的次序,如按下面順序按左Shift十A鍵:① 按下左Shift鍵;② 按下A鍵;③ 釋放A鍵;④ 釋放左Shift鍵,那么計(jì)算機(jī)上接收到的一串?dāng)?shù)據(jù)為0x12 0x1C 0xF0 0x1C 0xF0 0x12.
    在文中的驅(qū)動(dòng)程序設(shè)計(jì)中,就是根據(jù)按鍵的分類(lèi)對(duì)其分別進(jìn)行處理.

2.2 PS/2鍵盤(pán)的命令集
    主機(jī)可通過(guò)向PS/2鍵盤(pán)發(fā)送命令對(duì)鍵盤(pán)進(jìn)行設(shè)置或者獲得鍵盤(pán)的狀態(tài)等操作.每發(fā)送一個(gè)字節(jié),主機(jī)都會(huì)從鍵盤(pán)獲得一個(gè)應(yīng)答0xFA(“重發(fā)
resend”和“回應(yīng)echo”命令例外).驅(qū)動(dòng)程序在鍵盤(pán)初始化過(guò)程中所用的指令:0xED,主機(jī)在該命令后跟隨發(fā)送一個(gè)參數(shù)字節(jié),用于指示鍵盤(pán)上Num Lock,Caps Lock,Scroll Lock Led的狀態(tài);0xF3,主機(jī)在這條命令后跟隨發(fā)送一個(gè)字節(jié)參數(shù)定義鍵盤(pán)機(jī)打的速率和延時(shí);0xF4,用于當(dāng)主機(jī)發(fā)送0xF5禁止鍵盤(pán)后,重新使能鍵盤(pán).

3 PS/2鍵盤(pán)與單片機(jī)的連接電路
    PS/2鍵盤(pán)與AT89C51單片機(jī)的連接方式如圖4所示.P1.0接PS/2數(shù)據(jù)線(xiàn);P3.2(INT0)接PS/2時(shí)鐘線(xiàn).因?yàn)閱纹瑱C(jī)的P1,P3口內(nèi)部是帶上拉電阻的,所以PS/2的時(shí)鐘線(xiàn)和數(shù)據(jù)線(xiàn)可以直接與單片機(jī)的P1,P3相連接.
 

4 驅(qū)動(dòng)程序設(shè)計(jì)
    驅(qū)動(dòng)程序的開(kāi)發(fā)使用Keil C51語(yǔ)言以及KeiluVision2編程環(huán)境.PS/2 104鍵盤(pán)驅(qū)動(dòng)程序主要任務(wù)是實(shí)現(xiàn)單片機(jī)與鍵盤(pán)間PS/2通信,同時(shí)將接收到的按鍵掃描碼轉(zhuǎn)換為該按鍵的鍵值KeyVal,提供給系統(tǒng)上層軟件使用.

4.1 單片機(jī)與鍵盤(pán)間PS/2通信的程序設(shè)計(jì)
    在PS/2通信過(guò)程中,主設(shè)備(文中是單片機(jī))是在時(shí)鐘信號(hào)為低時(shí)發(fā)送和接收數(shù)據(jù)信號(hào).因?yàn)閱纹瑱C(jī)向鍵盤(pán)發(fā)送的是指令,需要鍵盤(pán)回應(yīng),所以這
部分程序采用查詢(xún)方式;而單片機(jī)接收鍵盤(pán)數(shù)據(jù)時(shí),數(shù)據(jù)線(xiàn)上的信號(hào)在時(shí)鐘為低時(shí)已經(jīng)穩(wěn)定,所以這部分程序采用中斷方式,且不需要在程序中加入延時(shí)程序.
    單片機(jī)向PS/2鍵盤(pán)發(fā)送數(shù)據(jù)程序代碼為:
void ps2_sentchar(unsigned char sentchar){//ps2主設(shè)備向從設(shè)備發(fā)送數(shù)據(jù)
unsigned char sentbit_cnt= 0x00;
unsigned char sentchar_chk = 0x00;
EX0=0; //關(guān)外部中斷0
//發(fā)起一個(gè)傳送,發(fā)起始位
PS2_SGN_CLOCK = 0; //將時(shí)鐘線(xiàn)拉低并保持100 us
delay100us();
PS2_SGN_DATA= 0; //起始位
PS2_SGN_CLOCK = 1;
//發(fā)送DATA0-7
for(sentbit_cnt=0;sentbit_cnt< 8;sentbit_cnt++){
while(PS2_SGN_CLOCK) _nop_(); //等待時(shí)鐘線(xiàn)變?yōu)榈?BR>PS2_SGN_DATA = sentchar& 0x01;//發(fā)送數(shù)據(jù)
if(PS2_SGN_DATA) sentchar_chk++; //計(jì)算校驗(yàn)
while(!PS2_SGN_CL0CK) _nop_(); //等待時(shí)鐘線(xiàn)變高
sentchar>>=1; //待發(fā)送數(shù)據(jù)右移一位
}
//發(fā)送校驗(yàn)位
while(PS2_SGN_CLOCK) _nop_(); //等待時(shí)鐘線(xiàn)變低
switch(sentchar_chk){
case 0:
case 2:
case 4:
case 6:PS2_SGN_DATA =1;break;//奇校驗(yàn)
case 1:
case 3:
case 5:
case 7:PS2_SGN_DATA = 0;break;//奇校驗(yàn)
default;break;
)
while(!PS2_SGN_CLOCK) _nop_(); //等待時(shí)鐘線(xiàn)變高
while(PS2_SGN_CLOCK) _nop_(); //等待時(shí)鐘線(xiàn)變低
PS2_SGN_DATA =1;//發(fā)送停止位,停止位總為1
while(!PS2_SGN_CLOCK) _nop_(); //等待時(shí)鐘線(xiàn)變高
while(PS2_SGN_CLOCK) _nop_(); //等待時(shí)鐘線(xiàn)變低
//接收ACK
//if(PS2_SGN_DATA) error();
//ACK信號(hào)由鍵盤(pán)發(fā)出,總為低電平
while(!PS2_SGN_CLOCK) _nop_(); //等待時(shí)鐘線(xiàn)變高
EX0= 1; //開(kāi)外部中斷0
}

單片機(jī)由PS/2鍵盤(pán)接收數(shù)據(jù)程序:外部中斷0設(shè)置為下降沿觸發(fā)
void int0() interrupt 0 using 0 {//
EX0=0; //關(guān)外部中斷0
switch(ps2_revchar_cnt){
case 1:
……
case 8:mcu_revchar<<=1;
if(PS2_SGN_DATA) mcu_revchar |= 0x01;
ps2_revchar_cnt++;
break;
case 0:ps2_revchar_cnt++;break; //開(kāi)始位,
case 9:ps2_revchar_cnt++;break; //校驗(yàn)位,可添加校驗(yàn)程序
case 10: _nop_();//停止位
ps2_revchar_cnt= 0;
revchar_flag=1;//置接收到數(shù)據(jù)標(biāo)識(shí)位
break;
default:break;
}
EX0=1;//開(kāi)外部中斷0
}

4.2 鍵盤(pán)掃描碼轉(zhuǎn)換程序設(shè)計(jì)
    由于鍵盤(pán)掃描碼無(wú)規(guī)律可循,因此由鍵盤(pán)掃描碼獲得相應(yīng)按鍵的鍵值(字符鍵為其ASCII值,控制鍵如F1,Ctrl等為自定義值),只能通過(guò)查表的方式獲得.由于按鍵的3種類(lèi)型及部分按鍵對(duì)應(yīng)著兩個(gè)鍵值(如A鍵的鍵值根據(jù)Caps和Shift鍵狀態(tài)有0x41(A)和0x61(a)兩種),因此綜合考慮查表轉(zhuǎn)換速度和資源消耗,設(shè)計(jì)中使用4個(gè)鍵盤(pán)表:鍵盤(pán)掃描碼轉(zhuǎn)換基本集和切換集(kb_plain_map[NR_KEYS]與kb_shift_map[NR_KEYS]);包含E0前綴的鍵盤(pán)掃描碼轉(zhuǎn)換基本集和切換集(kbeO_plain_map[NR_KEYS]與kbe0_shiftmap[NR_KEYS]).PS/2 104鍵盤(pán)按鍵掃描碼最大值為0x83,所以設(shè)置NR_KEYS為132.所有4個(gè)鍵盤(pán)表的定義均為如下形式:KB_MAP[MAKE CODE]=KEYVAL,如果掃描碼對(duì)應(yīng)的按鍵為空(如KB_MAP[0x00]),則定義相應(yīng)鍵值為NULL_KEY(0x00).以下是鍵盤(pán)掃描碼基本集的部分代碼實(shí)例:
kb_plain_map[NR_KEYS]={……
NULL_KEY;0x2C;0x6B;0x69;0x6F;0x30;0x39;
NULL_KEY; //掃描碼0x40~0x47
//對(duì)應(yīng)按鍵空,逗號(hào),K,I,O,0,9,空
//對(duì)應(yīng)鍵值0x00,',','k','i','o','O','9',0x00…… };
    如此設(shè)計(jì)鍵盤(pán)轉(zhuǎn)換表的另一個(gè)好處在于,以后如需擴(kuò)展支持有ACPI、Windows多媒體按鍵鍵盤(pán)時(shí),只需要將鍵表中相應(yīng)處修改即可,如ACPI
Power按鍵通碼為0xE0 0x37,修改kbe0_plain_map[0x37]=KB_ACPI_PWR即可.
    特殊按鍵Pause使用單獨(dú)程序處理,如果接收到0xE1就轉(zhuǎn)入這段程序.而Print Screen鍵則將其看作是兩個(gè)通碼分別為0xE0 0x12和0xE0 0x7C
的“虛鍵”的組合鍵處理.在驅(qū)動(dòng)程序中設(shè)定如下全局變量:led_status記錄Scroll Lock Led,Num Lock Led和Caps Lock Led的狀態(tài)(關(guān)為0,開(kāi)為1);agcs_status記錄左右Shift Ctrl Gui Alt狀態(tài),相應(yīng)鍵按下則對(duì)應(yīng)位為1,釋放為0.E0_FLAG接到0xE0置1;E1_FLAG接收到0xE1置1;F0_FLAG接收到0xF0置1.按鍵鍵值通過(guò)KeyVal提供上層程序使用.PS/2鍵盤(pán)掃描碼鍵值轉(zhuǎn)換程序ps2_codetrans()流程框架如圖5所示.
掃描碼鍵值轉(zhuǎn)換程序流程框架 

第1類(lèi)按鍵的掃描碼鍵值轉(zhuǎn)換程序代碼。
if(F0_FLAG){//接收掃描碼為斷碼
switch(mcu_revchar){//處理控制鍵
case 0x11:ages_status&=0xF7;break;//左alt釋放
case 0x12:ages_status&=0xFE;break;//左shift釋放
case 0x14:agcs_status&=0xFD;break;//左ctrl釋放
case 0x58;if(led_status&0x04) led_status &= 0x03; //caps lock
else led_status |=0x04;
ps2_ledchange();
break;
case 0x59: agcs_status &= 0xEF;break;//右shift釋放
case 0x77: if(led_status&0x02)led_status&=0x05;//num lock
else led_status |=0x02;
ps2_ledchange();
break;
case 0x7E:if(led_status&0x01) led_status&=0x06;//scroll lock
else led_status |=0x01;
ps2_ledchange();
break;
default;break;
}
F0_FLAG=0;
}
else{//接收掃描碼為通碼
if(led_status&0x04) caps_flag=1;else caps_flag = 0;
if(led_status&0x02) num_flag =1;else num_flag =0;
if(agcs_status&0x11) shift_flag = 1;else
shift_flag=0;
//掃描碼鍵值轉(zhuǎn)換
if((caps_flag == shift_flag) || (!num_flag)) KeyVal=kb_plain_map[mcu_revchar];
else KeyVal = kb_shift_map[mcu_revchar];
switch(mcu_revchar)(//處理控制鍵或狀態(tài)鍵
case 0x11:agcs_status|= 0x08;//左alt按下
Case 0x12:agcs_status|= 0x01;//左shift按下
case 0x14:agcs_status|= 0x02;//左ctrl按下
case 0x59:agcs_status|= 0x10;//右shift按下
default:break;
}
}
    第2類(lèi)按鍵的掃描碼鍵值轉(zhuǎn)換程序與上面相似.注意:在退出該程序段時(shí),對(duì)E0_FLAG和F0_FLAG標(biāo)識(shí)清0.Pause鍵的處理程序,如果接收到0xE1,置E1_FLAG=1,然后順次將后續(xù)接收到的7個(gè)字節(jié)數(shù)據(jù)和Pause的通碼后7個(gè)字節(jié)比較,一致則返回KeyVal=KB_PAUSE;在比較完所有7個(gè)字節(jié)后清除E1_FLAG標(biāo)識(shí).鍵盤(pán)初始化程序kb_init()流程為:
① 上電后,接收鍵盤(pán)上電自檢通過(guò)信號(hào)0xAA,或者自檢出錯(cuò)信號(hào)0xFC.單片機(jī)接收為0xAA則進(jìn)入下一步,否則進(jìn)行出錯(cuò)處理.
② 關(guān)LED指示,單片機(jī)發(fā)送0xED,然后接收鍵盤(pán)回應(yīng)0xFA,接著發(fā)送0x00接收0xFA.
③ 設(shè)置機(jī)打延時(shí)和速率:單片機(jī)發(fā)送0xF3,接收0xFA,發(fā)送0x00(250 ms,2.0 cps),接收0xFA.
④ 檢查L(zhǎng)ED,發(fā)送0xED,接收0xFA,發(fā)送0x07(開(kāi)所有LED),接收0xFA.發(fā)送0xED,接收0xFA,發(fā)送0x00(關(guān)LED),接收0xFA.
⑤ 允許鍵盤(pán),發(fā)送0xF4,接收0xFA.鍵盤(pán)LED改變ps2_ledchange()函數(shù)流程:發(fā)送0xED;接收0xFA;發(fā)送led_status;接收0xFA.

5 結(jié)語(yǔ)
  該驅(qū)動(dòng)程序經(jīng)Keil uVision2 編譯,在AT89C51單片機(jī)上運(yùn)行通過(guò),實(shí)現(xiàn)了對(duì)PS/2 104鍵盤(pán)的支持,實(shí)現(xiàn)了對(duì)字符按鍵大小寫(xiě)切換,Num Lock切換、控制鍵及組合按鍵的支持.同時(shí)該程序?qū)ζ渌度胧交騿纹瑱C(jī)系統(tǒng)中PS/2鍵盤(pán)的應(yīng)用也有借鑒意義.

Tags:單片機(jī),鍵盤(pán)設(shè)計(jì),驅(qū)動(dòng)程序設(shè)計(jì)  
責(zé)任編輯:admin
相關(guān)文章列表
沒(méi)有相關(guān)文章
請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱(chēng):
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評(píng)論
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線(xiàn)幫助 - 文章列表
返回頂部
刷新頁(yè)面
下到頁(yè)底
晶體管查詢(xún)
www84811.com-国产区一区二区三区,亚洲第一中文字幕在线观看,91精品久久香蕉国产线看观看,国产精品欧美久久
无吗不卡中文字幕| 欧美色网站导航| 亚洲欧美视频在线观看| 91国偷自产一区二区开放时间| 亚洲国产日韩a在线播放性色| 91精品免费观看| 国产高清亚洲一区| √…a在线天堂一区| 欧美日韩在线播放三区四区| 久久精品国产99久久6| 亚洲国产精品传媒在线观看| 色香色香欲天天天影视综合网| 天天亚洲美女在线视频| 久久蜜臀精品av| 在线精品亚洲一区二区不卡| 看片的网站亚洲| 国产精品久线在线观看| 欧美这里有精品| 精品一区二区在线免费观看| 中文字幕一区二区视频| 欧美乱妇一区二区三区不卡视频| 激情五月激情综合网| 亚洲女同ⅹxx女同tv| 日韩一级大片在线| 不卡的av网站| 日韩va欧美va亚洲va久久| 欧美国产禁国产网站cc| 欧美日韩在线电影| 国产99久久久国产精品免费看| 亚洲一区在线观看视频| 精品成人一区二区| 在线亚洲精品福利网址导航| 狠狠色伊人亚洲综合成人| 亚洲欧美国产高清| 欧美tickle裸体挠脚心vk| 91国偷自产一区二区使用方法| 极品少妇xxxx精品少妇| 亚洲一级电影视频| 国产日韩欧美高清| 91精品国产美女浴室洗澡无遮挡| 成人免费三级在线| 美国欧美日韩国产在线播放| 综合久久给合久久狠狠狠97色| 日韩一级片网址| 在线免费观看一区| 国产精品一区二区在线播放| 亚洲成国产人片在线观看| 亚洲国产成人午夜在线一区| 69堂成人精品免费视频| 91丨porny丨蝌蚪视频| 激情综合五月婷婷| 偷拍一区二区三区四区| 中文字幕一区二区三区在线不卡| 日韩一区二区电影网| 欧美专区在线观看一区| 成人国产精品免费网站| 国产资源精品在线观看| 丝袜美腿成人在线| 亚洲欧美日韩国产手机在线 | 欧美巨大另类极品videosbest| av午夜一区麻豆| 国产一区二区三区精品视频| 日韩综合在线视频| 亚洲伦理在线精品| 国产精品免费aⅴ片在线观看| 日韩欧美成人激情| 欧美丰满一区二区免费视频| 日本乱人伦一区| 成人av资源在线| 国产精品一区二区在线观看不卡 | 日韩一二三区视频| 欧美人xxxx| 欧洲一区二区三区在线| 91一区二区三区在线观看| 国产成人免费在线视频| 精品一区二区在线观看| 日韩电影网1区2区| 五月天亚洲婷婷| 亚洲已满18点击进入久久| 亚洲欧美激情插| 亚洲图片另类小说| 国产精品每日更新| 国产日韩欧美在线一区| 久久影院午夜论| 精品国产一区久久| 欧美第一区第二区| 欧美大片日本大片免费观看| 欧美一级搡bbbb搡bbbb| 欧美精品v日韩精品v韩国精品v| 欧亚一区二区三区| 欧美亚洲高清一区| 欧美午夜电影一区| 欧美亚洲一区三区| 欧美亚洲一区二区三区四区| 91久久精品网| 在线亚洲免费视频| 欧美日韩在线电影| 欧美久久久久免费| 欧美一级精品在线| 日韩女优av电影| 精品国产乱码久久久久久图片| 日韩一区二区三区精品视频| 欧美岛国在线观看| 精品电影一区二区三区| 国产午夜亚洲精品羞羞网站| 国产亚洲成aⅴ人片在线观看| 欧美国产日韩在线观看| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产精品色在线观看| 综合网在线视频| 亚洲综合一二区| 天堂久久一区二区三区| 午夜a成v人精品| 日韩二区在线观看| 久久99精品久久只有精品| 国产在线精品一区在线观看麻豆| 精彩视频一区二区三区| 国产精品18久久久久久久久久久久| 国产成人日日夜夜| av在线不卡电影| 91久久精品一区二区| 在线成人av影院| 久久综合色综合88| 国产精品久久久久四虎| 亚洲已满18点击进入久久| 日韩不卡一区二区三区| 国产剧情一区二区| av中文字幕亚洲| 欧美视频中文一区二区三区在线观看| 欧美日韩国产一级片| 精品国产a毛片| 国产精品传媒入口麻豆| 亚洲国产视频网站| 麻豆91小视频| 成人精品视频.| 欧美在线观看一二区| 欧美一级夜夜爽| 国产精品美女一区二区在线观看| 亚洲综合视频在线| 久久99国产精品久久99 | 日韩天堂在线观看| 久久精品在这里| 亚洲精品国产一区二区三区四区在线| 午夜国产精品一区| 国产美女在线精品| 色播五月激情综合网| 日韩欧美色电影| 亚洲天堂av一区| 日韩电影免费在线观看网站| 国产成人鲁色资源国产91色综| 色爱区综合激月婷婷| 精品久久久久久久久久久久久久久久久 | 性做久久久久久| 国产精品自拍网站| 欧美视频一区二区| 国产午夜精品在线观看| 亚洲激情自拍视频| 免费成人结看片| a4yy欧美一区二区三区| 91精品婷婷国产综合久久性色| 日本一区二区三区国色天香| 午夜伊人狠狠久久| 成人自拍视频在线| 欧美电影一区二区| 国产精品久久久久久久久图文区 | 在线观看视频一区二区欧美日韩| 精品对白一区国产伦| 亚洲一区二区三区四区中文字幕| 国模大尺度一区二区三区| 欧美丝袜丝交足nylons图片| 国产视频不卡一区| 免费看欧美女人艹b| 91婷婷韩国欧美一区二区| 精品免费视频一区二区| 亚洲国产日日夜夜| 不卡视频在线观看| 日韩亚洲欧美一区二区三区| 一区二区三区日韩在线观看| 国产精品69毛片高清亚洲| 欧美日韩极品在线观看一区| 国产精品卡一卡二| 国产一区二区在线电影| 欧美猛男超大videosgay| 亚洲欧洲韩国日本视频| 国内成人免费视频| 7777女厕盗摄久久久| 樱花草国产18久久久久| 风流少妇一区二区| 精品国产免费久久| 日韩精品成人一区二区三区| 91麻豆高清视频| 欧美经典一区二区三区| 美女免费视频一区二区| 欧美日韩一区成人| 亚洲视频图片小说| 国产成人在线免费| 欧美成人一区二区| 日本不卡高清视频| 欧美无乱码久久久免费午夜一区| 中文字幕亚洲一区二区av在线 |