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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? test_mcp2510.cbackup

?? ARM9.rar
?? CBACKUP
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************
【文  件  名  稱】Test_MCP2510.C
【功  能  描  述】三星S3C2410A板demo程序代碼
【程  序  版  本】4.0
【創(chuàng)建人及創(chuàng)建日期】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++ ) ;  }  //延時(shí)至少300ns
   MCP2510_CS( 0 ) ;			// Select the MCP2510
   { U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時(shí)至少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++ ) ;  }  //延時(shí)至少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++ ) ;  }  //延時(shí)至少300ns
		MCP2510_SCK_PUT( 1 ) ;		//SCK put 1
		Data = Data<<1 ;
		{ U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時(shí)至少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++ ) ;  }  //延時(shí)至少300ns
		data=data<<1;
		if( MCP2510_SO_GET != 0 )
			data |= 0x01 ;
		else
			data &= 0xfe;

		{ U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時(shí)至少300ns
		MCP2510_SCK_PUT( 1 ) ;		//SCK put 1
		{ U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延時(shí)至少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));
	

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级精品在线| 成人黄色在线视频| 成人免费看视频| 欧美一区二区精品在线| 国产精品欧美久久久久一区二区| 91精品国产欧美一区二区成人| 中文字幕人成不卡一区| 国产在线国偷精品产拍免费yy| 99免费精品在线| 中文一区在线播放| 精品系列免费在线观看| 久久av老司机精品网站导航| 欧美美女一区二区三区| 中文字幕一区二区三区在线不卡 | 婷婷综合另类小说色区| av亚洲精华国产精华| 欧美va亚洲va| 久久国产日韩欧美精品| 日韩欧美综合在线| 夜夜爽夜夜爽精品视频| 欧美一区二区在线视频| 精品一区二区免费看| 欧美激情在线一区二区| 色老汉av一区二区三区| 蜜桃免费网站一区二区三区| 欧美国产综合一区二区| 欧美日韩国产影片| 成人开心网精品视频| 天天影视网天天综合色在线播放| 精品理论电影在线观看 | 亚洲色图欧洲色图婷婷| 国产精品 欧美精品| 国产精品综合一区二区三区| 国产精品天干天干在观线| 欧美午夜电影网| 99精品视频在线观看| 日本亚洲一区二区| 亚洲综合一二三区| 中文字幕一区二区三中文字幕| 日韩一级视频免费观看在线| 99精品国产热久久91蜜凸| 国产一区二区三区黄视频 | 午夜久久久久久电影| 中文字幕乱码一区二区免费| 精品国产91亚洲一区二区三区婷婷| 色又黄又爽网站www久久| 成人精品免费网站| 精品一区二区三区不卡| 蜜桃一区二区三区四区| 一区二区欧美视频| 一区二区三区久久| 亚洲伊人伊色伊影伊综合网| 亚洲视频你懂的| 亚洲麻豆国产自偷在线| 亚洲日本欧美天堂| 一区二区欧美国产| 午夜精品久久久久久久99水蜜桃| 一个色在线综合| 天天综合天天做天天综合| 爽爽淫人综合网网站| 青青草精品视频| 韩国精品主播一区二区在线观看 | 成人动漫精品一区二区| 成人久久久精品乱码一区二区三区| 高清不卡在线观看| 一本一道综合狠狠老| 精品视频1区2区| 久久免费美女视频| 亚洲欧美乱综合| 蜜桃av噜噜一区| 成人国产视频在线观看| 欧美亚洲综合在线| 精品女同一区二区| 亚洲女爱视频在线| 麻豆一区二区在线| 在线免费观看日本一区| 精品久久一二三区| 亚洲成人7777| 国产成a人亚洲精品| 在线91免费看| 亚洲男人的天堂一区二区| 日韩**一区毛片| 欧美亚洲高清一区| 综合婷婷亚洲小说| 国产电影精品久久禁18| 日韩欧美成人激情| 亚洲va韩国va欧美va精品| 99久久精品费精品国产一区二区| 精品国产免费一区二区三区四区| 综合网在线视频| av不卡免费在线观看| 久久久久久久久免费| 另类调教123区| 亚洲综合一区在线| 国内外成人在线视频| 日韩免费观看高清完整版 | 国产精品国模大尺度视频| 久久精品国产一区二区三 | 欧美激情在线一区二区三区| 精品在线你懂的| 精品国产网站在线观看| 奇米色一区二区| 欧美成人一区二区| 国产精品香蕉一区二区三区| 久久综合久久久久88| 国产综合色在线视频区| 久久精品视频一区二区| 国产精品原创巨作av| 中文字幕不卡的av| 日本道精品一区二区三区 | 国产精品视频看| 91福利资源站| 视频一区二区不卡| 久久婷婷色综合| 国产成人免费视频一区| 亚洲精品一卡二卡| 欧美电影影音先锋| 国产高清精品网站| 亚洲精品视频免费观看| 精品久久人人做人人爰| 99久久婷婷国产精品综合| 亚洲444eee在线观看| 国产人伦精品一区二区| 91成人看片片| 粉嫩欧美一区二区三区高清影视| 亚洲综合在线五月| 久久精品欧美一区二区三区麻豆 | 日本成人中文字幕| √…a在线天堂一区| 久久无码av三级| 欧美日韩国产在线播放网站| 高清在线不卡av| 国产一区二区三区观看| 亚洲一区二区三区国产| 欧美国产一区在线| 精品久久久久久久久久久久久久久久久| 国产91精品一区二区麻豆网站| 日韩中文字幕一区二区三区| 国产精品的网站| 国产欧美日韩精品在线| 精品美女一区二区| 日韩免费观看高清完整版| 欧美精品乱码久久久久久按摩| 91丨porny丨户外露出| 成人小视频免费观看| 国产精品 日产精品 欧美精品| 日韩福利视频导航| 日本成人超碰在线观看| 亚洲成a人片综合在线| 亚洲第一久久影院| 亚洲综合一区在线| 亚洲一区中文日韩| 天天综合日日夜夜精品| 免费在线观看一区二区三区| 日本中文在线一区| 亚洲va欧美va国产va天堂影院| 亚洲午夜日本在线观看| 日韩国产精品久久| 男女男精品视频网| 国产成人在线视频网站| 99久久99久久久精品齐齐| 色婷婷精品久久二区二区蜜臀av | 亚洲黄色小说网站| 久久久99免费| 欧美一二三区精品| 国产欧美日韩亚州综合| 中文字幕在线免费不卡| 亚洲国产精品影院| 国产专区综合网| 91行情网站电视在线观看高清版| 欧美精品黑人性xxxx| 日韩欧美一区二区视频| 欧美高清在线一区| 天天综合色天天综合色h| 成人污污视频在线观看| 91 com成人网| 亚洲欧美中日韩| 韩国一区二区三区| 欧美亚洲国产一区二区三区va| 日韩欧美成人激情| 亚洲一区在线播放| 91小宝寻花一区二区三区| 日韩欧美一二区| 天天综合色天天| 日本电影亚洲天堂一区| 国产精品伦一区| 国产成人精品网址| 精品精品欲导航| 婷婷开心激情综合| 欧美无乱码久久久免费午夜一区| 国产欧美日韩在线观看| 国产美女在线观看一区| 911国产精品| 日韩高清不卡一区| 这里是久久伊人| 奇米一区二区三区| 欧美一区日韩一区| 麻豆极品一区二区三区| 欧美tickling网站挠脚心| 免费观看久久久4p|