《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > PIC:讀寫24LCxx系列的EEPROM的實例C語言程序

PIC:讀寫24LCxx系列的EEPROM的實例C語言程序

2009-01-16
關鍵詞: EEPROM 單片機

PIC:讀寫24LCxx系列的EEPROM的實例C語言程序

//********************************************************* 
//*            Using I2C Master Mode for access Slave (EEPRM)  
//*                
//* Written by:  Richard Yang                                
//*              Sr. Corporate Application Engineer            
//*              Microchip Technology Inc.                
//* Date:        Oct. 3nd '2002                            
//* Revision: 1.00
//* Language tools : MPLAB-C18 v2.09.13
//*      MPLINK v3.10
//*      MPLAB-IDE v6.00.17 & ICD2                                  
//***********************************************************
/* Include Header files  */

#i nclude <p18f452.h>
#i nclude <i2c.h>   // Load I2C Header file from defult direct
#i nclude <timers.h>
#i nclude "P18LCD.h"   // Load P18LCD Header file form current working direct

/* Declare the Function Prototype */

void Initialize_I2C_Master(void);
void EE_Page_Write(unsigned char,unsigned char,unsigned char,unsigned char *);
void EE_SEQU_Read(unsigned char,unsigned char,unsigned char,unsigned char *);
void EEPROM_Write(unsigned char,unsigned char,unsigned char);
void EEPROM_ACK(unsigned char);
unsigned char EEPROM_Read(unsigned char,unsigned char);
void I2C_Done(void);
void Initialize_Timer2(void);
void isr_high_direct(void);
void isr_high(void);

#pragma romdata My_romdata=0x1000
const rom far unsigned char LCD_MSG1[]="SW2: Byte Write ";
const rom far unsigned char LCD_MSG2[]="SW6: Random Read";
const rom far unsigned char LCD_MSG3[]="Byte Write Mode ";
const rom far unsigned char LCD_MSG4[]="Random Read Mode";
const rom far unsigned char LCD_MSG5[]="Sended:         ";
const rom far unsigned char LCD_MSG6[]="Send:           ";
const rom unsigned char I2C_Write_Buffer[]="Microchip Technology";
#pragma romdata

/* Define following array in data memory */

unsigned char I2C_Read_Buffer [32];

/* define following variable in data memory at Access Bank */
#pragma udata access My_RAM
near unsigned char Debounce;
near unsigned char Send_Addr;
near unsigned char Send_Data;
near unsigned char Send_Length;
near unsigned char Read_Data;
near unsigned char P_SW2;
near unsigned char P_SW6;
#pragma udata

#define Page_Length 8
#define SW2  PORTAbits.RA4
#define SW6  PORTEbits.RE1
#define Bounce_Time 6
#define EE_CMD 0xA0

//***********************************************************
/*                 */
/*       Main  Program        */
/*                 */
//***********************************************************


void main(void)
{
 ADCON1=0b00000110;  // Disable A/D Function
 TRISAbits.TRISA4=1;  // Set SW2 for input
 TRISEbits.TRISE1=1;  // Set SW6 for Input
 Initialize_Timer2( );
 Initialize_I2C_Master( );
 OpenLCD( );
 
 if (SW2 & SW6)Debounce=0;
 else Debounce = Bounce_Time;
 
 while(1)
 {
  LCD_Set_Cursor(0,0);    // Put LCD Cursor on (0,0)
  putrsLCD(LCD_MSG1);
  LCD_Set_Cursor(1,0);    // Put LCD Cursor on (1,0)
  putrsLCD(LCD_MSG2);
 
  P_SW2=P_SW6=0;
  Send_Addr=0;
 
  while(1)
  {
   if (P_SW2)
   {
    P_SW2=0;
    Debounce = Bounce_Time;
    LCD_Set_Cursor(0,0);    // Put LCD Cursor on (0,0)
    putrsLCD(LCD_MSG3);
    LCD_Set_Cursor(1,0);    // Put LCD Cursor on (0,0)
    putrsLCD(LCD_MSG5);
   
    do
    {
     while (!P_SW2);
     P_SW2=0;
     LCD_Set_Cursor(1,8);
     Send_Data=I2C_Write_Buffer[Send_Addr];
     EEPROM_Write(EE_CMD,Send_Addr,Send_Data);
     puthexLCD(EE_CMD);
     putcLCD(' ');
     puthexLCD(Send_Addr);
     putcLCD(' ');
     puthexLCD(Send_Data);
     EEPROM_ACK(EE_CMD);
     Send_Addr++;
    } while (I2C_Write_Buffer[Send_Addr]!=0x00);
   break;
   }
  
   if (P_SW6)
   {
    P_SW6=0;
    Debounce = Bounce_Time;
    LCD_Set_Cursor(0,0);    // Put LCD Cursor on (0,0)
    putrsLCD(LCD_MSG4);
    LCD_Set_Cursor(1,0);    // Put LCD Cursor on (0,0)
    putrsLCD(LCD_MSG6);
   
  
    while(1)
    {
     if (P_SW6)
     {
     P_SW6=0;
     LCD_Set_Cursor(1,5);
     Read_Data = EEPROM_Read(EE_CMD,Send_Addr);
     puthexLCD(EE_CMD);
     putcLCD(' ');
     puthexLCD(Send_Addr);
     putcLCD(' ');
     puthexLCD(EE_CMD);
     putcLCD(' ');
     puthexLCD(Read_Data);
     Send_Addr++;
     }
     if (P_SW2) break;
    }
    if (P_SW2) break;
   }
   if (P_SW2)
   {
    P_SW2=0;
     break;
   }
  }
 }
}
//************************************************
//*       #pragma Interrupt Declarations         *
//*             *
//* Function: isr_high_direct                    *
//*   - Direct execution to the actual           *
//*     high-priority interrupt code.            *
//************************************************
#pragma code isrhighcode = 0x0008

void isr_high_direct(void)
{         
     _asm      //begin in-line assembly
     goto isr_high   //go to isr_high function
     _endasm     //end in-line assembly
}
#pragma code

//************************************************
//* Function: isr_high(void)                     *    
//*   High priority interrupt for Timer2         *        
//************************************************
#pragma interrupt isr_high

void isr_high(void)
{
 PIR1bits.TMR2IF=0;     // Clear Timer2 interrupt Flag
 
 if (Debounce==0)
 {
  if (!SW2)
  { P_SW2=1; Debounce =Bounce_Time; }
  if (!SW6)
  { P_SW6=1; Debounce =Bounce_Time; }
 } 
 else if (SW2 & SW6)Debounce--;
   else Debounce =Bounce_Time;   
}       
#pragma code

//***********************************************
//*         Write a Byte to EEPROM              
//*   - ctrl : Control Byte of EEPROM   
//*   - addr : Location of EEPROM   
//*   - data : Data Byte of EEPROM    
//***********************************************

void Initialize_Timer2(void)
{

  RCONbits.IPEN=1;   // Enable Interrupt Priority bit
  IPR1bits.TMR2IP=1;   // Set Timer2 for High Priority
  INTCONbits.GIEH=1;   // Enable High Priority Interrupt

  OpenTimer2 (TIMER_INT_ON  // Turn On the Timer2 with Interrupt
       & T2_PS_1_4   // (4Mhz/4) [4*10*(99+1)] = 4mS */
       & T2_POST_1_10);

  PR2 = 99;
}

//***********************************************
//*         Write a Byte to EEPROM              *
//*   - ctrl : Control Byte of EEPROM   *
//*   - addr : Location of EEPROM   *
//*   - data : Data Byte of EEPROM    *
//***********************************************
void EEPROM_Write(unsigned char ctrl,unsigned char addr,unsigned char data)
{
 IdleI2C();                // ensure module is idle
   StartI2C();      // Start condition
 I2C_Done();      // Wait Start condition completed and clear SSPIF flag   

 WriteI2C(ctrl);     // Write Control+Write to EEPROM & Check BF flag
 while(SSPCON2bits.ACKSTAT);  // wait until received the Acknowledge from EEPROM
 I2C_Done();      // Clear SSPIF flag

 WriteI2C(addr);     // Write Address to EEPROM
 while(SSPCON2bits.ACKSTAT);  // wait until received the Acknowledge from EEPROM
 I2C_Done();

 WriteI2C(data);     // Write Data to EEPROM
 while(SSPCON2bits.ACKSTAT);  // wait until received the Acknowledge from EEPROM
 I2C_Done();

 StopI2C();      // Stop condition
 I2C_Done();      // Wait the Stop condition completed
}

//***********************************************
//*         Pae Write to EEPROM               
//*
//*   - ctrl : Control Byte of EEPROM 
//*   - addr : Location of EEPROM   
//*   - length : Write counter
//*   - *dptr : RAM point --> EEPROM
//*
//***********************************************
void EE_Page_Write(unsigned char ctrl,unsigned char addr,unsigned char length,unsigned char *dptr)
{
 IdleI2C();                // ensure module is idle
   StartI2C();      // Start condition
 I2C_Done();      // Wait Start condition completed
 
 WriteI2C(ctrl);     // Write Control+Write to EEPROM & Check BF flag
 while(SSPCON2bits.ACKSTAT);  // wait until received the Acknowledge from EEPROM
 I2C_Done();      // Clear SSPIF flag

 WriteI2C(addr);     // Write Address to EEPROM
 while(SSPCON2bits.ACKSTAT);  // wait until received the Acknowledge from EEPROM
 I2C_Done();

 while (length!=0)    // Check write completed ?
 {
  WriteI2C(*dptr);   // Write data to EEPROM
  while(SSPCON2bits.ACKSTAT); // wait until received the Acknowledge from EEPROM
  I2C_Done();
  dptr++;      // Point to next byte
  length--;
 }
 
 StopI2C();      // Stop condition
 I2C_Done();      // Wait the Stop condition completed
}
 
//***********************************************
//*         EEPROM Acknowledge Polling          *
//*   --  The routine will polling the ACK  *
//*       response from EEPROM       *
//*   --  ACK=0 return        *
//*   --  ACK=1 send Restart & loop check  *
//***********************************************
void EEPROM_ACK(unsigned char ctrl)
{
 unsigned char i;

 IdleI2C();                // ensure module is idle
   StartI2C();      // Start condition
 I2C_Done();      // Wait Start condition completed

 WriteI2C(ctrl);     // Write Control to EEPROM (WRITE)
 I2C_Done();      // Clear SSPIF flag

 while (SSPCON2bits.ACKSTAT)  // test for Acknowledge from EEPROM
    {
  for (i=0;i<100;i++);  // Delay for next Repet-Start

       RestartI2C();               // initiate Repet-Start condition
  I2C_Done();          // Wait Repet-Start condition completed

  WriteI2C(ctrl);    // Write Control to EEPROM (WRITE)
  I2C_Done();      // Clear SSPIF flag
    }  
 StopI2C();                      // send STOP condition
 I2C_Done();      // wait until stop condition is over
}

//***********************************************
//*    Random Read a Byte from EEPROM           *
//*   - ctrl : Control Byte of EEPROM (Write) *
//*     (Ctrl +1 ) : Read Command    *
//*   - addr : Address Byte of EEPROM   *
//*   - Return : Read Data from EEPROM   *
//***********************************************
unsigned char EEPROM_Read(unsigned char ctrl,unsigned char addr)
{
 unsigned char f;
 
 IdleI2C();                // ensure module is idle
   StartI2C();      // Start condition
 I2C_Done();      // Wait Start condition completed

 WriteI2C(ctrl);     // Write Control to EEPROM   
    while(SSPCON2bits.ACKSTAT);    // test for ACK condition, if received
 I2C_Done();      // Clear SSPIF flag

 WriteI2C(addr);     // Write Address to EEPROM        
    while(SSPCON2bits.ACKSTAT);   // test for ACK condition, if received 
 I2C_Done();      // Clear SSPIF flag

    RestartI2C();                // initiate Restart condition
 I2C_Done();

 WriteI2C(ctrl+1);    // Write Control to EEPROM             
 while(SSPCON2bits.ACKSTAT);    // test for ACK condition, if received
 I2C_Done();      // Clear SSPIF flag

 f=ReadI2C();     // Enable I2C Receiver & wait BF=1 until received data
 I2C_Done();      // Clear SSPIF flag

 NotAckI2C();     // Genarate Non_Acknowledge to EEPROM
 I2C_Done();   
                    
    StopI2C();                   // send STOP condition
 I2C_Done();      // wait until stop condition is over

 return(f);      // Return Data from EEPROM
}

//***********************************************
//*         Sequential Read from EEPROM               
//*
//*   - ctrl : Control Byte of EEPROM 
//*   - addr : Location of EEPROM   
//*   - length : Read counter
//*   - *dptr : Store EEPROM data to RAM
//*
//***********************************************
void EE_SEQU_Read(unsigned char ctrl,unsigned char addr,unsigned char length,unsigned char *dptr)
{
 IdleI2C();                // ensure module is idle
   StartI2C();      // Start condition
 I2C_Done();      // Wait Start condition completed

 WriteI2C(ctrl);     // Write Control to EEPROM   
    while(SSPCON2bits.ACKSTAT);    // test for ACK condition, if received
 I2C_Done();      // Clear SSPIF flag

 WriteI2C(addr);     // Write Address to EEPROM        
    while(SSPCON2bits.ACKSTAT);   // test for ACK condition, if received 
 I2C_Done();      // Clear SSPIF flag

    RestartI2C();                // initiate Restart condition
 I2C_Done();

 WriteI2C(ctrl+1);    // Write Control to EEPROM             
 while(SSPCON2bits.ACKSTAT);    // Test for ACK condition, if received
 I2C_Done();      // Clear SSPIF flag

 while (length!=0)
 {
  *dptr=ReadI2C();   // Enable I2C Receiver & Store EEPROM data to Point buffer
  I2C_Done();
  dptr++;
  length--;
   
  if (length==0) NotAckI2C();
  else AckI2C();    // Continue read next data, send a acknowledge to EEPROM
 
  I2C_Done();
 }

    StopI2C();                   // send STOP condition
 I2C_Done();      // wait until stop condition is over
}

//***********************************************
//*   Check I2C action that is completed        *
//***********************************************
void I2C_Done(void)
{
 while (!PIR1bits.SSPIF);  // Completed the action when the SSPIF is Hi.
 PIR1bits.SSPIF=0;      // Clear SSPIF
}

//************************************************
//* Initial I2C Master Mode with 7 bits Address  *
//* Clock Speed : 100KHz @4MHz      *
//************************************************
void Initialize_I2C_Master(void)
{
 OpenI2C(MASTER,SLEW_ON);
 SSPADD= 9;
}

 

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久精品夜色噜噜亚洲a∨| 久久另类ts人妖一区二区| 亚洲欧美在线网| 国产一区二区三区久久| 欧美体内谢she精2性欧美| 欧美绝品在线观看成人午夜影视| 亚洲视频一二| 亚洲一区二区网站| 欧美人与性动交α欧美精品济南到| 欧美午夜电影一区| 免费成人黄色片| 在线观看久久av| 欧美日韩另类国产亚洲欧美一级| 亚洲欧美日韩精品| 亚洲美女91| 精品99一区二区| 亚洲欧美日韩国产中文| 亚洲欧美成人一区二区在线电影| 亚洲欧美不卡| 在线一区二区日韩| 影音先锋欧美精品| 国内精品久久久久久影视8| 久久黄色小说| 国产精品一区=区| 一区二区三区日韩欧美精品| 亚洲日本欧美天堂| 在线日韩电影| 在线观看欧美黄色| 国产精品第13页| 欧美xx视频| 午夜在线观看欧美| 国产精品毛片va一区二区三区| 国产精品a久久久久久| 久久婷婷国产综合尤物精品| 夜夜精品视频| 亚洲欧洲精品一区二区精品久久久| 国内精品久久久久影院 日本资源| 麻豆精品一区二区综合av| 老色批av在线精品| 国产一区二区精品丝袜| 欧美第一黄网免费网站| 美女福利精品视频| 亚洲图片欧美午夜| 欧美亚洲免费| 精品动漫3d一区二区三区免费版| 久久国产成人| 亚洲在线视频免费观看| 狠狠色丁香婷婷综合影院| 欧美特黄a级高清免费大片a级| 欧美亚洲三区| 亚洲最新视频在线| 久久免费视频一区| 欧美系列亚洲系列| 一道本一区二区| 久久久999成人| 国产色视频一区| 亚洲精品久久在线| 欧美日韩精品免费观看视频| 久久高清福利视频| 国产精品伦子伦免费视频| 国产在线一区二区三区四区| 国产一区二区三区免费观看| 亚洲男女毛片无遮挡| 亚洲乱码国产乱码精品精| 毛片精品免费在线观看| 久久九九有精品国产23| 欧美日韩成人免费| 在线观看日韩专区| 在线天堂一区av电影| 国产精品成人一区二区| 亚洲成在线观看| 亚洲狠狠婷婷| 在线综合视频| 狠狠色香婷婷久久亚洲精品| 黄色亚洲在线| 久久综合伊人77777尤物| 久久国产一区二区三区| 亚洲乱码一区二区| 亚洲欧美日韩精品久久久久| 亚洲尤物在线视频观看| 免费亚洲电影在线| 亚洲小视频在线观看| 久久大逼视频| 国产精品你懂的在线| 久久精品女人的天堂av| 一区电影在线观看| 国产精品久久国产愉拍| 国产精品一区在线播放| 一个色综合导航| 亚洲国产精品久久久久秋霞影院| 亚洲欧美日韩精品久久亚洲区| 亚洲一区二区三区视频| 国产精品你懂得| 欧美日韩亚洲视频| 亚洲片国产一区一级在线观看| 亚洲最新在线视频| 国产精品久久一卡二卡| 久久精品国产v日韩v亚洲| 久久亚洲私人国产精品va媚药| 永久91嫩草亚洲精品人人| 久久九九热re6这里有精品| 欧美女主播在线| 久久综合色一综合色88| 久久这里有精品视频| 欧美+日本+国产+在线a∨观看| 久久九九全国免费精品观看| 国产欧美日韩高清| 亚洲日本在线视频观看| 国产一区二区三区网站| 欧美精品一区二区三区四区| 欧美一区二区成人6969| 欧美精品v日韩精品v韩国精品v| 亚洲国产精品99久久久久久久久| 99re热精品| 欧美日韩一级黄| 国产亚洲一区精品| 欧美美女喷水视频| 在线日韩中文字幕| 亚洲黄色大片| 亚洲专区一二三| 欧美成人免费一级人片100| 久久精品视频免费观看| 国产亚洲精品久久久久动| 新片速递亚洲合集欧美合集| 欧美亚洲三区| 国产日韩欧美一二三区| 亚洲女人天堂成人av在线| 亚洲午夜在线视频| 国产婷婷成人久久av免费高清| 亚洲女性裸体视频| 一区二区三区成人精品| 久久久www成人免费精品| 欧美人交a欧美精品| 欧美日韩一区二区视频在线观看| 蜜桃精品一区二区三区| 国产精品乱人伦一区二区| 国模精品娜娜一二三区| 亚洲精品中文字幕在线观看| 亚洲欧美在线视频观看| 鲁大师影院一区二区三区| 欧美精品一区二区三区一线天视频| 国产区在线观看成人精品| 国产精品萝li| 国产亚洲第一区| 国模吧视频一区| 欧美成人三级在线| 国产日韩精品视频一区二区三区| 欧美一区二区三区精品电影| 欧美精品一区三区在线观看| 久久精品国产96久久久香蕉| 国产精品www994| 在线一区日本视频| 亚洲影视在线播放| 伊人久久久大香线蕉综合直播| 国产字幕视频一区二区| 亚洲一区二区三区四区五区黄| 在线精品亚洲一区二区| 久久精品国产精品亚洲| 欧美日韩和欧美的一区二区| 国产一区二区精品丝袜| 国产精品久久久久毛片大屁完整版| 国产偷久久久精品专区| 亚洲黄色一区二区三区| 狠狠操狠狠色综合网| 国产精品五月天| 欧美成人在线影院| 久久av红桃一区二区小说| 亚洲一二三区精品| 亚洲尤物在线| 性欧美xxxx大乳国产app| 欧美国产亚洲视频| 午夜影视日本亚洲欧洲精品| 欧美在线亚洲综合一区| 欧美久久久久久蜜桃| 久久夜色精品亚洲噜噜国产mv| 久久免费少妇高潮久久精品99| 99国产一区| 鲁大师成人一区二区三区| 久久天堂精品| 久久综合九色综合欧美狠狠| 久久精品日产第一区二区| 国产亚洲欧美一区二区三区| 欧美午夜精品久久久久久久| 久久国产乱子精品免费女| 亚洲国产专区校园欧美| 国产精品一区二区三区四区五区| 国产精品久久久久久久第一福利| 久久不见久久见免费视频1| 亚洲国产精品福利| 欧美日韩国产一区二区三区地区| 亚洲国产精品电影| 欧美少妇一区| 99亚洲一区二区| 国产女主播一区| 欧美日韩日本网| 欧美成人精品激情在线观看| 欧美天堂在线观看| 伊人久久亚洲影院| 亚洲国产精品精华液网站| 亚洲高清网站| 欧美a级片网| 久久aⅴ国产紧身牛仔裤| 免费视频久久| 欧美国产日韩一二三区| 激情欧美一区二区三区| 欧美高清在线精品一区| 亚洲欧洲99久久| 国产精品视频精品| 欧美成人久久| 国产一区二区三区精品欧美日韩一区二区三区| 欧美极品在线观看| 久久久青草青青国产亚洲免观| 欧美日韩在线一区二区| 亚洲国产日韩欧美在线图片| 亚洲精品国产精品国产自| 欧美视频亚洲视频| 国产一区二区三区无遮挡| 在线观看欧美精品| 欧美日韩国产欧美日美国产精品| 久久久99爱| 欧美日韩一区二区三区在线| 国产精品麻豆成人av电影艾秋| 欧美三级日韩三级国产三级| 西西人体一区二区| 日韩香蕉视频| 欧美一区二区三区在线视频| 国产精品久久久免费| 国产日产欧美a一级在线| 久久亚洲一区二区| 伊人久久大香线| 欧美日韩视频在线观看一区二区三区| 你懂的网址国产 欧美| 亚洲私人黄色宅男| 蜜桃av久久久亚洲精品| 一本一道久久综合狠狠老精东影业| 亚洲天堂av在线免费| 欧美国产专区| 久久久久久久波多野高潮日日| 亚洲欧美日韩爽爽影院| 亚洲视频在线一区观看| 欧美日韩一级片在线观看| 久久久99久久精品女同性| 久久永久免费| 激情av一区二区| 亚洲国产精品久久| 精品粉嫩aⅴ一区二区三区四区| 欧美激情视频在线免费观看 欧美视频免费一| 欧美亚洲成人网| 久久国产精品99精品国产| 国产人成精品一区二区三| 久久精品成人| 欧美久久久久久久| 激情久久久久久久| 久久久久久穴| 在线亚洲欧美视频| 亚洲深爱激情| 亚洲在线一区二区三区| 久久精品国产亚洲一区二区三区| 亚洲女性喷水在线观看一区| 久久精品99国产精品| 国产一区二区三区在线观看免费| 国产欧美精品日韩区二区麻豆天美| 欧美视频三区在线播放| 麻豆精品视频在线观看| 亚洲精品日韩激情在线电影| 国产精品成人在线观看| 国产精品视频yy9099| 亚洲一区二区网站| 亚洲一区3d动漫同人无遮挡| 亚洲欧美中日韩| 欧美成人黄色小视频| 性视频1819p久久| 日韩天天综合| 久久成人精品一区二区三区| 亚洲欧美激情四射在线日| 国产视频久久| 免费影视亚洲| 日韩网站在线看片你懂的| 亚洲欧美三级伦理| 欧美本精品男人aⅴ天堂| 中文在线资源观看网站视频免费不卡| 亚洲欧洲日产国码二区| 亚洲国产一区二区三区高清| 欧美永久精品| 欧美一区二区观看视频| 麻豆精品视频在线观看| 国产一区二区三区高清在线观看| 国产精品久久久久久久久| 一区二区黄色| 欧美日韩第一区日日骚| 一区二区三区四区在线| 国产精品国产三级国产aⅴ无密码| 国产精品美女一区二区| 国产精品电影网站| 国产日韩亚洲欧美综合| 欧美mv日韩mv国产网站| 一区二区三区回区在观看免费视频| 亚洲自拍偷拍一区| 亚洲经典视频在线观看| 在线亚洲国产精品网站| 久久大综合网| 欧美日韩亚洲一区在线观看| 老**午夜毛片一区二区三区| 男女视频一区二区| 国产欧美精品在线播放| 亚洲国产精品久久精品怡红院| 国产一区二区按摩在线观看| 欧美国产日产韩国视频| 中文久久乱码一区二区| 欧美日韩亚洲一区三区| 国产精品久线观看视频| 国产精品香蕉在线观看| 国产精品日韩电影| 一区二区不卡在线视频 午夜欧美不卡'| 国产亚洲欧洲997久久综合| 亚洲狼人综合| 欧美一区二区黄色| 久久久久国色av免费观看性色| 欧美在线关看| 亚洲一区二区三区四区中文| 欧美在线免费一级片| 欧美日韩视频第一区| 新片速递亚洲合集欧美合集| 在线看无码的免费网站| 久久久久久亚洲精品中文字幕| 欧美一区二区网站| 国产欧美日韩亚洲精品| 国产精品一区二区三区免费观看|