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

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

?? test_mcp2510.cbackup

?? arm9.rar
?? CBACKUP
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************
【文  件  名  稱】Test_MCP2510.C
【功  能  描  述】三星S3C2410A板demo程序代碼
【程  序  版  本】4.0
【創建人及創建日期】icesoar//2002年11月19日19:26
【修改人及修改日期】icesoar//2004-12-8 17:25
****************************************************************************/

//***************************************************************************
#include "def.h"
#include "2410addr.h"
#include "config.h"
#include "board.h"
#include "utils.h"
#include "MCP2510_Reg.h"
#include "MCP2510.h"

/****************************************************************************
MCP2510_CS		GPE11		output
MCP2510_SI		GPB5		output
MCP2510_SO		GPB6		input
MCP2510_SCK		GPB7		output
MCP2510_INT		GPG0		input		(EINT8)
****************************************************************************/
#define DELAY_TIME		150
#define MCP2510_CS_OUT		( rGPECON = rGPECON & (~(3<<22)) | (1<<22) )		//GPE11
#define MCP2510_CS(a)		rGPEDAT = ( rGPEDAT&(~(1<<11)) ) | ((a&1)<<11)

#define MCP2510_SI_OUT		( rGPBCON = rGPBCON & (~(3<<10)) | (1<<10) )		//GPB5
#define MCP2510_SI_PUT(a)		( rGPBDAT = ( rGPBDAT&(~(1<<5)) ) | ((a&1)<<5) )

#define MCP2510_SCK_OUT		( rGPBCON = rGPBCON & (~(3<<14)) | (1<<14) )		//GPB7
#define MCP2510_SCK_PUT(a)		( rGPBDAT = ( rGPBDAT&(~(1<<7)) ) | ((a&1)<<7) )

#define MCP2510_SO_IN		( rGPBCON = rGPBCON & (~(3<<12)) | (0<<12) )		//GPB6
#define MCP2510_SO_GET		( rGPBDAT & 0x40 )	

#define MCP2510_INT_IN		( rGPGCON = rGPGCON & (~(3<<0)) )
#define MCP2510_INT_GET		( rGPGDAT & 0x01 )	

U32 m_CANDRV_aulCANDrvMask[2] = { 0, 0 } ;
U32	m_CANDRV_aulSendingStartTicks[3]={ 0, 0, 0 } ;
CANFILTER   m_CANDRV_aStruRXFilter[6] =
				{
					{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}
				};
CANMESSAGE m_CANDRV_aStruRXMsg0[3], m_CANDRV_aStruRXMsg1[3] ;
//***************************************************************************

/****************************************************************************
【功能說明】
****************************************************************************/
void MCP2510_IO_CS_Init( void ) 
{
   MCP2510_CS_OUT ;
   MCP2510_SI_OUT ;
   MCP2510_SCK_OUT ;
   MCP2510_SO_IN ;
   MCP2510_SCK_PUT( 1 ) ;		//SCK put 1
   { U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時至少300ns
   MCP2510_CS( 0 ) ;			// Select the MCP2510
   { U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時至少300ns
}

/****************************************************************************
【功能說明】
****************************************************************************/
void Spi_Write( U8 Data ) 
{
	U8 m ;

	for( m = 0; m < 8; m++ )
	{
		MCP2510_SCK_PUT( 0 ) ;		//SCK put 0
		{ U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時至少300ns
		if( (Data&0x80)==0x80 )
			MCP2510_SI_PUT( 1 );		//SI put 1
		else
			MCP2510_SI_PUT( 0 );		//SI put 0

		{ U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時至少300ns
		MCP2510_SCK_PUT( 1 ) ;		//SCK put 1
		Data = Data<<1 ;
		{ U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時至少300ns
	}
}

/****************************************************************************
【功能說明】
****************************************************************************/
U8 Spi_Read(U8 mode)
{
	U8 m ;
	U8 data = 0 ;

	for( m = 0; m < 8; m++ )
	{
		MCP2510_SCK_PUT( 0 ) ;		//SCK put 0
		{ U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時至少300ns
		data=data<<1;
		if( MCP2510_SO_GET != 0 )
			data |= 0x01 ;
		else
			data &= 0xfe;

		{ U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時至少300ns
		MCP2510_SCK_PUT( 1 ) ;		//SCK put 1
		{ U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時至少300ns
	}

	return (data);
}

/****************************************************************************
【功能說明】 Read a register from the MCP2510 via SPI
****************************************************************************/
U8 ReadMCP2510Reg( U8 regaddr )
{
   U8 rreg=0;

   MCP2510_IO_CS_Init() ;		//Initial IO port and CS is select
   Spi_Write(CAN_SPIREAD );	// Send the Read command
   Spi_Write( regaddr );		// Send the register	address
   rreg = Spi_Read( 0 );			// Read back the register
   MCP2510_CS( 1 ) ;			// Deselect the MCP2510
   return( rreg );
}

/****************************************************************************
【功能說明】Read multiple registers from the MCP2510 over SPI
****************************************************************************/
void ReadMCP2510ManyRegS( U8 regaddr, U8 len, U8 *dta   )
{
   U16 x=0;

   MCP2510_IO_CS_Init() ;		//Initial IO port and CS is select
   Spi_Write( CAN_SPIREAD );	// Send the Read command
   Spi_Write( regaddr );		// Send the register	address
   for( x=0; x<len; x++ )
   {
      *dta =Spi_Read( 0 );
      dta++;
   }
   MCP2510_CS( 1 ) ;			// Deselect the MCP2510
}

/****************************************************************************
【功能說明】Write 1 MCP2510 register
****************************************************************************/
void WriteMCP2510Reg( U8 regaddr, U8 regvalue )
{
   MCP2510_IO_CS_Init() ;		//Initial IO port and CS is select
   Spi_Write( CAN_SPIWRITE );	// Send the Write command
   Spi_Write( regaddr );		//send the register address
   Spi_Write( regvalue );
   MCP2510_CS( 1 ) ;			// Deselect the MCP2510
}

/****************************************************************************
【功能說明】Write Many Registers over SPI
****************************************************************************/
void WriteMCP2510ManyRegS( U8 regaddr, U8 len, U8 *dta )
{
   U16 x=0;

   MCP2510_IO_CS_Init() ;		//Initial IO port and CS is select
   Spi_Write( CAN_SPIWRITE );	// Send the Read command
   Spi_Write( regaddr );		// Send the register	address
   for( x=0; x<len; x++ )
   {
      Spi_Write( *dta );
      dta++;
   }
   MCP2510_CS( 1 ) ;			// Deselect the MCP2510
}

/****************************************************************************
【功能說明】 Send Command to MCP2510 via SPI 
****************************************************************************/
void SendCMDMCP2510( U8 CMD )
{
   MCP2510_IO_CS_Init() ;		//Initial IO port and CS is select
   Spi_Write(CMD );
   MCP2510_CS( 1 ) ;			// Deselect the MCP2510
}

/****************************************************************************
【功能說明】              Read often used status
//Status 	 7    	6    	5    	4    	3    	2  	1	0
//		|	|	|	|	|	|	|	|									
//		|	|	|	|	|	|	|	|___CANINTF.RX0IF
//		|	|	|	|	|	|	|_______CANINTF.RX1IF
//		|	|	|	|	|	|___________TXB0CTRL.TXREQ
//		|	|	|	|	|_______________CANINTF.TX0IF
//		|	|	|	|___________________TXB1CTRL.TXREQ
//		|	|	|_______________________CANINTF.TX1IF
//		|	|___________________________TXB2CTRL.TXREQ
//		|_______________________________CANINTF.TX2IF
****************************************************************************/
U8 ReadMCP2510Status( void )
{
	U8 val;

   MCP2510_IO_CS_Init() ;		//Initial IO port and CS is select
   Spi_Write(CAN_SPIREADSTAT);	//Send Read status Command
   val=Spi_Read(0);				//read the often used status
   MCP2510_CS( 1 ) ;			// Deselect the MCP2510
   return (val);
}

/****************************************************************************
【功能說明】Modify MCP2510Reg By Bit
****************************************************************************/
void BitModifyMCP2510Reg(U8 regaddr,U8 Mask,U8 regvalue )
{
   MCP2510_IO_CS_Init() ;		//Initial IO port and CS is select
   Spi_Write(CAN_SPIBITMOD);
   Spi_Write(regaddr);
   Spi_Write(Mask);
   Spi_Write(regvalue);
   MCP2510_CS( 1 ) ;			// Deselect the MCP2510
}

/****************************************************************************
【功能說明】Set the MCP2510 operation mode
1.normal mode 2.sleep mode 3.loop back mode 4.listen only mode 5 configure mode
ClkOutPreScale: 1-CLKOUT=OSC; 2--CLKOUT=OSC/2  4--CLKOUT=OSC/4 8 --CLKOUT=OSC/8
****************************************************************************/
U8 Set_MCP2510_Mode( U8 mode,U8 ClkOutPreScale )
{
	U8 value=0;
	U8 modeval=0;
	U8 modeval1=0;
	U8 ReadBackCNT=0;
	
	if(mode==1) 		modeval=CAN_NORMAL_MODE;
	else if(mode==2) 	modeval=CAN_SLEEP_MODE;
	else if(mode==3)		modeval=CAN_LOOP_MODE;
	else if(mode==4)		modeval=CAN_LISTEN_MODE;
	else if(mode==5)		modeval=CAN_CFG_MOEE;
	else 				;

	modeval1=modeval;
	
	switch(ClkOutPreScale)
	{
	case 1:	modeval=modeval| CLKEN | CLKPRE1 ;
			break;
	case 2:	modeval=modeval| CLKEN | CLKPRE2 ;
			break;
	case 4:	modeval=modeval| CLKEN | CLKPRE4 ;
			break;
	case 8:	modeval=modeval| CLKEN | CLKPRE8 ;
			break;
	default:	modeval=modeval ;
			break;
	}

	WriteMCP2510Reg( CANCTRL,modeval );

	while( ReadBackCNT<5 )
	{
		value=( ReadMCP2510Reg(CANSTAT) & 0xe0 );

		if( value == modeval1 )
		{
			break;
		}
		
		ReadBackCNT++;
	}
	
	if( ReadBackCNT==5 ) 			//Set mcp2510's mode failed,redo it again
	{
		printf( "Set MCP2510 mode failed, redo it!\n" ) ;		//Printf message
		WriteMCP2510Reg( CANCTRL,modeval );		//redo to set mcp2510 mode
		
		Delay( 1 );
	}

	value = ( ReadMCP2510Reg(CANSTAT) & 0xe0 );	//read back mode from CANSTAT Register
	return (value);	
}

/****************************************************************************
【功能說明】Set the Baud Rate for MCP2510 
//BaudIndex:		Baud          Nominal Bit Time
//	0			1000K		1uS
//	1			800K		1.25uS
//	2			500K		2uS
//	3			250K		4uS	
//	4			125K		8uS
//	5			100K		10uS
//	6			50K			20uS
//	7			20K			50uS
//	8			10K			100uS
****************************************************************************/
U8  Set_MCP2510_Baud( U8 BaudIndex )
{
	U8 CNF1Reg,CNF2Reg,CNF3Reg;
	U8 val;
	// For 1000k,500k,250k,125k,100k,50k,20k Tbit=8 TQ
	// For 800k  Tbit=10 TQ
	// For 10k    Tbit=16 TQ
	
	CNF2Reg=0x90;		//PSeg=1 TQ  	PS1=3 TQ
	CNF3Reg=0x02;		//PS2=2 TQ	SYNC=1 TQ	//Tbit=8 TQ
	
	switch(BaudIndex)
	{
		case 0:	CNF1Reg=0x00;		//1000k
				break;			
		case 1:	CNF1Reg=0x00;		//800k	10TQ
				CNF2Reg=0x98;		//PS1=4 TQ	PSeg=1 TQ
				CNF3Reg=0x03;		//PS2=4 TQ	SYNC=1 TQ		
				break;
		case 2:	CNF1Reg=0x01;		//500k
				break;
		case 3:	CNF1Reg=0x03;		//250k
				break;
		case 4:	CNF1Reg=0x07;		//125k
				break;
		case 5:	CNF1Reg=0x09;		//100k
				break;
		case 6:	CNF1Reg=0x13;		//50k
				break;
		case 7:	CNF1Reg=0x31;		//20k
				break;
		case 8:	CNF1Reg=0x31;		//10k	16TQ
				CNF2Reg=0xB0;		//PS1=7 TQ  PSeg=1 TQ
				CNF3Reg=0x06;		//PS2=7 TQ SYNC=1 TQ	 
				break;
	}

	WriteMCP2510Reg( CNF1,CNF1Reg );
	WriteMCP2510Reg( CNF2,CNF2Reg );
	WriteMCP2510Reg( CNF3,CNF3Reg );

	return (val);		
}

/****************************************************************************
【功能說明】Set RXBuffer's Filter
FilterIndex(0---5): 0,1 For RXBuffer0   2,3,4,5 for RXBuffer1
****************************************************************************/
void SetMCP2510Filter( U8 FilterIndex, CANFILTER* Filter  )
{
	U8 ID[4];
	U8 RID1;
	ID[0]=(U8)((Filter->ID & 0xff000000)>>24);
	ID[1]=(U8)((Filter->ID & 0x00ff0000)>>16);
	ID[2]=(U8)((Filter->ID & 0x0000ff00)>>8);
	ID[3]=(U8)((Filter->ID & 0x000000ff));
	
	ID[3]=ID[3]>>3;
	ID[3]=ID[3] |(ID[2]<<5);
	ID[2]=ID[2]>>3;
	ID[2]=ID[2] |(ID[1]<<5);
	RID1=ID[1];
	ID[1]=ID[1]>>3;
	ID[1]=ID[1] & 0x03;
	ID[1]=(RID1 & 0xe0) + ID[1];
	if(Filter->EXFrame)				//concern extend frame 
	{
		ID[1]=ID[1] |0x08;
	}

	m_CANDRV_aStruRXFilter[FilterIndex %6 ].ID = Filter->ID;
	m_CANDRV_aStruRXFilter[FilterIndex %6].EXFrame = Filter->EXFrame;

	if(FilterIndex==0)
	{
		WriteMCP2510ManyRegS(RXF0SIDH,4,ID  );
	}
	else	 if(FilterIndex==1)
	{
		WriteMCP2510ManyRegS(RXF1SIDH,4,ID  );
	}
	else	 if(FilterIndex==2)
	{
		WriteMCP2510ManyRegS(RXF2SIDH,4,ID  );
	}
	else	 if(FilterIndex==3)
	{
		WriteMCP2510ManyRegS(RXF3SIDH,4,ID  );
	}
	else	 if(FilterIndex==4)
	{
		WriteMCP2510ManyRegS(RXF4SIDH,4,ID  );
	}
	else	 if(FilterIndex==5)
	{
		WriteMCP2510ManyRegS(RXF5SIDH,4,ID  );
	}
	else		;

}

/****************************************************************************
【功能說明】Set RXBuffer's Mask
MaskIndex(0---1): 0 For RXBuffer0   1 for RXBuffer1
****************************************************************************/
void SetMCP2510Mask(U8 MaskIndex, U32 mask )
{
	U8 ID[4];
	U8 RID1;
	ID[0]=(U8)((mask & 0xff000000)>>24);
	ID[1]=(U8)((mask & 0x00ff0000)>>16);
	ID[2]=(U8)((mask & 0x0000ff00)>>8);
	ID[3]=(U8)((mask & 0x000000ff));
	
	ID[3]=ID[3]>>3;
	ID[3]=ID[3] |(ID[2]<<5);
	ID[2]=ID[2]>>3;
	ID[2]=ID[2] |(ID[1]<<5);
	RID1=ID[1];
	ID[1]=ID[1]>>3;
	ID[1]=ID[1] &0x03;
	ID[1]=(RID1 & 0xe0 )+ ID[1];

	m_CANDRV_aulCANDrvMask[MaskIndex] = mask;
	
	if(MaskIndex==0)
	{
		WriteMCP2510ManyRegS(RXM0SIDH,4,ID );
	}
	else if(MaskIndex==1)
	{
		WriteMCP2510ManyRegS(RXM1SIDH,4,ID );
	}
	else ;

}

/****************************************************************************
【功能說明】
****************************************************************************/
void ClearTXEmptyFlag( U8 TXBufferIndex   )
{
	U8 mask=0x00;
	if (TXBufferIndex==0)  mask=0x04;
	else if(TXBufferIndex==1) mask=0x08;
	else if(TXBufferIndex==2) mask=0x10;
	else;

	BitModifyMCP2510Reg(CANINTF,mask, 0x00  );
}

/****************************************************************************
【功能說明】Clear Recieve Buffer over flow Flag
****************************************************************************/
void ClearRXBufferOVR(U8 RXBufferIndex  )
{
	U8 mask=0x00;
	if (RXBufferIndex==0)  mask=0x40;
	else if(RXBufferIndex==1) mask=0x80;
	else;
	
	BitModifyMCP2510Reg(EFLG,mask, 0x00 );
}


/****************************************************************************
【功能說明】Before this function was called,you must check the RXBuffer and take the frame data away
Clear the RXBuffer
this result is if RXBuffIndex=0 then CANINTF.RX0IF=0
			 if RXBuffIndex=1 then CANINTF.RX1IF=0
****************************************************************************/
void ClearRXBufferFull(U8 RXBufferIndex  )
{
	U8 mask;
	if(RXBufferIndex==0) 		mask=0x01;
	else if(RXBufferIndex==1)	mask=0x02;
	else							mask=0x00;

	BitModifyMCP2510Reg(CANINTF, mask,0x00 );
}

/****************************************************************************
【功能說明】function:Try to Send a CAN Frame;
if one of the three TX Buffers is empty then CAN Frame was Written into success=1
else  success=0xff indicating that CAN Frame was not wirtten into any TX Buffer and was not transmitted;
****************************************************************************/
U8 SendCANMessage( CANMESSAGE* Msg  )
{
	U8 status,SendData[13];
	U8 success=1;
	U8 ID[4];
	//U8 err;
	U32 ulTemp;
	
	ID[3]=(U8)((Msg->ID & 0xff000000)>>24);
	ID[2]=(U8)((Msg->ID & 0x00ff0000)>>16);
	ID[1]=(U8)((Msg->ID & 0x0000ff00)>>8);
	ID[0]=(U8)((Msg->ID & 0x000000ff));
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品正在播放| 极品尤物av久久免费看| 国产农村妇女毛片精品久久麻豆| 777色狠狠一区二区三区| 欧美三级中文字幕| 3atv一区二区三区| 91麻豆精品国产| 欧美一区二区免费视频| 91精品国产一区二区| 在线一区二区三区做爰视频网站| 波多野结衣中文字幕一区| av男人天堂一区| 在线亚洲免费视频| 欧美高清精品3d| 日韩视频免费观看高清完整版在线观看| 欧美日韩精品系列| 日韩视频一区二区三区在线播放| 久久嫩草精品久久久久| 欧美国产一区二区| 亚洲精品国产品国语在线app| 午夜精品福利一区二区三区av| 秋霞影院一区二区| 国产成人av一区二区三区在线观看| 成人蜜臀av电影| 色综合久久综合| 欧美电影在线免费观看| 久久先锋资源网| 国产精品久99| 日韩精品欧美精品| 大白屁股一区二区视频| 在线观看三级视频欧美| 精品国产不卡一区二区三区| 久久久久久一二三区| 一二三区精品福利视频| 久久国产麻豆精品| 91在线国产观看| 日韩一区二区三区视频| 国产精品视频在线看| 亚洲va欧美va人人爽午夜| 国产福利精品一区二区| 色中色一区二区| 日韩精品在线看片z| 亚洲欧美怡红院| 久久狠狠亚洲综合| 在线看国产一区二区| 久久精品视频在线看| 日韩av一区二| 在线免费观看一区| 国产欧美一区视频| 肉丝袜脚交视频一区二区| 成人性生交大合| 日韩精品一区在线观看| 亚洲一区二区三区四区的 | av电影天堂一区二区在线观看| 欧美性色黄大片| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 日本aⅴ免费视频一区二区三区 | 亚洲在线视频免费观看| 国产成人午夜99999| 91精品国产综合久久久久久久久久| 久久久青草青青国产亚洲免观| 日韩中文字幕区一区有砖一区| 色综合天天综合网国产成人综合天 | 精品国产乱码久久久久久蜜臀| 一级精品视频在线观看宜春院| 国产黄色精品网站| 精品国产乱码91久久久久久网站| 香蕉久久一区二区不卡无毒影院| 91在线高清观看| 国产精品毛片高清在线完整版| 精品无码三级在线观看视频| 日韩三级电影网址| 青青草国产成人99久久| 4438成人网| 视频一区视频二区在线观看| 欧美三级在线播放| 爽爽淫人综合网网站| 欧美系列亚洲系列| 亚洲夂夂婷婷色拍ww47| 欧美日韩国产成人在线免费| 亚洲成人精品一区二区| 欧美剧情片在线观看| 午夜精品福利一区二区三区av| 欧美日韩1234| 九一九一国产精品| 欧美v亚洲v综合ⅴ国产v| 精品一区二区三区久久| 精品精品欲导航| 国产激情91久久精品导航| 欧美国产日韩亚洲一区| 91在线精品秘密一区二区| 夜夜嗨av一区二区三区网页 | 久久综合色综合88| 丁香五精品蜜臀久久久久99网站| 国产精品无遮挡| 91玉足脚交白嫩脚丫在线播放| 亚洲国产日产av| 精品区一区二区| 成人一道本在线| 夜夜嗨av一区二区三区| 欧美日韩mp4| 国产福利91精品| 一区二区三区四区蜜桃| 欧美大尺度电影在线| 韩国女主播一区二区三区| 日本一区二区三区四区| 91蜜桃传媒精品久久久一区二区| 亚洲午夜电影在线| 亚洲精品一区二区三区影院| av在线不卡网| 日日摸夜夜添夜夜添国产精品| 久久一区二区三区四区| 欧美午夜在线一二页| 久久99精品视频| 亚洲啪啪综合av一区二区三区| 欧美一区二区三区四区高清| 成人动漫一区二区| 日本不卡不码高清免费观看| 中文字幕一区在线观看| 91精品国产色综合久久| 99在线精品观看| 久久99热99| 亚洲无线码一区二区三区| 国产日韩亚洲欧美综合| 欧美一区三区四区| 一本到不卡免费一区二区| 极品尤物av久久免费看| 婷婷成人激情在线网| 国产精品久久二区二区| 久久婷婷综合激情| 在线成人av网站| 色综合久久中文综合久久97| 国产精品一区在线| 免费不卡在线视频| 一区二区三区四区五区视频在线观看 | 国产精品视频观看| 精品美女一区二区| 欧美精品自拍偷拍动漫精品| 成人av在线一区二区三区| 国产在线播放一区三区四| 午夜电影一区二区| 亚洲一区二区视频在线观看| 国产精品久久久久aaaa樱花| 国产日韩精品一区二区浪潮av| 91精品欧美一区二区三区综合在 | 国产精品99久久久久久似苏梦涵| 日韩电影在线免费看| 亚洲一级二级在线| 亚洲成人免费av| 偷拍亚洲欧洲综合| 亚洲成人第一页| 视频在线观看一区| 日本不卡视频在线| 久久99国产精品免费| 捆绑紧缚一区二区三区视频| 日本美女视频一区二区| 六月婷婷色综合| 国内成+人亚洲+欧美+综合在线| 青青草原综合久久大伊人精品优势| 亚洲成a人片在线不卡一二三区| 亚洲一区二区三区爽爽爽爽爽| 亚洲午夜激情av| 日韩专区中文字幕一区二区| 蜜臀av一区二区三区| 精品亚洲porn| av在线免费不卡| 日本道精品一区二区三区| 日本二三区不卡| 欧美高清dvd| 久久综合久久综合久久综合| 国产网站一区二区三区| 亚洲视频在线一区| 亚洲成a天堂v人片| 国产永久精品大片wwwapp| 成人影视亚洲图片在线| 99re在线精品| 欧美人与性动xxxx| 久久精品亚洲国产奇米99| 亚洲特黄一级片| 午夜欧美视频在线观看| 国产一区二区网址| 色呦呦日韩精品| 日韩一区二区视频| 国产精品无圣光一区二区| 亚洲成人av电影| 狠狠狠色丁香婷婷综合激情| 99国产精品一区| 欧美v日韩v国产v| 亚洲品质自拍视频网站| 青青草原综合久久大伊人精品| 大陆成人av片| 欧美福利视频一区| 国产目拍亚洲精品99久久精品| 夜夜嗨av一区二区三区网页| 国产一区999| 欧美日韩在线播放三区四区| 国产精品无码永久免费888| 天天综合天天做天天综合| av中文字幕不卡| 久久综合色之久久综合|