亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nf2.c

?? usb開發資料源代碼分析 usb開發資料源代碼分析
?? C
?? 第 1 頁 / 共 3 頁
字號:

/*_____ E X T E R N  V A R I A B L E ___________________________________*/
extern data    Uint32	gl_ptr_mem;         /* memory data pointer */
extern data    Byte		EnglishPage;
extern bdata 	Byte		PlayStatusSign;
extern xdata 	Byte		sound_mode;
extern xdata 	Byte		light_mode;
extern xdata   Byte		PlayVolume;
extern pdata   Byte		gl_buffer[];
extern bdata 	bit		light_bit;
extern bdata 	bit		record_open_bit;
extern bdata	bit		NormalPlay;
extern xdata 	Uint16	nb_reserved_sector;
extern xdata	Byte		ReplayTime;
extern  Union_IDATA xdata UnionIDATA;
extern  Union_XDATA xdata UnionXDATA;
/*_____ EXTERN ADDRESS _________________________________________________*/

xdata Byte nf_send_cmd At(NF_CMD_LATCH_ENABLE_ADD); /* Command */
xdata Byte nf_send_add At(NF_ADD_LATCH_ENABLE_ADD); /* Address */
xdata Byte volatile nf_data At(NF_ADDRESS_CMD_DATA);/* Data    */

extern void 	nf_read_init(Uint32 offset);
void store_read(void);
void store_write(void);
/*_____ V A R I A B L E ________________________________________________*/
bdata bit block_used;    /* When a block was used */
bdata bit nf_busy;
bdata	bit nf_64=1;

data  Uint32 current_physical_sector_addr;
data  Uint32 address;
data  Uint16 look_up_table_block;                   /* Look up table block address  */
data  Byte 	 index_block_erased = 0;              /* give the number of block to be erased      */
xdata Byte   store_ptr;

idata Uint32 address_look_up_table;
idata Uint16 gl_cpt_page;
idata Byte   index_reassign;                  /* give the number of block to be reassigned  */
idata Byte   nf_zone_max;                     /* max zone number (from 1 to 8)              */
idata Byte 	 nf_device_type;                  /* Give the size of device in Mbytes          */ 
idata Byte 	 index_look_up_table;             /* Index of free block for LUT                */
idata Uint16 redundant_logical_block_value; /* Logical block value in the redundant area  */

idata Uint16 block_to_be_erased[NF_FREE_BLOCK_SIZE];/* Block address to be erased   */
idata Byte index_block_used[NF_FREE_BLOCK_SIZE];    /* Index of new assigned block */
xdata Byte nf_spare_block_number[NF_ZONE_MAX];      /* Number of free spare block in each zone */
xdata Uint32 nf_disk_size;            /* Size of the disk in sector - 1  */ 
xdata Byte index_free_block[NF_ZONE_MAX];   /* index in the LUT for free block for data   */

/* reassign_block : conversion logical block/physical block   */
/* it's used to update the look up table                      */
xdata t_reassign_block  reassign_block[NF_FREE_BLOCK_SIZE];
/*_____ D E F I N I T I O N ____________________________________________*/

/*_____ C O D E ________________________________________________________*/
/* Card Identification System definition */
code Byte nf_cis_table[]=
  {
  0x01, 0x03, 0xD9, 0x01, 0xFF, 0x18, 0x02, 0xDF, 0x01, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x21,
  0x02, 0x04, 0x01, 0x22, 0x02, 0x01, 0x01, 0x22, 0x03, 0x02, 0x04, 0x07, 0x1A, 0x05, 0x01, 0x03, 
  0x00, 0x02, 0x0F, 0x1B, 0x08, 0xC0, 0xC0, 0xA1, 0x01, 0x55, 0x08, 0x00, 0x20, 0x1B, 0x0A, 0xC1, 
  0x41, 0x99, 0x01, 0x55, 0x64, 0xF0, 0xFF, 0xFF, 0x20, 0x1B, 0x0C, 0x82, 0x41, 0x18, 0xEA, 0x61, 
  0xF0, 0x01, 0x07, 0xF6, 0x03, 0x01, 0xEE, 0x1B, 0x0C, 0x83, 0x41, 0x18, 0xEA, 0x61, 0x70, 0x01, 
  0x07, 0x76, 0x03, 0x01, 0xEE, 0x15, 0x14, 0x05, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
  0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x30, 0x2E, 0x30, 0x00, 0xFF, 0x14, 0x00, 0xFF, 0x00, 0x00

  };


extern bdata bit Nf_WP;
/*_____ D E C L A R A T I O N ______________________________________________*/
 

/*F**************************************************************************
* NAME:     read_spare_byte
----------------------------------------------------------------------------
* PURPOSE:  read spare data byte and construct the look up table.

*****************************************************************************/
Uint16 read_spare_byte_sub(Byte mode,Byte nf_zone,Uint16 start,Uint16 free_bloc_pos);

void read_spare_byte(void)
{
  Uint16 free_bloc_pos,start,block;
  Uint16 i,j;
  Byte   dummy,nf_zone;
//  idata Uint32 address2; /* LUT table address */
//  idata Uint32 address3; /* Used to determine free physical block */
  bit    bad_block;
  xdata Uint16 last_physical_used_block[NF_ZONE_MAX]; /* Last physical block used     */


  Nf_CS_ON();
  /***************************************************/
  /* Search bad block                                */
  /***************************************************/
	address = 0x8000;            /* Start from sector 0 */
	Nf_wait_busy();
	for (j = NF_BLOCK_PER_ZONE; j != 0; j--) /* Only zone 0 */
	{
		nf_send_rc_cmd();
		if ( Nf_rd_byte() == 0xFF )				/* Not a bad block */
		{
			if ( Nf_rd_byte() == 0xE8)				/* Look up table? */
			{
				nf_block_erase(address);
			}
		}
		address += 32;
	}

  address = 0;            /* Start from sector 0 */
  Nf_wait_busy();
  for (i = 0; i < nf_zone_max; i++)
  {
    nf_spare_block_number[i] = 0;
    for (j = NF_BLOCK_PER_ZONE; j != 0; j--)
    {
		nf_send_rc_cmd();
      if ( Nf_rd_byte() != 0xFF )                 /* 0xFF = valid block */
        nf_spare_block_number[i]++;
      else
      {
        dummy = Nf_rd_byte();
			if (  (dummy == 0x00) || ( (dummy != 0xFF) && ( (dummy & 0xF8) != 0x10 )) )	// Value in redundant spare area not correct 
			{
				nf_spare_block_number[i]++;
				if(i == 1)
				{
					gl_buffer[nf_spare_block_number[1]-1] = dummy;
				}
			}
      }
      address += 32;
    }
  }

	for (i = 0; i < nf_zone_max; i++)
	{
		nf_spare_block_number[i] = (32 - nf_spare_block_number[i]) << 1;
	}

  /***************************************************/
  /* Search a look-up table and erase it             */
  /***************************************************/
  address = 0;
  Nf_wait_busy();
  for (j = NF_BLOCK_PER_ZONE; j != 0; j--) /* Only zone 0 */
  {
	nf_send_rc_cmd();
    if ( Nf_rd_byte() == 0xFF )				/* Not a bad block */
    {
      if ( Nf_rd_byte() == 0xE8)				/* Look up table? */
      {
        nf_block_erase(address);
      }
    }
    address += 32;
  }
  /***************************************************/
  /* Find the last physical block used for each zone */
  /***************************************************/
  for (nf_zone = 0; nf_zone < nf_zone_max; nf_zone++)
  {
    last_physical_used_block[nf_zone] = (Uint16)(nf_zone) << 10;
    address = (Uint32)(nf_zone) << 15;
    Nf_wait_busy();   
    for (j = NF_BLOCK_PER_ZONE; j != 0; j--)
    {
		nf_send_rc_cmd();
      if ( Nf_rd_byte() == 0xFF)                  /* Not a bad block            */
      {
        dummy = Nf_rd_byte();
        if ( ((dummy & 0xF8) == 0x10) && (dummy != 0x00) )       /* Used block                 */
        {
          last_physical_used_block[nf_zone] = address >> 5;
        }
      }
      address += 32;
    }
  }

  
  /***************************************************/
  /*          Find free physical block for LUT       */
  /***************************************************/
  address = 0;
  do
  {
    bad_block = FALSE;
    /* Send READ C Area command */

	nf_send_rc_cmd();

    if (Nf_rd_byte() == 0xFF)                   /* Not a bad block            */
      dummy = Nf_rd_byte();
    else
      bad_block = TRUE;
    address += 32;
  }
  while ( (dummy != 0xFF) || (dummy == 0x00) || (bad_block) );

  address -= 32;
  /* Updata look up table address */
  look_up_table_block = address >> 5;
  address_look_up_table = address;

  /*********************************************************/
  /* Create the look-up table                              */
  /* ***************************************************** */
  for (nf_zone = 0; nf_zone < nf_zone_max; nf_zone++)           /* for each zone */
  {
    start = 0;                                /* initialize the logical block value */
    free_bloc_pos = last_physical_used_block[nf_zone];
    do
    {
	  free_bloc_pos = read_spare_byte_sub(MODE_CMDA,nf_zone,start,free_bloc_pos);
      start += 128;                           /* process next 128 logical block */
	  free_bloc_pos = read_spare_byte_sub(MODE_CMDB,nf_zone,start,free_bloc_pos);
      start += 128;  
      address++;
    }
    while (start < NF_BLOCK_PER_ZONE);
  }
  /***************************************************/
  /*                Recopy the LUT                   */
  /***************************************************/
  index_look_up_table = 20;
  index_free_block[0] = 0;

  address = address_look_up_table + 3;

  Nf_wait_busy();

  Nf_send_command(NF_READ_B_AREA_CMD);       
  Nf_send_address(0x00);
  Nf_send_address ( ((Byte*)&address)[3] );   
  Nf_send_address ( ((Byte*)&address)[2] );   
  if (nf_64)                                  
    Nf_send_address ( ((Byte*)&address)[1] ); 
  Nf_wait_busy();

  nf_upload_buffer();
  
  block = (gl_buffer[192] << 8) + gl_buffer[193];

  block = block & 0x7FFF;

  if (block != look_up_table_block)
  {
    address = (Uint32)(block) << 5;
    for (j = 32; j != 0; j--)
    {
      Nf_wait_busy();

      Nf_send_command(NF_READ_A_AREA_CMD);
      Nf_send_address(0x00);
      Nf_send_address ( ((Byte*)&address_look_up_table)[3] );   
      Nf_send_address ( ((Byte*)&address_look_up_table)[2] );   
      if (nf_64)                                                
        Nf_send_address ( ((Byte*)&address_look_up_table)[1] ); 
      Nf_wait_busy();
      nf_upload_buffer();

	  nf_send_w_cmd(MODE_CMDA,0);

      nf_download_buffer();
  
      Nf_send_command(NF_PAGE_PROGRAM_CMD);
      Nf_wait_busy();

      Nf_send_command(NF_READ_B_AREA_CMD);
      Nf_send_address(0x00);
      Nf_send_address ( ((Byte*)&address_look_up_table)[3] );  
      Nf_send_address ( ((Byte*)&address_look_up_table)[2] );  
      if (nf_64)        
        Nf_send_address ( ((Byte*)&address_look_up_table)[1] );
      Nf_wait_busy();

      nf_upload_buffer();

	  nf_send_w_cmd(MODE_CMDB,0);
      nf_download_buffer();
  
      /* Write redundant data */
      Nf_wr_byte(0xFF); Nf_wr_byte(0xFF); Nf_wr_byte(0xFF);
      Nf_wr_byte(0xFF); Nf_wr_byte(0xFF);
      Nf_wr_byte(0xFF);
      Nf_wr_byte(0xE8); Nf_wr_byte(0xFF);                   /* Logical block value */
      Nf_wr_byte(0xFF); Nf_wr_byte(0xFF); Nf_wr_byte(0xFF); /* ECC area 2 */
      Nf_wr_byte(0xE8); Nf_wr_byte(0xFF);                   /* Logical block value */
      Nf_wr_byte(0xFF); Nf_wr_byte(0xFF); Nf_wr_byte(0xFF); /* ECC area 1 */
  
      Nf_send_command(NF_PAGE_PROGRAM_CMD);
      address++;
      address_look_up_table++;
    }
  
    /* Erase old LUT */
    nf_block_erase(address_look_up_table - 1);
    /* New address of LUT */
    look_up_table_block = block;
    address_look_up_table = (Uint32)(block) << 5;
  }
  Nf_CS_OFF();

}
//------------------------
Uint16 read_spare_byte_sub(Byte mode,Byte nf_zone,Uint16 start,  Uint16 free_bloc_pos)
{
data	Uint16 block;
idata Uint32 address2; 
idata Uint32 address3; 
data	Uint16 i,j;
data	Byte   dummy;
bdata	bit    bad_block;

	nf_init_buffer();                       /* Reinitialize the buffer  */
	address2 = (Uint32)(nf_zone) << 15;     /* Block address            */
	Nf_wait_busy();
  
	for (j = NF_BLOCK_PER_ZONE; j != 0 ; j--)            /* for each block */
	{ // Read Spare data value 
		Nf_send_command (NF_READ_C_AREA_CMD);
		Nf_send_address ( 0x05 );
		Nf_send_address ( ((Byte*)&address2)[3] );  
		Nf_send_address ( ((Byte*)&address2)[2] );  
		if (nf_64)                                  
		{
			Nf_send_address ( ((Byte*)&address2)[1] );
		}
		Nf_wait_busy();

		// Calculate the logical/physical conversion 
		if (Nf_rd_byte() == 0xFF)                   // Not a bad block 
		{
			// Read the value of logical block 
			((Byte*)&block)[0] = Nf_rd_byte();
			((Byte*)&block)[1] = Nf_rd_byte();
          // Don't take bad block or unused block 
			if ((block != 0xFFFF) && (block != 0x0000))
			{
				// Calculate the logical block value 
            block = (block & 0x0FFF) >> 1;
            // If the value is in the range, then save it 
            if ( (block < start + 128) && (block >= start))
            {
					gl_buffer[2 * block] = (address2 >> 5) >> 8;
					gl_buffer[2 * block + 1] = address2 >> 5;
				}
			}
		}
		address2 += 32; // increase address 
	}
      
	address3 = (Uint32)(free_bloc_pos) << 5;
	for (i = 0; i < 256; i+=2)
	{
		if (gl_buffer[i] == 0xFF)
		{
			do   // Search free physical block 
			{
				bad_block = FALSE;
				address3 += 32;
				if (address3 >= ((Uint32)(nf_zone + 1) << 15) )
				{
					address3 = (Uint32)(nf_zone) << 15;
				}

				Nf_send_command(NF_READ_C_AREA_CMD);
				Nf_send_address(0x05);
				Nf_send_address ( ((Byte*)&address3)[3] );  
				Nf_send_address ( ((Byte*)&address3)[2] );  
				if (nf_64)
				{
					Nf_send_address ( ((Byte*)&address3)[1] );
				}
				Nf_wait_busy();

				if (Nf_rd_byte() == 0xFF)                   // Not a bad block ? 
				{
					dummy = Nf_rd_byte();
				}
				else
				{
					bad_block = TRUE;
				}
			}
			while ( (dummy != 0xFF) || (dummy == 0x00) || (bad_block) );
			free_bloc_pos = address3 >> 5;
			gl_buffer[i] = (free_bloc_pos >> 8) + 0x80;
			gl_buffer[i + 1] = free_bloc_pos;
		}
	}

	nf_send_w_cmd(mode,0);
	// Write 256 bytes from the buffer 
	nf_download_buffer();  
	// Valid the page programmation 
	Nf_send_command(NF_PAGE_PROGRAM_CMD);
	return free_bloc_pos;
}
//------------------------
void nf_send_rc_cmd()
{
	Nf_send_command (NF_READ_C_AREA_CMD);
    Nf_send_address ( 0x05 );
    Nf_send_address ( ((Byte*)&address)[3] );  /* 2nd address cycle         */
    Nf_send_address ( ((Byte*)&address)[2] );  /* 3rd address cycle         */
    if (nf_64)                                  /* Size of card >= 64Mbytes ?*/
      Nf_send_address ( ((Byte*)&address)[1] );/* 4th address cycle         */

    Nf_wait_busy();
}
//------------------------
void nf_send_ra_cmd()
{
	Nf_send_command (NF_READ_A_AREA_CMD);
	Nf_send_address ( 0x00 );              
	Nf_send_address ( ((Byte*)&current_physical_sector_addr)[3] ); 
	Nf_send_address ( ((Byte*)&current_physical_sector_addr)[2] ); 
	if (nf_64)
	{        
		Nf_send_address ( ((Byte*)&current_physical_sector_addr)[1] );
	}
}
//------------------------
void nf_send_w_cmd(Byte Mode,bit Par)
{
	Nf_wait_busy();
	if (Mode == MODE_CMDA)
	{
		Nf_send_command (NF_READ_A_AREA_CMD);
	}
	else
	{
		Nf_send_command (NF_READ_B_AREA_CMD);
	}
	Nf_send_command(NF_SEQUENTIAL_DATA_INPUT_CMD);
	Nf_send_address (0x00);

	if(!Par)
    {
	   	Nf_send_address ( ((Byte*)&address)[3] );   
   		Nf_send_address ( ((Byte*)&address)[2] );   
   		if (nf_64)                                  
      	Nf_send_address ( ((Byte*)&address)[1] );  
  	}
	else
    {
   		Nf_send_address ( ((Byte*)&current_physical_sector_addr)[3] );   
	   	Nf_send_address ( ((Byte*)&current_physical_sector_addr)[2] );   
   		if (nf_64)                                  
  		   Nf_send_address ( ((Byte*)&current_physical_sector_addr)[1] ); 
	}
}
/*F**************************************************************************
* NAME:     nf_init

*----------------------------------------------------------------------------
* PURPOSE:  NF initialisation

*****************************************************************************/
//bdata bit		nf_connect=1;
extern void	load_hex(Byte i ,Byte j, Byte buf);
extern void	lcd_deal(void);

void nf_init (void)
{
	Nf_CS_ON();
	/* Read ID code */
	Nf_send_command(NF_READ_ID_CMD);
	Nf_send_address(0x00);
	Nf_wait_busy();

	ACC = Nf_rd_byte();

//	if (0XEC == Nf_rd_byte())nf_connect=KO;

	switch (Nf_rd_byte())   /* Device code */
	{
		case 0x73 :                         /* 16 Mbyte  */
			nf_device_type = NF_SIZE_16MB;
			nf_zone_max = 1;
			nb_reserved_sector=1;
			nf_disk_size =  NF_SECTOR_SIZE_16MB;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲一区二区在线观看| 国产美女主播视频一区| 在线欧美日韩精品| 一区二区三区四区亚洲| 972aa.com艺术欧美| 国产精品不卡视频| 色94色欧美sute亚洲线路一久| 日韩美女视频一区二区 | 麻豆freexxxx性91精品| 91精品国产色综合久久不卡蜜臀 | 欧美片在线播放| 日本在线不卡视频一二三区| 日韩欧美色电影| 成人免费视频网站在线观看| 亚洲麻豆国产自偷在线| 91欧美一区二区| 日本vs亚洲vs韩国一区三区| 精品国产污网站| av激情成人网| 日本午夜精品视频在线观看| 国产亚洲一区二区三区四区| 一本色道久久综合亚洲91| 午夜欧美电影在线观看| 久久精品亚洲乱码伦伦中文| 色综合av在线| 国内成+人亚洲+欧美+综合在线| 久久久精品黄色| 欧美性做爰猛烈叫床潮| 国产中文字幕精品| 亚洲黄一区二区三区| 日韩一区二区三区四区五区六区| 波多野结衣亚洲一区| 男人的j进女人的j一区| 日韩伦理电影网| 久久久不卡影院| 91精品国产一区二区三区香蕉| 成人黄色综合网站| 日韩国产一区二| 国产精品亲子乱子伦xxxx裸| 欧美一区二区三区免费视频| 99久久久免费精品国产一区二区| 青青草伊人久久| 一区二区三区四区高清精品免费观看 | 国产午夜精品美女毛片视频| 欧美系列日韩一区| jlzzjlzz亚洲女人18| 九九精品视频在线看| 婷婷丁香久久五月婷婷| 中文字幕在线不卡一区 | 中文字幕 久热精品 视频在线| 欧美夫妻性生活| 99久久99久久免费精品蜜臀| 激情综合五月婷婷| 日韩福利视频导航| 亚洲成人免费影院| 亚洲午夜一区二区三区| 亚洲欧洲日韩在线| 国产精品污网站| 久久久久久久网| 精品国产乱码久久久久久久久| 欧美精品黑人性xxxx| 在线观看不卡一区| 色狠狠一区二区三区香蕉| 成人午夜短视频| 高清日韩电视剧大全免费| 国产在线看一区| 精品一区二区影视| 日本成人中文字幕| 青青青伊人色综合久久| 天天操天天干天天综合网| 亚洲综合激情另类小说区| 亚洲女厕所小便bbb| 亚洲欧洲99久久| 亚洲欧美综合在线精品| 日韩久久一区二区| 亚洲精品v日韩精品| 日韩美女精品在线| 一区二区三区免费看视频| 亚洲人精品午夜| 一区二区三区四区亚洲| 一个色综合网站| 午夜精品久久久久久不卡8050| 亚洲一区在线观看免费观看电影高清| 成人免费在线播放视频| 国产精品久久久99| 樱桃国产成人精品视频| 亚洲韩国精品一区| 青娱乐精品视频在线| 久久91精品国产91久久小草| 国产九九视频一区二区三区| 成人小视频在线观看| 波多野结衣的一区二区三区| 色综合视频在线观看| 欧美日产国产精品| 欧美成人一区二区三区片免费 | 亚洲风情在线资源站| 日本美女视频一区二区| 国产在线精品免费| 99久久综合精品| 精品视频一区三区九区| 日韩一区二区免费在线观看| 久久久久久久久伊人| 国产精品久久久久三级| 亚洲成av人片在www色猫咪| 免费成人在线观看| 成人精品国产免费网站| 欧美日韩一区在线观看| 精品国产免费人成电影在线观看四季| 国产精品你懂的| 日韩电影在线看| 成人短视频下载| 91精品在线观看入口| 国产欧美一区二区三区沐欲| 亚洲精品伦理在线| 精品一区二区久久久| 91香蕉视频黄| 日韩午夜在线观看| 亚洲视频狠狠干| 理论电影国产精品| 在线欧美日韩国产| 国产清纯美女被跳蛋高潮一区二区久久w| 日韩美女精品在线| 国模少妇一区二区三区| 在线观看日产精品| 日本一区二区三区在线观看| 亚洲电影第三页| www.av亚洲| 久久你懂得1024| 亚洲成a天堂v人片| 成人h动漫精品一区二区| 日韩一级成人av| 夜夜爽夜夜爽精品视频| 粉嫩13p一区二区三区| 日韩写真欧美这视频| 亚洲少妇中出一区| 国产成人免费视频一区| 日韩三级在线免费观看| 一区2区3区在线看| 97精品视频在线观看自产线路二| 日韩欧美一区二区视频| 亚洲老司机在线| 成人免费av在线| 久久久综合九色合综国产精品| 视频一区二区三区在线| 在线看日本不卡| 亚洲色图欧美偷拍| 懂色av噜噜一区二区三区av| 欧美一区二区三区喷汁尤物| 亚洲影院理伦片| 在线精品观看国产| 亚洲人成网站影音先锋播放| 国产成人小视频| 久久久影院官网| 国产一区二区三区在线观看免费视频| 欧美一区二区三区视频免费| 亚洲国产成人高清精品| 91久久精品一区二区二区| 亚洲欧美在线视频观看| 成人爱爱电影网址| 国产精品成人免费| 99v久久综合狠狠综合久久| 国产女人水真多18毛片18精品视频 | 一区二区欧美国产| 91九色最新地址| 亚洲尤物视频在线| 欧美日韩五月天| 日韩精品亚洲专区| 7777精品伊人久久久大香线蕉超级流畅 | 色婷婷久久99综合精品jk白丝| 中文字幕在线观看不卡| 成人伦理片在线| 18成人在线视频| 色呦呦日韩精品| 五月婷婷欧美视频| 欧美一区二区免费视频| 麻豆国产精品视频| 国产亚洲精品aa午夜观看| 国产一区二区伦理片| 欧美激情艳妇裸体舞| 99久久免费视频.com| 一区二区国产视频| 91精品国产91久久久久久一区二区 | 日韩电影在线观看一区| 精品免费日韩av| 成人av网在线| 亚洲一区二区免费视频| 欧美一级欧美三级| 国产成人鲁色资源国产91色综| 中文字幕中文字幕一区| 欧美色图一区二区三区| 爽好久久久欧美精品| 欧美不卡激情三级在线观看| 国产毛片一区二区| 日韩毛片高清在线播放| 欧美美女喷水视频| 国产一区二区不卡| 一区二区日韩av| 久久日韩粉嫩一区二区三区| 99精品欧美一区二区三区小说| 亚洲尤物在线视频观看|