久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stc89單片機模擬鼠標單擊的程序問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:244871 發表于 2017-11-1 10:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
因為是單片機新手,在網上找了一段程序,是基于stc12系列的,在網上查了一下,修改了延時函數和端口定義,還是沒有辦法讓電腦識別,現在貼出原程序,請大神指點一下,感激不盡。搗鼓了兩天了,因為對調試也不太懂,不知道怎么交互,每次改了后下載、插上電腦實驗/************************************************************/   
/*文件名稱:單片機模擬PS/2鼠標程序                          */                                
/*作 者:蔣毅                                               */   
/*版 本:2008-6                                             */   
/*說 明:                                                  */   
/*修改記錄:                                                 */   
/************************************************************/   
#include <stc12c5412ad.h>   
#include <intrins.h>   
#define uchar unsigned char   
#define uint  unsigned int   
/******************常用命令及參數定義************************/   
//EEPROM   
#define isp_read         1   
#define isp_program      2   
#define isp_erase        3   
#define isp_con          0x80   
#define ADDRESSH         0X10   
#define ADDRESSL         0X00   

//HOST-->MOUSE   
#define DISABLE_SEND     0XF5   //disable data reprorting   
#define ENABLE_SEND      0XF4   //enable data reprorting   
#define RESET            0XFF   //reset   
#define GETID            0XF2   //get device id   
#define SATATUS_REQUEST  0XE9   //datatus request   
#define HMRESEND         0XFE   //host ask mouse resend   
#define ERROR            0X55   //receive eeror   

//MOUSE-->HOST   
#define ANSWERER         0XFA   //answerer   
#define ID               0X00   //device id   
#define BAT              0XAA   //bat   
#define RESEND           0XFE   //resend   
#define SATATUS3         0X02   //satatus3   
#define SATATUS4         0X64   //satatus4   
#define DATABAG          0x08;     

/***********************引腳定義*****************************/   
sbit  mouse_clk=P1^0;   
sbit  mouse_data=P1^1;   
sbit  ms1=P1^5;   
sbit  ms2=P1^6;   
sbit  ctls=P3^4;   
/***********************全局變量*****************************/   
uchar flag_send=0;//允許發送標志位   
uchar buffer=0;//命令緩沖單元   
/***********************函數聲明*****************************/   
extern void delay1us(uchar i);   
//*********************讀EEPROM一字節************************/   
uchar read_byte_eeprom(uchar addth,addtl)   
{   
uchar temp_data;   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_read;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
temp_data=ISP_DATA;   
EA=1;   
return temp_data;   
}   
//*********************寫EEPROM一字節***********************/   
void program_byte_eeprom(uchar temp_data, addth,addtl)   
{   
ISP_DATA=temp_data;   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_program;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
EA=1;   
}   
//********************擦除EEPROM一扇區子函數*****************/   
void erase_sector_eeprom(uchar addth,addtl)   
{   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_erase;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
EA=1;   
}   
/*******************ms級延時子函數***************************/   
void delay(uint k)         
{   
uint i;   
while(k--)   
  {   
   for(i=0;i<1200;i++);   
  }   
}   
/****************ps/2發送單個位到PC函數**********************/   
void send_bit(bit senbit)   
{   
mouse_data=senbit; //設置/復位數據   
delay1us(21);      //延遲20us   
mouse_clk=0;       //將時鐘拉低   
delay1us(43);      //延遲40us   
mouse_clk=1;       //釋放時鐘   
}   
/***************ps/2發送單個字節到PC函數*********************/   
void send_byte(uchar tmp)   
{   
uchar i;   
uchar temp,check;   
temp=0;   
check=0;   
while(!mouse_clk);//等待CLK為高   
delay1us(54);//延時50us   
if(mouse_clk)//判斷CLK是否為高,是:發送,否:放棄,轉到接收程序   
  {   
   delay1us(21);//延時20us   
   for(i=0;i<11;i++)   
    {   
     delay1us(21);//延時20us   
     if(i==0) send_bit(0);//發送起始位0   
     else   
      {   
       if(i>=1&&i<9)//發送數據位   
        {   
         temp=tmp;   
         temp>>=(i-1);   
         temp=temp&0x01;   
         if(temp==0x01){send_bit(1);check++;}   
         else send_bit(0);   
        }   
       else   
         {   
         if(i==9)//發送校驗位   
          {   
           check=check&0x01;   
           if(check==0x01) send_bit(0);//奇校驗   
           else send_bit(1);   
          }   
         else send_bit(1);//發送停止位   
         }   
        }   
     if(mouse_clk==1) continue;//判斷時鐘是否被主機拉低,是-放棄發送   
     else break;   
    }   
    delay1us(32);//延時30us   
  }   
}   
/********************ps/2接收PC單個位函數********************/   
bit receive_bit()   
{   
bit tbit;   
tbit=0;   
delay1us(21);    //延遲20us   
mouse_clk=0;     //把時鐘線拉低   
delay1us(43);    //延遲40us   
mouse_clk=1;     //釋放時鐘   
delay1us(21);    //延遲20us   
tbit=mouse_data; //讀取數據   
return tbit;     //返回數據   
}   
/**********************ps/2輸出應答位函數********************/   
void send_answerer()   
{   
delay1us(16);//延遲15us   
mouse_data=0;//把數據線拉低   
delay1us(5); //延遲5us   
mouse_clk=0; //把時鐘線拉低   
delay1us(43);//延遲40us   
mouse_clk=1; //釋放時鐘線   
delay1us(5); //延遲5us   
mouse_data=1;//釋放數據線   
}   
/*******************ps/2接收PC單個字節函數*******************/   
uchar receive_byte()   
{   
uchar i,temp,rdata,check;   
bit tmp,check_bit;   
tmp=0;   
check_bit=0;   
temp=0;   
rdata=0;   
check=0;   
while(!mouse_clk);//等待時鐘為高   
if(!mouse_data)//判斷數據線為低,是-接收,否-有錯誤發生,放棄   
  {   
   for(i=0;i<10;i++)//接收8個數據位,校驗位,停止位   
    {   
     if(i>=0&&i<8)//讀入8個數據位   
      {   
       tmp=receive_bit();   
       if(tmp==1) check++;   
       temp=(uchar)tmp;   
       temp<<=i;   
       rdata=rdata|temp;        
      }   
     else if(i==8)//讀入校驗位   
       check_bit=receive_bit();   
     else //讀入停止位   
      tmp=receive_bit();   
     if(mouse_clk==1) continue;//判斷時鐘是否被主機拉低,是-放棄接收   
     else return 0x55;   
    }   
   /*判斷停止位是否為1,否,產生一錯誤標志*/   
   if(!mouse_data) //否   
    {   
     while(!mouse_data);   
     return 0x55;   
    }   
   else //停止位為1   
    {   
     send_answerer();//輸出應答位   
     check=(check+(uchar)check_bit)&0x01;   
     if(check==0)//檢查校驗位   
       return 0x55;//校驗錯誤   
     else  return rdata;//返回收到的命令   
    }   
   }   
else return 0x55;   
}   
/***********************鍵盤掃描函數*************************/   
void keyscan()   
{   
uchar i,databag;   
uchar scancode,tmp;   
tmp=0x01;   
scancode=0;   
databag=0;   
if(flag_send)//判斷是否允許數據報告   
{   
if((P1&0x1c)!=0x1c)//判斷是否有鍵按下   
  {   
   delay(20);//延時消抖   
   if((P1&0x1c)!=0x1c)   
    {   
     ctls=0;//打開激光頭   
     scancode=0x04;//逐鍵掃描   
     for(i=0;i<3;i++)   
      {   
       if((P1&scancode)!=scancode)//有鍵按下,置相應標志位為1   
        {   
         tmp<<=i;   
         databag=databag|tmp;   
         scancode<<=1;   
        }   
       else scancode<<=1;   
      }   
     delay(50);//延時50ms   
     send_byte(databag);   
     send_byte(ID);// 發送位移按鍵數據包   
     send_byte(ID);   
     databag=DATABAG;   
     if(ms1==1&&ms2==1)//持續按常亮無效   
      {   
       ctls=1;//關閉激光頭   
       while((P1&0x1c)!=0x1c)//判鍵盤釋放   
       WDT_CONTR=0X3E;//喂狗   
       send_byte(databag);// 發送位移按鍵數據包   
       send_byte(ID);   
       send_byte(ID);   
      }   
     else if(ms1==0&&ms2==1)//持續按常亮有效   
      {   
       while((P1&0x1c)!=0x1c)//判鍵盤釋放   
       WDT_CONTR=0X3E;//喂狗   
       ctls=1;//關閉激光頭   
       send_byte(databag);// 發送位移按鍵數據包   
       send_byte(ID);   
       send_byte(ID);   
      }   
     else//常亮   
      {   
       while((P1&0x1c)!=0x1c)//判鍵盤釋放   
       WDT_CONTR=0X3E;//喂狗   
       send_byte(databag);// 發送位移按鍵數據包   
       send_byte(ID);   
       send_byte(ID);   
      }   
     }   
   }   
  }   
}   
/***********************處理主機命令函數*********************/   
void manage(uchar ljmp)   
{   
switch(ljmp)   
  {   
   case RESET:         //主機通知MOUSE復位     
   send_byte(ANSWERER);   
   send_byte(BAT);   
   send_byte(ID);   
   buffer=ID;   
   break;   

   case GETID:         //主機通知MOUSE獲得ID   
   send_byte(ANSWERER);   
   send_byte(ID);   
   buffer=ID;   
   break;   

   case ENABLE_SEND :    //使能數據報告   
   send_byte(ANSWERER);   
   buffer=ANSWERER;   
   flag_send=1;   
   erase_sector_eeprom(ADDRESSH,ADDRESSL);   
   program_byte_eeprom(0X01,ADDRESSH,ADDRESSL);   
   break;   

   case DISABLE_SEND :   
   send_byte(ANSWERER);//禁止數據報告   
   buffer=ANSWERER;   
   flag_send=0;   
   erase_sector_eeprom(ADDRESSH,ADDRESSL);   
   break;      

   case SATATUS_REQUEST://主機通知MOUSE告訴狀態信息   
   send_byte(ANSWERER);   
   send_byte(ID);   
   send_byte(SATATUS3);   
   send_byte(SATATUS4);   
   buffer=SATATUS4;   
   break;   

   case ERROR:         //MOUSE接收錯誤,通知主機重發   
   send_byte(RESEND);   
   buffer=RESEND;   
   break;      

   default:            //其它命令,都用0XFA回應   
   send_byte(ANSWERER);   
   buffer=ANSWERER;   
   break;      
  }   
}                       
/*************************主函數*****************************/   
void main()   
{   
uchar order;   
delay(500);//延時500ms   
send_byte(BAT);   
send_byte(ID);   
flag_send=read_byte_eeprom(ADDRESSH,ADDRESSL);   
WDT_CONTR=0X3E;//看門狗初始化   
while(1)   
  {   
   keyscan();   
   if(!mouse_data)   
    {   
    order=receive_byte();   
    manage(order);   
    }   
   WDT_CONTR=0X3E;//喂狗         
  }   
}   


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

使用道具 舉報

沙發
ID:244871 發表于 2017-11-2 10:17 | 只看該作者
怎么調試交互,自己頂一下,希望有人指點。貼出來我改過的代碼。

/************************************************************/   
/*文件名稱:單片機模擬PS/2鼠標程序                          */                                
/*作 者:蔣毅                                               */   
/*版 本:2008-6                                             */   
/*說 明:                                                  */   
/*修改記錄:                                                 */   
/************************************************************/   
#include <STC12C5410AD.H>     
#include <intrins.h>   
#define uchar unsigned char   
#define uint  unsigned int   
/******************常用命令及參數定義************************/   
//EEPROM   
#define isp_read         1   
#define isp_program      2   
#define isp_erase        3   
#define isp_con          0x80   
#define ADDRESSH         0X10   
#define ADDRESSL         0X00   
   
//HOST-->MOUSE   
#define DISABLE_SEND     0XF5   //disable data reprorting   
#define ENABLE_SEND      0XF4   //enable data reprorting   
#define RESET            0XFF   //reset   
#define GETID            0XF2   //get device id   
#define SATATUS_REQUEST  0XE9   //datatus request   
#define HMRESEND         0XFE   //host ask mouse resend   
#define ERROR            0X55   //receive eeror   
   
//MOUSE-->HOST   
#define ANSWERER         0XFA   //answerer   
#define ID               0X00   //device id   
#define BAT              0XAA   //bat   
#define RESEND           0XFE   //resend   
#define SATATUS3         0X02   //satatus3   
#define SATATUS4         0X64   //satatus4
#define LBUTTONDOWN            0X09   //left button down
#define LBUTTONUP        0X08   //left button up
#define DATABAG          0x08;     
   
/***********************引腳定義*****************************/   
sbit  mouse_clk=P3^3;   
sbit  mouse_data=P3^5;   
sbit  ms1=P1^0;   
//sbit  ms2=P1^6;   
//sbit  ctls=P3^4;   
/***********************全局變量*****************************/   
uchar flag_send=0;//允許發送標志位   
uchar buffer=0;//命令緩沖單元   
/***********************函數聲明*****************************/   
void delay10us(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=1;b>0;b--)
        for(a=1;a>0;a--);
}
void delay5us(void)   //誤差 0us
{
    _nop_();  //if Keil,require use intrins.h
}
void delay20us(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=3;b>0;b--)
        for(a=1;a>0;a--);
}
void delay50us(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=9;b>0;b--)
        for(a=1;a>0;a--);
}  
//*********************讀EEPROM一字節************************/   
uchar read_byte_eeprom(uchar addth,addtl)   
{   
uchar temp_data;   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_read;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
temp_data=ISP_DATA;   
EA=1;   
return temp_data;   
}   
//*********************寫EEPROM一字節***********************/   
void program_byte_eeprom(uchar temp_data, addth,addtl)   
{   
ISP_DATA=temp_data;   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_program;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
EA=1;   
}   
//********************擦除EEPROM一扇區子函數*****************/   
void erase_sector_eeprom(uchar addth,addtl)   
{   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_erase;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
EA=1;   
}   
/*******************ms級延時子函數***************************/   
void delay50ms(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=165;b>0;b--)
        for(a=150;a>0;a--);
}
void delay20ms(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=215;b>0;b--)
        for(a=45;a>0;a--);
}
void delay500ms(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=205;c>0;c--)
        for(b=116;b>0;b--)
            for(a=9;a>0;a--);
}
/****************ps/2發送單個位到PC函數**********************/   
void send_bit(bit senbit)   
{   
mouse_data=senbit; //設置/復位數據   
delay20us();      //延遲20us   
mouse_clk=0;       //將時鐘拉低   
delay20us();  
delay20us();    //延遲40us   
mouse_clk=1;       //釋放時鐘   
}   
/***************ps/2發送單個字節到PC函數*********************/   
void send_byte(uchar tmp)   
{   
uchar i;   
uchar temp,check;   
temp=0;   
check=0;   
while(!mouse_clk);//等待CLK為高   
delay50us();//延時50us   
if(mouse_clk)//判斷CLK是否為高,是:發送,否:放棄,轉到接收程序   
  {   
   delay20us();//延時20us   
   for(i=0;i<11;i++)   
    {   
     delay20us();//延時20us   
     if(i==0) send_bit(0);//發送起始位0   
     else   
      {   
       if(i>=1&&i<9)//發送數據位   
        {   
         temp=tmp;   
         temp>>=(i-1);   
         temp=temp&0x01;   
         if(temp==0x01){send_bit(1);check++;}   
         else send_bit(0);   
        }   
       else   
         {   
         if(i==9)//發送校驗位   
          {   
           check=check&0x01;   
           if(check==0x01) send_bit(0);//奇校驗   
           else send_bit(1);   
          }   
         else send_bit(1);//發送停止位   
         }   
        }   
     if(mouse_clk==1) continue;//判斷時鐘是否被主機拉低,是-放棄發送   
     else break;   
    }   
    delay20us();
        delay10us();//延時30us   
  }   
}   
/********************ps/2接收PC單個位函數********************/   
bit receive_bit()   
{   
bit tbit;   
tbit=0;   
delay20us();    //延遲20us   
mouse_clk=0;     //把時鐘線拉低   
delay20us();
delay20us();    //延遲40us   
mouse_clk=1;     //釋放時鐘   
delay20us();    //延遲20us   
tbit=mouse_data; //讀取數據   
return tbit;     //返回數據   
}   
/**********************ps/2輸出應答位函數********************/   
void send_answerer()   
{   
delay10us();
delay5us();//延遲15us   
mouse_data=0;//把數據線拉低   
delay5us(); //延遲5us   
mouse_clk=0; //把時鐘線拉低   
delay20us();
delay20us();//延遲40us   
mouse_clk=1; //釋放時鐘線   
delay5us(); //延遲5us   
mouse_data=1;//釋放數據線   
}   
/*******************ps/2接收PC單個字節函數*******************/   
uchar receive_byte()   
{   
uchar i,temp,rdata,check;   
bit tmp,check_bit;   
tmp=0;   
check_bit=0;   
temp=0;   
rdata=0;   
check=0;   
while(!mouse_clk);//等待時鐘為高   
if(!mouse_data)//判斷數據線為低,是-接收,否-有錯誤發生,放棄   
  {   
   for(i=0;i<10;i++)//接收8個數據位,校驗位,停止位   
    {   
     if(i>=0&&i<8)//讀入8個數據位   
      {   
       tmp=receive_bit();   
       if(tmp==1) check++;   
       temp=(uchar)tmp;   
       temp<<=i;   
       rdata=rdata|temp;        
      }   
     else if(i==8)//讀入校驗位   
       check_bit=receive_bit();   
     else //讀入停止位   
      tmp=receive_bit();   
     if(mouse_clk==1) continue;//判斷時鐘是否被主機拉低,是-放棄接收   
     else return 0x55;   
    }   
   /*判斷停止位是否為1,否,產生一錯誤標志*/   
   if(!mouse_data) //否   
    {   
     while(!mouse_data);   
     return 0x55;   
    }   
   else //停止位為1   
    {   
     send_answerer();//輸出應答位   
     check=(check+(uchar)check_bit)&0x01;   
     if(check==0)//檢查校驗位   
       return 0x55;//校驗錯誤   
     else  return rdata;//返回收到的命令   
    }   
   }   
else return 0x55;   
}   
/***********************鍵盤掃描函數*************************/   
void keyscan()   
{   
// uchar i;           
if(flag_send)//判斷是否允許數據報告   
{   
if(ms1==0)//判斷是否有鍵按下   
  {   
   delay20ms();//延時消抖   
   if(ms1==0)   
    {   
     delay50ms();//延時50ms   
     send_byte(LBUTTONDOWN);   
     send_byte(ID);// 發送位移按鍵數據包   
     send_byte(ID);
         }
   }        
   else  
   {   
      delay20ms();//延時消抖   
      if(ms1==1)   
      {   
       delay50ms();//延時50ms   
       send_byte(LBUTTONUP);   
       send_byte(ID);// 發送位移按鍵數據包   
       send_byte(ID);
          }   
   }   
  }   
}   
/***********************處理主機命令函數*********************/   
void manage(uchar ljmp)   
{   
switch(ljmp)   
  {   
   case RESET:         //主機通知MOUSE復位     
   send_byte(ANSWERER);   
   send_byte(BAT);   
   send_byte(ID);   
   buffer=ID;   
   break;   
   
   case GETID:         //主機通知MOUSE獲得ID   
   send_byte(ANSWERER);   
   send_byte(ID);   
   buffer=ID;   
   break;   
   
   case ENABLE_SEND :    //使能數據報告   
   send_byte(ANSWERER);   
   buffer=ANSWERER;   
   flag_send=1;   
   erase_sector_eeprom(ADDRESSH,ADDRESSL);   
   program_byte_eeprom(0X01,ADDRESSH,ADDRESSL);   
   break;   
   
   case DISABLE_SEND :   
   send_byte(ANSWERER);//禁止數據報告   
   buffer=ANSWERER;   
   flag_send=0;   
   erase_sector_eeprom(ADDRESSH,ADDRESSL);   
   break;      
   
   case SATATUS_REQUEST://主機通知MOUSE告訴狀態信息   
   send_byte(ANSWERER);   
   send_byte(ID);   
   send_byte(SATATUS3);   
   send_byte(SATATUS4);   
   buffer=SATATUS4;   
   break;   
   
   case ERROR:         //MOUSE接收錯誤,通知主機重發   
   send_byte(RESEND);   
   buffer=RESEND;   
   break;      
   
   default:            //其它命令,都用0XFA回應   
   send_byte(ANSWERER);   
   buffer=ANSWERER;   
   break;      
  }   
}                       
/*************************主函數*****************************/  
void main()   
{   
uchar order;  
delay500ms();//延時500ms   
send_byte(BAT);   
send_byte(ID);   
flag_send=read_byte_eeprom(ADDRESSH,ADDRESSL);   
WDT_CONTR=0X3E;//看門狗初始化   
while(1)   
  {   
   keyscan();   
   if(!mouse_data)   
    {   
    order=receive_byte();   
    manage(order);   
    }   
   WDT_CONTR=0X3E;//喂狗         
  }   
}   
   
回復

使用道具 舉報

板凳
ID:244871 發表于 2017-11-2 16:18 | 只看該作者
我在處理收到數據的地方加了一句將p13端口置為低電平,重新加電量了一下是低電平,說明ps鼠標連接電腦成功了,可是按鍵按下沒有任何反應,求指教啊。
回復

使用道具 舉報

地板
ID:272876 發表于 2019-7-16 11:10 | 只看該作者
好了嗎
回復

使用道具 舉報

5#
ID:272876 發表于 2019-7-16 16:02 | 只看該作者
解決了嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本中文字幕日韩精品免费 | 国产极品粉嫩美女呻吟在线看人 | 亚洲成人综合在线 | 国产精品久久久亚洲 | 欧美成人精品二区三区99精品 | 蜜桃传媒av | 在线国产一区 | 亚洲福利一区 | 99免费精品视频 | 成人国产精品久久 | 亚洲视频在线看 | 日韩av美女电影 | 国产在线视频一区二区 | 97免费在线观看视频 | 91高清在线视频 | 韩国久久 | 欧美成人一区二区 | 成人综合视频在线观看 | 中文字幕国产精品 | a视频在线观看 | 99免费看 | www.久| 久久国产精品-国产精品 | 亚洲av毛片 | 亚洲精品乱码久久久久久按摩 | 免费看a | 免费在线观看av网站 | 久在线视频播放免费视频 | 人人人艹 | 在线观看视频一区 | 天天看逼| 欧美在线观看免费观看视频 | 亚洲午夜精品 | www.亚洲一区二区三区 | 永久看片 | 国产欧美日韩精品在线观看 | 日本小电影网站 | av资源中文在线 | 国产精品久久久久久久久免费丝袜 | 久久久精品日本 | 亚洲综合网站 |