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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5119|回復: 0
收起左側

LPC11xx讀寫AT24C04主模式400KHz程序

[復制鏈接]
ID:73735 發表于 2015-2-18 23:06 | 顯示全部樓層 |閱讀模式
IIC.c文件:
/*****************************************************************************
*   i2c.c:  I2C C file for NXP LPC11xx Family Microprocessors
*
*   Copyright(C) 2008, NXP Semiconductor
*   All rights reserved.
*
*   History
*   2008.07.19  ver 1.00    Preliminary version, first Release
*
*****************************************************************************/
#include "LPC11xx.h"                        /* LPC11xx Peripheral Registers */
#include "type.h"
#include "i2c.h"
#include "Delay.h"

volatile uint32_t I2CMasterState = I2C_IDLE;
volatile uint32_t I2CSlaveState = I2C_IDLE;

volatile uint32_t I2CMode;

volatile uint8_t  I2CMasterBuffer[I2C_BUFSIZE]={0};
volatile uint8_t  I2CSlaveBuffer[I2C_BUFSIZE] ={0};
volatile uint32_t I2CReadLength;
volatile uint32_t I2CWriteLength;

volatile uint32_t RdIndex = 0;
volatile uint32_t WrIndex = 0;

/*
From device to device, the I2C communication protocol may vary,
in the example below, the protocol uses repeated start to read data from or
write to the device:
For master read: the sequence is: STA,Addr(W),offset,RE-STA,Addr(r),data...STO
for master write: the sequence is: STA,Addr(W),offset,RE-STA,Addr(w),data...STO
Thus, in state 8, the address is always WRITE. in state 10, the address could
be READ or WRITE depending on the I2C command.
*/   

/*****************************************************************************
** Function name:                I2C_IRQHandler
**
** Descriptions:                I2C interrupt handler, deal with master mode only.
**
** parameters:                        None
** Returned value:                None
**
*****************************************************************************/
void I2C_IRQHandler(void)
{
  uint8_t StatValue;

  /* this handler deals with master read and master write only */
  StatValue = LPC_I2C->STAT;
  switch ( StatValue )
  {
/**************** Master write **********************************/
               
          case 0x08:                        /* A Start condition is issued. */
          WrIndex = 0;
          LPC_I2C->DAT = I2CMasterBuffer[WrIndex++];
          LPC_I2C->CONCLR = (I2CONCLR_SIC | I2CONCLR_STAC);
          I2CMasterState = I2C_STARTED;
          break;
       
          case 0x10:                        /* A repeated started is issued */
          WrIndex = 0;
          /* Send SLA with R bit set, */
          LPC_I2C->DAT = I2CMasterBuffer[WrIndex++];
          LPC_I2C->CONCLR = (I2CONCLR_SIC | I2CONCLR_STAC);
          I2CMasterState = I2C_RESTARTED;
          break;
       
          case 0x18:                        /* Regardless, it's a ACK */
          if ( I2CMasterState == I2C_STARTED )
          {
            LPC_I2C->DAT = I2CMasterBuffer[WrIndex++];
            I2CMasterState = DATA_ACK;
          }
          LPC_I2C->CONCLR = I2CONCLR_SIC;
          break;
       
          case 0x28:        /* Data byte has been transmitted, regardless ACK or NACK */
          case 0x30:
          if ( WrIndex < I2CWriteLength )
          {   
            LPC_I2C->DAT = I2CMasterBuffer[WrIndex++]; /* this should be the last one */
            I2CMasterState = DATA_ACK;
          }
          else
          {
            if ( I2CReadLength != 0 )
            {
                    LPC_I2C->CONSET = I2CONSET_STA;                 /* Set Repeated-start flag */
                    I2CMasterState = I2C_REPEATED_START;
            }
            else
            {
                    I2CMasterState = DATA_NACK;
                    LPC_I2C->CONSET = I2CONSET_STO;          /* Set Stop flag */
            }
          }
          LPC_I2C->CONCLR = I2CONCLR_SIC;
          break;
               
/**************** Master read *********************************/
               
          case 0x40:        /* Master Receive, SLA_R has been sent */
          LPC_I2C->CONSET = I2CONSET_AA;        /* assert ACK after data is received */
          LPC_I2C->CONCLR = I2CONCLR_SIC;
          break;
       
          case 0x50:        /* Data byte has been received, regardless following ACK or NACK */
          I2CSlaveBuffer[RdIndex++] = LPC_I2C->DAT;
          if ( RdIndex < I2CReadLength )
          {   
            I2CMasterState = DATA_ACK;
          }
          else
          {
            I2CMasterState = DATA_NACK;
          }
          LPC_I2C->CONSET = I2CONSET_AA;        /* assert ACK after data is received */
          LPC_I2C->CONCLR = I2CONCLR_SIC;
          break;
       
          case 0x58:
          I2CSlaveBuffer[RdIndex++] = LPC_I2C->DAT;
          I2CMasterState = DATA_NACK;
          LPC_I2C->CONSET = I2CONSET_STO;        /* Set Stop flag */
          LPC_I2C->CONCLR = I2CONCLR_SIC;        /* Clear SI flag */
          break;

          case 0x20:                /* regardless, it's a NACK */
          case 0x48:
          LPC_I2C->CONCLR = I2CONCLR_SIC;
          I2CMasterState = DATA_NACK;
          break;
       
          case 0x38:                /* Arbitration lost, in this example, we don't
                                        deal with multiple master situation */
          default:
          LPC_I2C->CONCLR = I2CONCLR_SIC;       
          break;
  }
  return;
}

/*****************************************************************************
** Function name:                I2CStart
**
** Descriptions:                Create I2C start condition, a timeout
**                                value is set if the I2C never gets started,
**                                and timed out. It's a fatal error.
**
** parameters:                        None
** Returned value:                true or false, return false if timed out
**
*****************************************************************************/
uint32_t I2CStart( void )
{
  uint32_t timeout = 0;
  uint32_t retVal = FALSE;
  /*--- Issue a start condition ---*/
  LPC_I2C->CONSET = I2CONSET_STA;        /* Set Start flag */

  /*--- Wait until START transmitted ---*/
  while( 1 )
  {
          if ( I2CMasterState == I2C_STARTED )
          {
            retVal = TRUE;
            break;       
          }
          if ( timeout >= MAX_TIMEOUT )
          {
            retVal = FALSE;
            break;
          }
               
          timeout++;
  }
  return( retVal );
}

/*****************************************************************************
** Function name:                I2CStop
**
** Descriptions:                Set the I2C stop condition, if the routine
**                                never exit, it's a fatal bus error.
**
** parameters:                        None
** Returned value:                true or never return
**
*****************************************************************************/
uint32_t I2CStop( void )
{
  LPC_I2C->CONSET = I2CONSET_STO;      /* Set Stop flag */
  LPC_I2C->CONCLR = I2CONCLR_SIC;      /* Clear SI flag */

  /*--- Wait for STOP detected ---*/
  while( LPC_I2C->CONSET & I2CONSET_STO );
  return TRUE;
}

/*****************************************************************************
** Function name:                I2CInit
**
** Descriptions:                Initialize I2C controller
**
** parameters:                        I2c mode is either MASTER or SLAVE
** Returned value:                true or false, return false if the I2C
**                                interrupt handler was not installed correctly
**
*****************************************************************************/
uint32_t I2CInit( uint32_t I2cMode )
{
  /* It seems to be bit0 is for I2C, different from
  UM. To be retested along with SSP reset. SSP and I2C
  reset are overlapped, a known bug, for now, both SSP
  and I2C use bit 0 for reset enable. Once the problem
  is fixed, change to "#if 1". */
#if 1
  LPC_SYSCON->PRESETCTRL |= (0x1<<1);
#else
  LPC_SYSCON->PRESETCTRL |= (0x1<<0);
#endif
  //LPC_SYSCON->SYSAHBCLKCTRL |= (1<<5);
  LPC_IOCON->PIO0_4 &= ~0x3F;                   /*  I2C I/O config */
  LPC_IOCON->PIO0_4 |= 0x01;                         /* I2C SCL */
  LPC_IOCON->PIO0_5 &= ~0x3F;                   /*  I2C I/O config */
  LPC_IOCON->PIO0_5 |= 0x01;                         /* I2C SDA */

  /*--- Clear flags ---*/
  LPC_I2C->CONCLR = I2CONCLR_AAC | I2CONCLR_SIC | I2CONCLR_STAC | I2CONCLR_I2ENC;   

  /*--- Reset registers ---*/
#if FAST_MODE_PLUS
  LPC_IOCON->PIO0_4 |= (0x1<<9);
  LPC_IOCON->PIO0_5 |= (0x1<<9);
  LPC_I2C->SCLL   = I2SCLL_HS_SCLL;
  LPC_I2C->SCLH   = I2SCLH_HS_SCLH;
#else
  LPC_I2C->SCLL   = I2SCLL_SCLL;
  LPC_I2C->SCLH   = I2SCLH_SCLH;
#endif

  if ( I2cMode == I2CSLAVE )
  {
          LPC_I2C->ADR0 = AT24C_ADDR;
  }
       
  NVIC_EnableIRQ(I2C_IRQn);             /* Enable the I2C Interrupt */
  LPC_I2C->CONSET = I2CONSET_I2EN;      /* Enable I2C */
       
  return( TRUE );
}

/*****************************************************************************
**I2C_SendOneByte()啟動I2C發送一個數據,Addr為從機地址,Data為將要發送的數據****
*****************************************************************************/
uint32_t I2C_SendOneByte(uint8_t Addr, uint8_t Data)
{
        /* Write SLA(W), address and one data byte */
  I2CWriteLength = 2;
  I2CReadLength  = 0;
  I2CMasterBuffer[0] = Addr;              /* Address Data and Write Bit */
  I2CMasterBuffer[1] = Data;              /* Data 0 */
       
        do                                      /*發送起始條件,直到起始條件成功發送,順利接管總線*/
        {
                ;
        }
        while(I2CStart() == FALSE);
       
        while (1)
  {
          if ( I2CMasterState == DATA_NACK )
          {
            I2CStop();
            break;
          }
  }
  return ( TRUE );
}

/******************************************************************************************************
**I2C_SendOneByte()啟動I2C發送多個數據,Addr為從機地址,Num為要發送的數據個數,pdata為數據首字節地址指針**
******************************************************************************************************/
uint32_t I2C_SendNumByte(uint8_t Addr, uint8_t Num, uint8_t *pdata)
{
        uint8_t x=0;
        /* Write SLA(W), address and one data byte */
  I2CWriteLength = Num+1;
  I2CReadLength  = 0;
  I2CMasterBuffer[0] = Addr;                        /* Address Data and Write Bit*/
       
        for(x=0;x<Num;x++)
        {
                I2CMasterBuffer[x+1] = pdata[x];                /* Data */
        }
       
        do                             /*發送起始條件,直到起始條件成功發送,順利接管總線*/
        {
                ;
        }
        while(I2CStart() == FALSE);
       
        while (1)
  {
          if ( I2CMasterState == DATA_NACK )
          {
            I2CStop();
            break;
          }
  }
  return ( TRUE );
}
/*****************************************************************************
****I2C_ReadByte()啟動I2C讀取多個數據,Addr為從機地址,Num為要發送的數據個數
*****************************************************************************/
uint32_t I2C_ReadByte(uint32_t Num)
{
        I2CWriteLength = 1;
  I2CReadLength  = Num;
        I2CMasterBuffer[0] = AT24C_ADDR|READ_BIT;     /*Address Data and Write Bit*/
       
        do                                            /*發送起始條件,直到起始條件成功發送,接管總線*/
        {
                ;
        }
        while(I2CStart() == FALSE);
       
        while ( 1 )
  {
          if ( I2CMasterState == DATA_NACK )
          {
            I2CStop();
            break;
          }
  }
  return ( TRUE );
}

/*****************************************************************************
** 以下為AT24C04驅動程序**
*****************************************************************************/
uint32_t AT24C04_ByteWrite(uint8_t Page,uint8_t WordAddr,uint8_t Data)
{
        /* Write SLA(W), DeviceAddress+Page and one data byte */
  I2CWriteLength = 3;
  I2CReadLength  = 0;
  I2CMasterBuffer[0] = AT24C_ADDR|Page|WRITE_BIT;       /* DeviceAddress Data+Page and Write Bit*/
  I2CMasterBuffer[1] = WordAddr;                        /* Word Address*/
        I2CMasterBuffer[2] = Data;                            /* Data */
       
        do                                                    /*發送起始條件,直到起始條件成功發送,順利接管總線*/
        {
                ;
        }
        while(I2CStart() == FALSE);
       
        while (1)
  {
          if ( I2CMasterState == DATA_NACK )
          {
            I2CStop();
            break;
          }
  }
  return ( TRUE );
}
/************************************************************************************************/
/* the microcontroller can transmit up to seven(1K/2K) or fifteen (4K, 8K, 16K) more data words.*/
/************************************************************************************************/
uint32_t AT24C04_PageWrite(uint8_t Page,uint8_t WordAddr,uint32_t Num,uint8_t *pdata)
{
        uint8_t x=0;
        if(Num>16)
        {
                Num=16;
        }
        /* Write SLA(W), DeviceAddress+Page and one data byte */
  I2CWriteLength = Num+2;
  I2CReadLength  = 0;
  I2CMasterBuffer[0] = AT24C_ADDR|Page|WRITE_BIT;       /* DeviceAddress Data+Page and Write Bit*/
  I2CMasterBuffer[1] = WordAddr;              /* Word Address*/
        for(x=0;x<=Num;x++)
        {
                I2CMasterBuffer[x+2] = pdata[x];          /* Data */
        }
       
        do                                          /*發送起始條件,直到起始條件成功發送,順利接管總線*/
        {
                ;
        }
        while(I2CStart() == FALSE);
       
        while (1)
  {
          if ( I2CMasterState == DATA_NACK )
          {
            I2CStop();
            break;
          }
  }
  return ( TRUE );
}

/*****************************************************************************
**AT24C04_CurrAdrRead(),參數Page為0或者1,以選擇所讀取的頁面*******************
**Word Address保持上次讀寫操作所用的Word Address地址,并自增1*****************
*****************************************************************************/
uint32_t AT24C04_CurrAdrRead(uint8_t Page)
{
        I2CWriteLength = 1;
  I2CReadLength  = 1;
        I2CMasterBuffer[0] = AT24C_ADDR|Page|READ_BIT;     /*DeviceAddress Data and Write Bit*/
       
        do                                            /*發送起始條件,直到起始條件成功發送,接管總線*/
        {
                ;
        }
        while(I2CStart() == FALSE);
       
        while ( 1 )
  {
          if ( I2CMasterState == DATA_NACK )
          {
            I2CStop();
            break;
          }
  }
  return ( TRUE );
}

/*******************************************************************************************
**AT24C04_RandomRead(),參數Page為0或者1,以選擇所讀取的頁面,WordAddr為所選取頁面的字節地址**
*******************************************************************************************/
uint32_t AT24C04_RandomRead(uint8_t Page,uint8_t WordAddr)
{
        /* Write SLA(W), address+Page and one data byte */
  I2CWriteLength = 2;
  I2CReadLength  = 1;
  I2CMasterBuffer[0] = AT24C_ADDR|Page|WRITE_BIT;   /* DeviceAddress Data+Page and Write Bit*/
  I2CMasterBuffer[1] = WordAddr;                    /* Word Address*/
       
        do                                                /*發送起始條件,直到起始條件成功發送,順利接管總線*/
        {
                ;
        }
        while(I2CStart() == FALSE);                       /* 接管總線后,發送DeviceAddress和WoraAddress */
       
        while (1)
  {
          if ( I2CMasterState == I2C_REPEATED_START )
          {
                        I2CWriteLength = 1;
      I2CMasterBuffer[0] = AT24C_ADDR|Page|READ_BIT;     /* DeviceAddress Data+Page and Write Bit*/
                       
                        while ( 1 )
      {
              if ( I2CMasterState == DATA_NACK )
              {
                I2CStop();
                break;
              }
      }
      return ( TRUE );
          }
  }
}

/*******************************************************************************************
**AT24C04_SequRead(),參數Page為0或者1,以選擇所讀取的頁面,Num為讀出的字節個數***************
*******************************************************************************************/
uint32_t AT24C04_SequRead(uint8_t Page,uint32_t Num)
{
        I2CWriteLength = 1;
  I2CReadLength  = Num;
        I2CMasterBuffer[0] = AT24C_ADDR|Page|READ_BIT;     /*DeviceAddress Data and Write Bit*/
       
        do                                            /*發送起始條件,直到起始條件成功發送,接管總線*/
        {
                ;
        }
        while(I2CStart() == FALSE);
       
        while ( 1 )
  {
          if ( I2CMasterState == DATA_NACK )
          {
            I2CStop();
            break;
          }
  }
  return ( TRUE );
}

/******************************************************************************
**                            End Of File
******************************************************************************/


IIC.h文件:
/*****************************************************************************
*   i2c.h:  Header file for NXP LPC Family Microprocessors
*
*   Copyright(C) 2006, NXP Semiconductor
*   All rights reserved.
*
*   History
*   2006.07.19  ver 1.00    Preliminary version, first Release
*
******************************************************************************/
#ifndef __I2C_H
#define __I2C_H

/* If I2C SEEPROM is tested, make sure FAST_MODE_PLUS is 0.
For board to board test, this flag can be turned on. */

#define FAST_MODE_PLUS               1

#define I2C_BUFSIZE                               6
#define MAX_TIMEOUT                         0x00FFFFFF

#define I2CMASTER                           0x01
#define I2CSLAVE                           0x02

#define I2C_ADDR                     0x80
#define AT24C_ADDR                   0xA0
#define AT24C_Page0                   0x00
#define AT24C_Page1                   0x02

#define WRITE_BIT                           0x00
#define READ_BIT                                 0x01

#define I2C_IDLE                                 0
#define I2C_STARTED                               1
#define I2C_RESTARTED                       2
#define I2C_REPEATED_START           3
#define DATA_ACK                                 4
#define DATA_NACK                                 5

#define I2CONSET_I2EN                       0x00000040  /* I2C Control Set Register */
#define I2CONSET_AA                               0x00000004
#define I2CONSET_SI                               0x00000008
#define I2CONSET_STO                       0x00000010
#define I2CONSET_STA                       0x00000020

#define I2CONCLR_AAC                       0x00000004  /* I2C Control clear Register */
#define I2CONCLR_SIC                       0x00000008
#define I2CONCLR_STAC                       0x00000020
#define I2CONCLR_I2ENC               0x00000040

#define I2DAT_I2C                                 0x00000000  /* I2C Data Reg */
#define I2ADR_I2C                                 0x00000000  /* I2C Slave Address Reg */
#define I2SCLH_SCLH                               0x00000060  /* I2C SCL Duty Cycle High Reg */
#define I2SCLL_SCLL                               0x00000060  /* I2C SCL Duty Cycle Low Reg */
#define I2SCLH_HS_SCLH                      0x00000015  /* Fast Plus I2C SCL Duty Cycle High Reg */
#define I2SCLL_HS_SCLL                      0x00000015  /* Fast Plus I2C SCL Duty Cycle Low Reg */

void I2C_IRQHandler(void);
uint32_t I2CStart( void );
uint32_t I2CStop( void );
uint32_t I2CInit( uint32_t I2cMode );
uint32_t I2CEngine( void );

uint32_t I2C_SendNumByte(uint8_t Addr, uint8_t Num, uint8_t *pdata);
uint32_t I2C_ReadByte(uint32_t Num);

uint32_t AT24C04_ByteWrite(uint8_t Page,uint8_t WordAddr,uint8_t Data);
uint32_t AT24C04_PageWrite(uint8_t Page,uint8_t WordAddr,uint32_t Num,uint8_t *pdata);
uint32_t AT24C04_CurrAdrRead(uint8_t Page);
uint32_t AT24C04_RandomRead(uint8_t Page,uint8_t WordAddr);
uint32_t AT24C04_SequRead(uint8_t Page,uint32_t Num);



#endif /* end __I2C_H */
/****************************************************************************
**                            End Of File
*****************************************************************************/








回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
亚洲一级网站| 亚洲成人网在线观看| 日本激情一区| 理论不卡电影大全神| 天天操夜夜摸| 中文字幕人妻一区二区在线视频 | 久久av红桃一区二区禁漫| 日韩日韩日韩日韩日韩| 91黄色精品| 欧美剧在线观看| 日韩一区二区三区免费观看| 国产精品白丝在线| 激情六月婷婷综合| 欧美日本不卡| 欧美一性一交| 日本精品另类| 麻豆网站在线看| 97高清视频| 国产永久免费| 人人妻人人澡人人爽人人欧美一区| 日韩成人短视频| 亚洲麻豆一区二区三区| 九九爱精品视频| 欧美一区二区三区四区五区六区| 奇米影视亚洲狠狠色| 亚洲乱码国产乱码精品精天堂| 欧美日韩综合视频| 亚洲国产精品v| 国产在线不卡视频| 亚洲一区成人| 日本一区二区三区视频| 欧美午夜在线播放| 日韩欧美另类一区二区| 国产在线一区二区视频| 在线午夜视频| 先锋在线亚洲| 青娱乐在线视频观看| 亚欧在线观看视频| 国产精品无码AV| aaa在线视频| 久久免费播放视频| 999久久久国产| 国精产品一区一区三区免费视频| 久久久久亚洲av片无码v| 免费看黄色一级大片| av免费观看大全| 日韩亚洲欧美一区二区| 午夜精品一区二区在线观看的| 国产精品嫩草在线观看| 亚洲一区二区在线播放| 国产女精品视频网站免费| 日本精品免费一区二区三区| 欧美精品video| 欧美第一黄色网| 久久国产精品偷| www.久久久久| 久久在精品线影院精品国产| 亚洲情综合五月天| 日韩精品视频在线| 亚洲精品不卡在线| 中文亚洲免费| 欧美一区综合| 欧美1区2区3区| 国内视频精品| 日韩视频在线一区二区三区 | 中文字幕 亚洲一区| 男人操女人下面视频| 午夜精品久久久久久久99热影院| 久久久久久久片| 亚洲无吗一区二区三区| 中日韩av在线播放| 国产精久久久久| 欧美大喷水吹潮合集在线观看| 国产大尺度视频| 大又大又粗又硬又爽少妇毛片| 泷泽萝拉在线播放| 91成人精品一区二区| 99自拍偷拍视频| 久久国产露脸精品国产| 天天操夜夜操视频| 中文字幕 人妻熟女| 97精品人妻一区二区三区| 国产婷婷一区二区三区久久| 亚洲AV午夜精品| 久久天堂夜夜一本婷婷麻豆| 国产丝袜控视频在线观看| 免费搞黄视频| av三级影院| 伪装者在线观看完整版免费| av女优在线| 都市激情国产精品| 91精品亚洲一区在线观看| 九色成人搞黄网站| 久久综合另类图片小说| 成人婷婷网色偷偷亚洲男人的天堂| 久久综合国产| 免费一级欧美片在线播放| 精品一区精品二区高清| 91一区二区在线观看| 国产精品乱子久久久久| 欧美日韩亚洲一区二| 日韩欧美亚洲国产精品字幕久久久| 亚洲精品理论电影| 欧美日本高清视频| 国产精品久久久久久久久久东京| 国产精品久久久久久久小唯西川 | 亚洲免费视频二区| 欧日韩在线视频| 18欧美乱大交| 在线午夜视频| 九色porny自拍视频在线播放| 91国产精品| 999成人网| 狠狠色综合日日| 亚洲视频资源在线| 51精品国自产在线| 不卡的av在线播放| 亚洲一卡二卡三卡四卡无卡久久 | 99热手机在线观看| 欧美一区二区三区| 日韩大陆av| 自拍偷拍欧美专区| 国产99久久久国产精品| 一区二区三区四区在线播放 | 91美女片黄在线| 午夜精品福利一区二区蜜股av| 日韩欧美国产一区二区在线播放| 久久久av网站| 成人91免费视频| 欧美二区在线视频| 久久精品无码一区| 91在线你懂的| 黄色网址网站在线观看| 成人av一区| 免费一级欧美片在线观看网站| 在线观看日韩av电影| 久久久青草青青国产亚洲免观| 欧美最新大片在线看| 精品国产依人香蕉在线精品| 国产在线一区二区三区| 在线观看福利一区| 网站免费在线观看| 伊人久久一区二区| 美女在线不卡| 日本片在线观看| 欧洲专线二区三区| 国产不卡视频一区二区三区| 日韩欧美精品免费在线| 久久久精品国产| 日韩电影天堂视频一区二区| 亚欧美一区二区三区| 国产免费观看av| 在线观看免费电影| 亚洲色图美国十次| 日韩欧美一区二区三区在线视频 | 国产一区二区三区三州| 美女被黑人爆操网站| 老司机午夜在线| 精品一区二区三| 91在线丨porny丨国产| 欧美日韩国产小视频在线观看| 97在线看免费观看视频在线观看| 日本xxx免费| 日本裸体美女视频| 四虎海外影库www4hu| 国际av在线| 国产va免费精品观看精品视频| 成人一区二区三区在线观看| 欧美日韩aaaaaa| 国产免费观看久久黄| 超碰在线播放91| 亚洲天堂一区在线| 成人av影视| 99亚洲男女激情在线观看| 日本欧美在线观看| 色94色欧美sute亚洲13| 国产成人精品免费久久久久 | 91嫩草在线| 一级黄色免费毛片| 精品国产亚洲一区二区麻豆| 网址你懂得在线观看| 国产91精品入| 久久精品一区二区三区不卡牛牛| 亚洲欧美日韩直播| 午夜精品区一区二区三| 国产精品情侣呻吟对白视频| 中文字幕欧美日韩在线不卡| av免费在线观| 亚洲另类黄色| 精品视频色一区| 99re资源| 成人午夜福利一区二区| 久热中文字幕在线精品首页| 电影在线观看一区| 免费视频一区二区| 日韩一区二区在线免费观看| 国产日本一区二区三区| 五月天精品视频| 性猛交富婆╳xxx乱大交一| 精品国产第一福利网站| 韩国av一区二区三区四区| 精品盗摄一区二区三区| 日本视频精品一区| 国产一二三四区| gogo人体高清视频| xxx免费观看| 亚洲电影有码| 成人动漫一区二区三区| 中日韩午夜理伦电影免费| 国产一区 在线播放| 无码人妻精品一区二区50| 黄动漫在线观看| 久久国产精品成人免费观看的软件| 一区二区三区中文字幕在线观看| 欧美一区二区三区艳史| 人妻精品久久久久中文字幕69| 日本久久网站| av成人在线看| 国产亚洲人成网站| 26uuu另类亚洲欧美日本一| 国产精品19p| 91香蕉视频在线观看| 狂野欧美xxxx韩国少妇| 国产精品网站在线观看| 国产a级全部精品| 爱爱免费小视频| japanesexxxxfree在线观看| 日韩高清电影免费| 精品美女国产在线| 久久国产精品精品国产色婷婷| 久久精品性爱视频| 91美女视频在线| 美女视频网站久久| 日韩中文字幕国产| 爽爽爽在线观看| 最新一本之道波多野结衣| 美女一区二区在线观看| 五月综合激情网| 精品无码久久久久国产| 国产成人一区二区三区影院在线| 男人av在线| 久久激五月天综合精品| 色播久久人人爽人人爽人人片视av| 国产精品视频分类| www.91popny.com| 国产精品一区二区三区av麻| 欧美三级电影一区| 黄色片免费在线观看视频| 人人妻人人玩人人澡人人爽| 久久亚洲精品人成综合网| 亚洲美女区一区| 精品一区国产| 在线播放一级片| 性xxxxfreexxxxx欧美丶| 国产一区二区女| 欧美中文字幕在线| 久久视频精品在线观看| 成人亚洲一区二区三区| 亚洲乱码电影| 日韩久久精品成人| 超碰在线97免费| 你懂的视频网| 极品少妇一区二区三区| 亚洲伦理中文字幕| 亚洲免费999| 91麻豆精品国产91久久| 欧美日韩性在线观看| 欧美欧美午夜aⅴ在线观看| 少妇一晚三次一区二区三区| 中文字幕42页丝袜| 欧美重口另类| 日韩欧美一区在线| 无码aⅴ精品一区二区三区浪潮 | 丰满的护士2在线观看高清| 福利一区福利二区| 国产精品国内视频| a级片在线观看免费| 欧美v国产在线一区二区三区| 亚洲熟妇av一区二区三区漫画| 青青草av专区| 日韩超碰人人爽人人做人人添| 欧美一卡二卡三卡四卡| 国产不卡一区二区视频| 91看片免费| 欧美精品麻豆| 精品国产一区二区三区久久久狼| 免费黄色三级网站| 香蕉视频在线免费| 国产一区二区在线观看视频| 国产精品999999| 中文字幕第28页| 国产在线观看www| 亚洲国产aⅴ天堂久久| 日本一区视频在线观看免费| 国产又粗又猛又爽又黄91| 国产一区 二区| 欧美视频日韩视频在线观看| 国产又大又黄又猛| 激情四房婷婷| 狠狠色狠狠色综合日日91app| 成人网页在线免费观看| 在线观看免费高清视频| 成人偷拍自拍| 日韩欧美在线网站| 女人扒开腿免费视频app| 最近中文字幕mv第三季歌词| 国产美女娇喘av呻吟久久| 99热99热| 蜜桃av噜噜一区二区三区麻豆| caoporn成人| 日韩电视剧免费观看网站| 女同毛片一区二区三区| 男人影院在线观看| 久久久久久电影| 亚洲日本无吗高清不卡| 久久日.com| 野花国产精品入口| 欧美最顶级的aⅴ艳星| 懂色av蜜臀av粉嫩av喷吹| 国模大尺度视频一区二区| 日韩精品一区二区在线观看| 无码成人精品区在线观看| 操你啦视频在线| 亚洲成人av中文| 亚洲污视频在线观看| 天堂影院在线| 中文字幕 久热精品 视频在线| av电影一区二区三区| av男人的天堂网| 91在线视频网址| 国产精品8888| 黄色高清在线观看| 中文字幕一区二区三区四区不卡| 日韩少妇内射免费播放18禁裸乳| 亚洲美女欧洲| 亚洲国产aⅴ成人精品无吗| 我要看一级黄色大片| 精品视频二区| 狠狠躁夜夜躁久久躁别揉| 人妻体体内射精一区二区| 日本aa在线| 日韩午夜激情电影| 夫妻性生活毛片| 1769国产精品视频| 久久伊人精品一区二区三区| 中文字幕在线视频第一页| 成久久久网站| 国产欧美一区二区三区视频| 青春娱乐分类视频精品2动漫| 日本伊人色综合网| 亚洲一区二区在线免费观看| 成人xxx免费视频播放| 中文字幕二三区不卡| 免费在线观看毛片网站| 国产youjizz在线| 欧美日韩精品免费观看视频| 日韩黄色中文字幕| 盗摄系列偷拍视频精品tp| 国内久久久精品| 新婚的少妇hd中文字幕| 久久99日本精品| 51xx午夜影福利| 黄色片在线播放| 欧美高清你懂得| 久久中文字幕无码| 99tv成人| 你懂的视频在线一区二区| 免费h片在线观看| 懂色av影视一区二区三区| 在线观看日本中文字幕| 成人福利免费在线观看| 97久久超碰福利国产精品…| 男人天堂网av| 91视频免费观看| 久久黄色片网站| 另类中文字幕国产精品| 日韩有码在线播放| 色窝窝无码一区二区三区成人网站| 久久精品久久精品| 久久国产精品网| 2021中文字幕在线| 中文字幕亚洲天堂| 国产 欧美 自拍| 国产一区二区三区不卡在线观看| 日本中文字幕久久看| 国产伪娘ts一区| 国产精品不卡视频| 人妻体内射精一区二区| ass大特写| 亚洲国产精品久久久久婷婷884| 久久精品无码一区| 免费看成人哺乳视频网站| 97在线中文字幕| 宅男宅女性影片资源在线1| 精品视频一区 二区 三区| 毛片毛片女人毛片毛片| 久久综合网络一区二区| 黄色一级片在线看| 日韩理论视频| 91精品国产自产91精品|