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

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

?? spidrv.c.bak

?? 大容量Flash存儲器W25X16,W25X32,W25X64讀寫擦除程序
?? BAK
字號:
/****************************************************************************/
/*     深圳恒森微電子有限公司  (華邦單片機香港及中國區代理商)		        */
/*     香港恒森科技有限公司    (華邦單片機香港及中國區代理商)		        */
/*     陳文    email:chenwen@hengsen.cn (有 bug 請提交)                   */
/****************************************************************************/
/*  文件名:	spidrv.c														*/
/*	版本					1.0												*/
/*  創建日期:				2007-10-29 10:58								*/
/*  概述:	本文件為 w79e823   讀寫 SPI flash程序							*/
/*--------------------------------------------------------------------------*/
/*  歷史修改記錄:															*/
/*  名字                   日期                   注釋						*/
/*  陳文                   2007.10.28           ver 1.0						*/
/****************************************************************************/
#include <w79e825.h>
#include <intrins.h>
#define uint8 unsigned char
#define uint16 unsigned int
#define uchar unsigned char
#define uint unsigned int
#define uint32 unsigned long

sbit _cs= P1^2;
sbit _do= P1^3;
sbit _wp= P1^4;
//sbit _hold= P1^5;
sbit _clk= P1^6;
sbit _di= P1^7;

#define W25P_WriteEnable	0x06
#define W25P_WriteDisable	0x04
#define W25P_ReadStatusReg	0x05
#define W25P_WriteStatusReg	0x01
#define W25P_ReadData		0x03
#define W25P_FastReadData	0x0B
#define W25P_PageProgram	0x02
#define W25P_SectorErase	0xD8	// 64KB
#define W25P_ChipErase		0xC7
#define W25P_PowerDown		0xB9
#define W25P_ReleasePowerDown	0xAB
#define W25P_DeviceID		0xAB
#define W25P_ManufactDeviceID	0x90
	
void init_cpu(void);
void IO_Send_Byte(uchar out);
uchar IO_Get_Byte();
void delay(uchar tt);
void IO_Wait_Busy();
void IO_init();
uchar IO_Read_StatusReg();
void IO_Write_StatusReg(byte);
void IO_Write_Enable();
void IO_PowerDown();
void IO_ReleasePowerDown();
uchar IO_Read_ID1();
uint IO_Read_ID2(uchar ID_Addr);
uchar IO_Read_Byte(uint32 Dst_Addr);
void IO_Read_nBytes(uint32 Dst_Addr, uchar nBytes_128);
uchar IO_FastRead_Byte(uint32 Dst_Addr);
void IO_FastRead_nBytes(uint32 Dst_Addr, uchar nBytes_128);
void IO_Write_Byte(uint32 Dst_Addr, uchar byte);
void IO_Write_nBytes(uint32 Dst_Addr, uchar nBytes_128);
void IO_Erase_Chip();
void IO_Erase_Sector(uint32 Dst_Addr);
void Verify(uchar byte, uchar cor_byte);
void IO_Write_Disable();
void trace(uchar *str,uchar len);
uint IO_Read_ID3();
void test_page(uchar addr);
void read_page(uchar addr);

uint8 Rxtemp;
bit MYTI;
uint8 tx_buff[16];
uint8 upper_128[16];
bit rx_ok;
#define nop() _nop_()

void delay_nms(uchar i)
{
	uchar  j;
	i=i*2;
	for(;i>0;i--)
	{
	   j = 246;
		while(--j);
	}
}

void main(void)
{	
	uint i;
	
	init_cpu();	
	IO_init();
	for(;;)
	{			
		if(rx_ok == 1)
		{
			rx_ok = 0;
			switch(Rxtemp)
			{
				case 0x01:
					Rxtemp = 0;
					tx_buff[0] = IO_Read_ID1();
					trace(tx_buff,1);
					break;
				case 0x02:
				i = IO_Read_ID2(0x00);
				tx_buff[1] = (uchar)i;
				tx_buff[0] = (uchar)(i>>8);
				trace(tx_buff,2);
				
				break;
				case 0x03:
				i = IO_Read_ID3();
				tx_buff[1] = (uchar)i;
				tx_buff[0] = (uchar)(i>>8);
				trace(tx_buff,3);
				break;
				case 0x04:
				tx_buff[0] = IO_Read_Byte(0x00000000);
				trace(tx_buff,1);
				break;
				case 0x05:
				tx_buff[0] = 0x55;
				IO_Write_Byte(0x00000000,0xa5);
				trace(tx_buff,1);
				break;
				case 0x06:
				tx_buff[0] = IO_Read_StatusReg();
				trace(tx_buff,1);
				break;
				case 0x07:
				IO_Write_Enable();	
				break;
				case 0x08:
				upper_128[0]=0x01;upper_128[1]=0x02;upper_128[2]=0x03;upper_128[3]=0x04;
				IO_Write_nBytes(0x00000000,4);
				
				break;
				case 0x09:
				IO_Erase_Chip();
				break;
				case 0x0a:
				IO_Erase_Sector(0x000ff000);
				while(1)
				{
					tx_buff[0] = IO_Read_StatusReg();
					trace(tx_buff,1);
					if(tx_buff[0] == 0)
						break;
				}
				break;
				case 0x0b:
				test_page(0x00);
				break;
				case 0x0c:
				read_page(0x00);
				break;
				default:
				break;
			}
			
		}		
			
	}
}

void init_cpu(void)
{		
	TMOD = 0x21;			
	PCON = PCON | 0x80;		//波特率加倍
	//CKCON = 0x10;           //定時器1采用4分頻
	SCON  = 0x50;			//異步、10位、波特率可變,無校驗位
//	TH1   = 0xf8;            //在15M晶振下,波特率是9600,
//    TL1   = 0xf8;			
	TH1   = 0xfd;            //在11M晶振下,波特率是9600,
    TL1   = 0xfd;			
    TR1   = 1;  			//T1 timer run
    ES    = 1;				//uart interrupt enable	
	EA = 1;					//all interrupt enable
	
}


//串口中斷程序
void UART_isr(void) interrupt 4
{ 
	if(RI)
    {
        RI = 0;
        Rxtemp = SBUF;   //接收
        //SBUF = Rxtemp; 	 //發送
        rx_ok = 1;
		return;
	}
	if(TI)
	{
		TI = 0;
		MYTI = 1;		
 	}
}

void IO_Send_Byte(uchar out)
{
	uchar i = 0;	
	_cs = 0;
	for (i = 0; i < 8; i++)
	{
		if ((out & 0x80) == 0x80)	/* check if MSB is high */
			_di = 1;
		else
			_di = 0;		/* if not, set to low */
		_clk = 1;			/* toggle clock high */
		out = (out << 1);		/* shift 1 place for next bit */
		nop();nop();nop();nop();
		_clk = 0;			/* toggle clock low */
	}
}

uchar IO_Get_Byte()
{
	uchar i = 0, in = 0, temp = 0;	
	_cs = 0;
	for (i = 0; i < 8; i++)
	{
		in = (in << 1);		/* shift 1 place to the left or shift in 0 */
		temp = _do;		/* save input */
		_clk = 1;		/* toggle clock high */
		if (temp == 1)		/* check to see if bit is high */
			in |= 0x01;	/* if high, make bit high */
		_clk = 0;		/* toggle clock low */
	}	
	return in;
}

void delay(uchar tt)
{
	while(tt--);
}

void IO_Wait_Busy()
{
/* 	waste time until not busy WEL & Busy bit all be 1 (0x03).	*/
	while (IO_Read_StatusReg() == 0x03)
		IO_Read_StatusReg();
}

void IO_init()
{
	_clk = 0;	/* set clock to low initial state for SPI operation mode 0 */
//	_clk = 1;	/* set clock to low initial state for SPI operation mode 3 */
//	_hold = 1;
	_wp = 1;
	_cs = 1;
	
	IO_Write_Disable();
	
}

uchar IO_Read_StatusReg()
{
	uchar byte = 0;
	_cs = 0;			/* enable device */
	IO_Send_Byte(W25P_ReadStatusReg);	/* send Read Status Register command */
	byte = IO_Get_Byte();			/* receive byte */
	_cs = 1;				/* disable device */
	
	return byte;
}

void IO_Write_StatusReg(byte)
{
	_cs = 0;				/* enable device */
	IO_Send_Byte(W25P_WriteStatusReg);	/* select write to status register */
	IO_Send_Byte(byte);	/* data that will change the status(only bits 2,3,7 can be written) */
	_cs = 1;				/* disable the device */
}

void IO_Write_Enable()
{
	_cs = 0;			/* enable device */
	IO_Send_Byte(W25P_WriteEnable);	/* send W25P_Write_Enable command */
	_cs = 1;			/* disable device */
}

void IO_PowerDown()
{
	_cs = 0;;				/* enable device */
	IO_Send_Byte(W25P_PowerDown);		/* send W25P_PowerDown command 0xB9 */
	_cs = 1;;				/* disable device */
	delay(6);				/* remain CS high for tPD = 3uS */
}

void IO_ReleasePowerDown()
{
	_cs = 0;			/* enable device */
	IO_Send_Byte(W25P_ReleasePowerDown);	/* send W25P_PowerDown command 0xAB */
	_cs = 1;				/* disable device */
	delay(6);				/* remain CS high for tRES1 = 3uS */
}

uchar IO_Read_ID1()
{
	uchar byte;
	_cs = 0;		/* enable device */
	IO_Send_Byte(W25P_DeviceID);	/* send read device ID command (ABh) */
    IO_Send_Byte(0);		/* send address */
	IO_Send_Byte(0);		/* send address */
	IO_Send_Byte(0);		/* send 3_Dummy address */
	byte = IO_Get_Byte();		/* receive Device ID byte */
	
	_cs  = 1;			/* disable device */
	delay(4);			/* remain CS high for tRES2 = 1.8uS */

	return byte;
}

uint IO_Read_ID2(uchar ID_Addr)
{
	uint IData16;
	_cs = 0;			/* enable device */
	IO_Send_Byte(W25P_ManufactDeviceID);	/* send read ID command (90h) */
    IO_Send_Byte(0x00);			/* send address */
	IO_Send_Byte(0x00);			/* send address */
	IO_Send_Byte(ID_Addr);			/* send W25Pxx selectable ID address 00H or 01H */
	IData16 = IO_Get_Byte()<<8;		/* receive Manufature or Device ID byte */
	IData16 |= IO_Get_Byte();		/* receive Device or Manufacture ID byte */
	_cs = 1;				/* disable device */
	
	return IData16;
}

uint IO_Read_ID3()
{
	uint IData16;
	_cs = 0;			/* enable device */
	IO_Send_Byte(0x9f);	/* send read ID command (90h) */
    
	IData16 = IO_Get_Byte()<<8;		/* receive Manufature or Device ID byte */
	IData16 |= IO_Get_Byte();		/* receive Device or Manufacture ID byte */
	tx_buff[2] = IO_Get_Byte();	
	_cs = 1;				/* disable device */
	
	return IData16;
}

uchar IO_Read_Byte(uint32 Dst_Addr) 
{
	uchar byte = 0;	

	_cs = 0;					/* enable device */
	IO_Send_Byte(W25P_ReadData); 			/* read command */
	IO_Send_Byte((uchar)((Dst_Addr & 0xFFFFFF) >> 16));	/* send 3 address bytes */
	IO_Send_Byte((uchar)((Dst_Addr & 0xFFFF) >> 8));
	IO_Send_Byte((uchar)(Dst_Addr & 0xFF));
	byte = IO_Get_Byte();
	_cs = 1;			/* disable device */
	
	return byte;			/* return one byte read */
}

void IO_Read_nBytes(uint32 Dst_Addr, uchar nBytes_128)
{
	uint32 i = 0;
	
	_cs = 0;					/* enable device */
	IO_Send_Byte(W25P_ReadData); 			/* read command */
	IO_Send_Byte(((Dst_Addr & 0xFFFFFF) >> 16)); 	/* send 3 address bytes */
	IO_Send_Byte(((Dst_Addr & 0xFFFF) >> 8));
	IO_Send_Byte(Dst_Addr & 0xFF);
	for (i = 0; i < nBytes_128; i++)		/* read until no_bytes is reached */
	{
		upper_128[i] = IO_Get_Byte();	/* receive byte and store at address 80H - FFH */
	}
	
	_cs = 1;				/* disable device */
	
}

uchar IO_FastRead_Byte(uint32 Dst_Addr) 
{
	uchar byte = 0;	

	_cs = 0;					/* enable device */
	IO_Send_Byte(W25P_FastReadData); 		/* fast read command */
	IO_Send_Byte(((Dst_Addr & 0xFFFFFF) >> 16));	/* send 3 address bytes */
	IO_Send_Byte(((Dst_Addr & 0xFFFF) >> 8));
	IO_Send_Byte(Dst_Addr & 0xFF);
	IO_Send_Byte(0xFF);		/*dummy byte*/
	byte = IO_Get_Byte();
	_cs = 1;			/* disable device */
	
	return byte;			/* return one byte read */
}

void IO_FastRead_nBytes(uint32 Dst_Addr, uchar nBytes_128)
{
	uchar i = 0;
	
	_cs = 0;					/* enable device */
	IO_Send_Byte(W25P_FastReadData); 		/* read command */
	IO_Send_Byte(((Dst_Addr & 0xFFFFFF) >> 16)); 	/* send 3 address bytes */
	IO_Send_Byte(((Dst_Addr & 0xFFFF) >> 8));
	IO_Send_Byte(Dst_Addr & 0xFF);
	IO_Send_Byte(0xFF);			/*dummy byte*/
	for (i = 0; i < nBytes_128; i++)	/* read until no_bytes is reached */
	{
		upper_128[i] = IO_Get_Byte();	/* receive byte and store at address 80H - FFH */
	}
	_cs = 1;				/* disable device */

}

void IO_Write_Byte(uint32 Dst_Addr, uchar byte)
{
	_cs = 0;					/* enable device */
	IO_Write_Enable();				/* set WEL */
	IO_Wait_Busy();
	
	_cs = 0;	
	IO_Send_Byte(W25P_PageProgram); 		/* send Byte Program command */
	IO_Send_Byte(((Dst_Addr & 0xFFFFFF) >> 16));	/* send 3 address bytes */
	IO_Send_Byte(((Dst_Addr & 0xFFFF) >> 8));
	IO_Send_Byte(Dst_Addr & 0xFF);
	IO_Send_Byte(byte);			/* send byte to be programmed */
	_cs = 1;				/* disable device */
}

void test_page(uchar addr)
{
	uint i; uchar byte;
	uint32 Dst_Addr;	
	_cs = 0;					/* enable device */
	IO_Write_Enable();				/* set WEL */
	_cs = 0;
	Dst_Addr = (uint32)addr*256;
	Dst_Addr = 0x0ff000;//(uint32)addr*256;
	IO_Send_Byte(W25P_PageProgram); 		/* send Byte Program command */
	IO_Send_Byte((uchar)((Dst_Addr & 0xFFFFFF) >> 16));	/* send 3 address bytes */
	IO_Send_Byte((uchar)((Dst_Addr & 0xFFFF) >> 8));
	IO_Send_Byte((uchar)(Dst_Addr & 0xFF));
	
	for (i = 0; i < 256; i++)
	{
		//byte = upper_128[i];
		IO_Send_Byte(i);		/* send byte to be programmed */
	}	
	_cs = 1;	
	
	delay_nms(5);
				while(1)
				{
					tx_buff[0] = IO_Read_StatusReg();
					trace(tx_buff,1);
					if(tx_buff[0] == 0)
						break;
				}
	Dst_Addr = 0x0ff000;
	for (i = 0; i < 256; i++)
	{
		byte = IO_Read_Byte(Dst_Addr+i);
		ES = 0;
		SBUF = byte;
		while (TI == 0);
		TI = 0;
		ES = 1;
	}
			
}

void read_page(uchar addr)
{
	uint i;
	uchar byte;
	uint32 Dst_Addr;
	Dst_Addr = addr*256;
	Dst_Addr = 0x0ff000;
	for (i = 0; i < 256; i++)
	{
		byte = IO_Read_Byte(Dst_Addr+i);
		ES = 0;
		SBUF = byte;
		while (TI == 0);
		TI = 0;
		ES = 1;
	}
}


void IO_Write_nBytes(uint32 Dst_Addr, uchar nBytes_128)
{	
	uchar i, byte;	
	_cs = 0;					/* enable device */
	IO_Write_Enable();				/* set WEL */
	_cs = 0;
	IO_Send_Byte(W25P_PageProgram); 		/* send Byte Program command */
	IO_Send_Byte(((Dst_Addr & 0xFFFFFF) >> 16));	/* send 3 address bytes */
	IO_Send_Byte(((Dst_Addr & 0xFFFF) >> 8));
	IO_Send_Byte(Dst_Addr & 0xFF);
	
	for (i = 0; i < nBytes_128; i++)
	{
		byte = upper_128[i];
		IO_Send_Byte(byte);		/* send byte to be programmed */
	}	
	_cs = 1;				/* disable device */
	
	//printf("\nPage program (%d nBytes)! please waiting....\n");
}

void IO_Erase_Chip()
{
	_cs = 0;				/* enable device */
	IO_Write_Enable();				/* set WEL */
	_cs = 0;
	IO_Wait_Busy();
	_cs = 0;
	IO_Send_Byte(W25P_ChipErase);		/* send Chip Erase command */
	_cs = 1;				/* disable device */
}

void IO_Erase_Sector(uint32 Dst_Addr)
{
	_cs = 0;					/* enable device */
	IO_Write_Enable();				/* set WEL */
	_cs = 0;
	IO_Send_Byte(W25P_SectorErase);			/* send Sector Erase command */
	IO_Send_Byte((uchar)((Dst_Addr & 0xFFFFFF) >> 16)); 	/* send 3 address bytes */
	IO_Send_Byte((uchar)((Dst_Addr & 0xFFFF) >> 8));
	IO_Send_Byte((uchar)Dst_Addr & 0xFF);
	_cs = 1;					/* disable device */
}

void Verify(uchar byte, uchar cor_byte)
{
	if (byte != cor_byte)
	{
		while(1);
			//LED_Error = 0; /* display to view error on LED. */			
	}
}

void IO_Write_Disable()
{
	_cs = 0;				/* enable device */
	IO_Send_Byte(W25P_WriteDisable);	/* send W25P_Write_Disable command */
	_cs = 1;				/* disable device */
}

void myputchar(uchar c)
{	
	ES = 0;
	SBUF = c;
	while (TI == 0);
	TI = 0;
	ES = 1;
}

void trace(uchar *str,uchar len)
{
	uint i;
	for(i=0;i<len;i++)
	{
		myputchar(*str);
		str++;
	}
}



//IO_Read_StatusReg		Reads the status register of the serial flash
//IO_Write_StatusReg		Performs a write to the status register
//IO_Write_Enable			Write enables the serial flash
//IO_Write_Disable		Write disables the serial flash
//IO_Read_ID1			Reads the device ID using the instruction 0xAB
//IO_Read_ID2			Reads the manufacturer ID and device ID with 0x90
//IO_Read_Byte			Reads one byte from the serial flash and returns byte(max of 20 MHz CLK frequency)
//IO_Read_nBytes			Reads multiple bytes(max of 20 MHz CLK frequency)
//IO_FastRead_Byte		Reads one byte from the serial flash and returns byte(max of 33 MHz CLK frequency)
//IO_FastRead_nBytes		Reads multiple bytes(max of 33 MHz CLK frequency)
//IO_Write_Byte			Program one byte to the serial flash
//IO_Write_nBytes			Program n bytes to the serial flash, n<=256
//IO_Erase_Chip			Erases entire serial flash
//IO_Erase_Sector			Erases one sector (64 KB) of the serial flash
//IO_Wait_Busy			Polls status register until busy bit is low

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产a久久久久久| 久久99精品久久久| 青青草国产精品亚洲专区无| 国产精品91xxx| 欧美日韩精品三区| 国产拍欧美日韩视频二区| 亚洲成人高清在线| 99国产精品久久久久| 精品国产91乱码一区二区三区| 亚洲欧美一区二区久久 | 亚洲综合在线免费观看| 美女视频网站黄色亚洲| 欧美午夜在线观看| 亚洲激情综合网| 波多野结衣中文一区| 精品毛片乱码1区2区3区| 午夜电影网一区| 色天使久久综合网天天| 欧美极品少妇xxxxⅹ高跟鞋| 久久99久久99精品免视看婷婷 | 乱中年女人伦av一区二区| 91极品美女在线| 亚洲欧美日韩国产手机在线 | 久久免费看少妇高潮| 日日骚欧美日韩| 欧美色图激情小说| 一区二区成人在线| 日本乱码高清不卡字幕| 中文字幕欧美一| 懂色av一区二区三区免费观看| 亚洲精品在线观看网站| 国产在线不卡一卡二卡三卡四卡| 日韩一级二级三级| 蜜桃视频第一区免费观看| 欧美人体做爰大胆视频| 青青草成人在线观看| 91精品国产综合久久精品性色| 亚洲成人www| 欧美精品v国产精品v日韩精品| 视频一区二区中文字幕| 欧美挠脚心视频网站| 蜜臀av一区二区在线观看 | 天天色综合天天| 欧美视频完全免费看| 日韩精品五月天| 精品国内二区三区| 国产精品夜夜嗨| 国产精品久久久久影院亚瑟| aaa亚洲精品| 亚洲综合色噜噜狠狠| 欧美一区在线视频| 国产美女视频一区| 国产精品卡一卡二| 精品视频全国免费看| 奇米精品一区二区三区在线观看| 精品国免费一区二区三区| 成人一区二区三区视频在线观看 | 成人性生交大合| 亚洲精品va在线观看| 在线观看91av| 国产综合久久久久影院| 成人免费在线观看入口| 欧美日本一区二区| 国产成人精品www牛牛影视| 亚洲女厕所小便bbb| 69堂成人精品免费视频| 成人免费视频视频| 午夜久久福利影院| 久久精品无码一区二区三区| 欧美主播一区二区三区| 韩国av一区二区三区| 一区二区三区在线视频免费| 欧美电影免费观看高清完整版在线观看| 国产在线麻豆精品观看| 亚洲精品大片www| 精品国产欧美一区二区| 欧美中文一区二区三区| 国产一区二区三区| 亚洲一区二区免费视频| 国产欧美日韩精品一区| 欧美一区二区美女| 96av麻豆蜜桃一区二区| 狠狠色丁香婷婷综合| 亚洲综合视频在线观看| 国产精品欧美经典| 日韩欧美中文字幕公布| 欧美性猛片xxxx免费看久爱| 国产91精品久久久久久久网曝门 | 欧美一区二区免费视频| 91蝌蚪porny九色| 国产精品资源在线观看| 免费在线成人网| 亚洲一区二区三区四区的| 中文成人综合网| 精品av久久707| 欧美精品第1页| 欧美亚洲自拍偷拍| 91最新地址在线播放| 国产69精品久久99不卡| 寂寞少妇一区二区三区| 日韩不卡一区二区三区| 亚洲国产欧美在线| 亚洲精品中文在线影院| 国产精品国产三级国产aⅴ无密码| 精品免费99久久| 欧美一区二区在线免费观看| 欧美在线三级电影| 色猫猫国产区一区二在线视频| 成人国产亚洲欧美成人综合网 | 依依成人精品视频| 亚洲欧美日韩国产中文在线| 国产精品私人影院| 国产精品理论在线观看| 中文字幕 久热精品 视频在线| 久久久一区二区三区捆绑**| 日韩欧美二区三区| 精品99一区二区| 国产午夜精品一区二区三区视频| 亚洲精品一区二区三区99| 久久婷婷综合激情| 久久久久久电影| 国产精品久久久久永久免费观看 | 成人免费视频caoporn| 国产成人av福利| 国产毛片一区二区| 国产大陆精品国产| 成人国产免费视频| 在线观看亚洲a| 欧美日韩在线播放一区| 欧美一级精品大片| 337p日本欧洲亚洲大胆色噜噜| 国产日韩成人精品| 亚洲特黄一级片| 亚洲一区二区综合| 免费成人在线网站| 国产成人精品一区二区三区四区 | 欧美日韩精品一区二区三区蜜桃| 欧美日韩国产在线播放网站| 欧美mv日韩mv亚洲| 国产精品毛片久久久久久| 亚洲欧美自拍偷拍色图| 一区二区三区在线免费观看| 日韩电影免费在线| 国内偷窥港台综合视频在线播放| 国产成人精品三级| 欧美主播一区二区三区| 欧美videos大乳护士334| 国产精品久久久久久久久久久免费看| 亚洲女同ⅹxx女同tv| 久久精品久久精品| voyeur盗摄精品| 4438x成人网最大色成网站| 久久天天做天天爱综合色| 亚洲欧美二区三区| 久久国产精品99久久久久久老狼| 成人午夜视频免费看| 7777精品久久久大香线蕉| 国产精品理论片| 蜜桃av噜噜一区| 色爱区综合激月婷婷| 欧美tickling挠脚心丨vk| 亚洲在线中文字幕| 成人晚上爱看视频| 日韩一区二区麻豆国产| 一区二区日韩av| 国产suv精品一区二区6| 欧美一区二区三区四区高清| 国产精品国产三级国产有无不卡| 热久久一区二区| 91极品美女在线| 欧美激情一区二区三区四区| 日韩综合一区二区| 色婷婷综合久久久中文一区二区| 久久亚洲二区三区| 丝袜诱惑制服诱惑色一区在线观看| 国产精品1区二区.| 日韩一级欧美一级| 亚洲va欧美va天堂v国产综合| 福利视频网站一区二区三区| 91精品免费观看| 一区二区欧美国产| 色悠悠亚洲一区二区| 国产免费成人在线视频| 精品一区二区免费| 91精品在线免费观看| 亚洲mv大片欧洲mv大片精品| av在线播放成人| 中文字幕第一区二区| 国产麻豆精品视频| 欧美精品一区二区精品网| 麻豆成人av在线| 欧美一区二区在线观看| 男女男精品网站| 91精品麻豆日日躁夜夜躁| 婷婷国产在线综合| 欧美日韩精品一区二区三区四区 | 色综合久久久久网| 综合久久国产九一剧情麻豆| 99久久国产免费看| 最新高清无码专区|