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

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

?? ccxxx0lib.c

?? 通過PIC單片機控制CC00通信
?? C
字號:
#define BYTE unsigned char
#define UINT8 unsigned char

void halSpiWriteBurstReg(BYTE addr, BYTE *buffer, BYTE count);
void halSpiReadBurstReg(BYTE addr, BYTE *buffer, BYTE count);
void halSpiWriteReg(BYTE addr, BYTE value);
void halSpiStrobe(BYTE strobe);
BYTE halSpiReadReg(BYTE addr);
BYTE halSpiReadStatus(BYTE addr);
void halRfWriteRfSettings_CC1100();
void halRfWriteRfSettings_CC2500();
BYTE halRfSendPacket(BYTE *txBuffer, UINT8 size);
BYTE halRfReceivePacket(BYTE *rxBuffer, UINT8 length);
void POWER_UP_RESET_CCxxx0();
BYTE spiGetRxTxStatus(void);
BYTE SPI_write(BYTE value);
BYTE SPI_read();
#define WRITE_BURST     0x40
#define READ_SINGLE     0x80
#define READ_BURST      0xC0
//================================================================
//延時L毫秒
//IN:L
//OUT:NONE
//================================================================
void Dly1mS(unsigned int l) 
{
	int i;
	while(l--) 
		for(i=0;i<54;i++);
	
}
//=================================================================
//往SPI寫數據
//IN:value
//OUT:spi_status
//=======================================================================
BYTE SPI_write(BYTE value)
{
	unsigned char i,spi_status;
	for(i=0;i<8;i++) { 
		if(value&0x80) 
			{
			  P_SCLK=0;
			  P_SI=1;
			}
		else 
			{
			  P_SCLK=0;
			  P_SI=0;
			}	
		asm("nop"); asm("nop"); asm("nop"); asm("nop");asm("nop");
		P_SCLK=1;
		value <<=1;
		spi_status<<=1;	
//		if(P_SO=1)
		if(P_SO==1)//modify Jason Xiang 2006-9-26 10:26
		   spi_status=spi_status|0x01;
		else
			spi_status=spi_status&0xfe;
	}
	P_SCLK=0;
//	asm("nop"); asm("nop"); asm("nop"); asm("nop");asm("nop");
	return(spi_status);
}
//=================================================================
//從SPI讀RF數據
//IN:NONE
//OUT:value
//=======================================================================
BYTE SPI_read()
{
	unsigned char i,value;
	for(i=0;i<8;i++) 
	{ 
		value <<=1;
		P_SCLK=1;
		if(P_SO) value|=0x01;
		else value&=0xFE;
//		asm("nop"); asm("nop"); asm("nop"); asm("nop");asm("nop");
		P_SCLK=0;	
	}
//	asm("nop"); asm("nop"); asm("nop"); asm("nop");asm("nop");
	return value;
}
//=======================================================================

//-------------------------------------------------------------------------------------------------------
//  BYTE halSpiReadReg(BYTE addr) 
//
//  DESCRIPTION:
//      This function gets the value of a single specified CCxxx0 register.
//		通過SPI讀單個寄存器的數據
//  ARGUMENTS:
//      BYTE addr
//          Address of the CCxxx0 register to be accessed.
//
//  RETURN VALUE:
//      BYTE
//          Value of the accessed CCxxx0 register.
//-------------------------------------------------------------------------------------------------------
BYTE halSpiReadReg(BYTE addr) 
{
	unsigned char value;
	P_CSn=0;
	while(P_SO);
    P_SCLK=0;
	addr|=READ_SINGLE;
	SPI_write(addr);
	value=SPI_read();
	P_CSn=1;
	P_SCLK=0;
	P_SI=0;
	return value;
}


//-------------------------------------------------------------------------------------------------------
//  BYTE halSpiReadStatus(BYTE addr)
//
//  DESCRIPTION:
//      This function reads a CCxxx0 status register.
//		通過SPI讀RF的狀態
//  ARGUMENTS:
//      BYTE addr
//          Address of the CCxxx0 status register to be accessed.
//
//  RETURN VALUE:
//      BYTE
//          Value of the accessed CCxxx0 status register.
//-------------------------------------------------------------------------------------------------------
BYTE halSpiReadStatus(BYTE addr) 
{
	unsigned char value;
	P_CSn=0;
	while(P_SO);
    P_SCLK=0;
	addr|=READ_BURST;
	SPI_write(addr);
	value=SPI_read();
	P_CSn=1;
	P_SCLK=0;
	P_SI=0;
	return value;
}// halSpiReadStatus


//-------------------------------------------------------------------------------------------------------
//  void halSpiWriteReg(BYTE addr, BYTE value)
//
//  DESCRIPTION:
//      Function for writing to a single CCxxx0 register
//		通過SPI寫數據到一個寄存器
//  ARGUMENTS:
//      BYTE addr
//          Address of a specific CCxxx0 register to accessed.
//      BYTE value
//          Value to be written to the specified CCxxx0 register.
//-------------------------------------------------------------------------------------------------------
void halSpiWriteReg(BYTE addr, BYTE value) 
{
	P_CSn=0;
	while(P_SO);
    P_SCLK=0;
	addr&=0x7F;
	SPI_write(addr);
	SPI_write(value);
	P_SI=0;
	P_CSn=1;

}// halSpiWriteReg


//-------------------------------------------------------------------------------------------------------
//  void halSpiReadBurstReg(BYTE addr, BYTE *buffer, BYTE count)
//
//  DESCRIPTION:
//      This function reads multiple CCxxx0 register, using SPI burst access.
//		讀多個寄存器的數據
//  ARGUMENTS:
//      BYTE addr
//          Address of the first CCxxx0 register to be accessed.
//      BYTE *buffer
//          Pointer to a byte array which stores the values read from a
//          corresponding range of CCxxx0 registers.
//      BYTE count
//          Number of bytes to be written to the subsequent CCxxx0 registers.
//-------------------------------------------------------------------------------------------------------
void halSpiReadBurstReg(BYTE addr, BYTE *buffer, BYTE count) 
{
	unsigned char j,value;
	P_CSn=0;
	while(P_SO);
    P_SCLK=0;
	addr|=READ_BURST;
	SPI_write(addr);
	for(j=0;j<count;j++) 
	{
	  value=SPI_read();
	  buffer[j]=value;
	}
	P_CSn=1;
}// halSpiReadBurstReg



//-------------------------------------------------------------------------------------------------------
//  void halSpiWriteBurstReg(BYTE addr, BYTE *buffer, BYTE count)
//
//  DESCRIPTION:
//      This function writes to multiple CCxxx0 register, using SPI burst access.
//		寫多個數據到RF寄存器里
//  ARGUMENTS:
//      BYTE addr
//          Address of the first CCxxx0 register to be accessed.
//      BYTE *buffer
//          Array of bytes to be written into a corresponding range of
//          CCxx00 registers, starting by the address specified in _addr_.
//      BYTE count
//          Number of bytes to be written to the subsequent CCxxx0 registers.   
//-------------------------------------------------------------------------------------------------------
void halSpiWriteBurstReg(BYTE addr, BYTE *buffer, BYTE count)
{
	unsigned char i,j,value;
	P_CSn=0;
	while(P_SO);
    P_SCLK=0;
	addr|=WRITE_BURST;
	SPI_write(addr);
	for(j=0;j<count;j++) {
	  value=buffer[j];
	  SPI_write(value);
	  P_SCLK=0;	
	  P_SI=0;
	  for(i=0;i<10;i++);
	}
	P_CSn=1;
}// halSpiWriteBurstReg




//-------------------------------------------------------------------------------------------------------
//  void halSpiStrobe(BYTE strobe)
//
//  DESCRIPTION:
//      Function for writing a strobe command to the CCxxx0
//		寫一個命令到RF
//  ARGUMENTS:
//      BYTE strobe
//          Strobe command
//-------------------------------------------------------------------------------------------------------
void halSpiStrobe(BYTE strobe) 
{
	P_CSn=0;
	while(P_SO);
	SPI_write(strobe);
	P_SCLK=0;
	P_SI=0;
	P_CSn=1;

}// halSpiStrobe



//-------------------------------------------------------------------------------------------------------
//  void halRfSendPacket(BYTE *txBuffer, UINT8 size)
//	發送數據包    
//  ARGUMENTS:
//      BYTE *txBuffer
//          Pointer to a buffer containg the data that are going to be transmitted
//
//      UINT8 size
//          The size of the txBuffer
//-------------------------------------------------------------------------------------------------------
BYTE halRfSendPacket(BYTE *txBuffer, UINT8 size) 
{
	//halSpiStrobe(CCxxx0_SFTX);//Modify by Jason Xiang 2006-9-26 16:24
	//Dly1mS(10);								//Modify by Jason Xiang 2006-9-26 16:24
	halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);
	Dly1mS(10);
	halSpiStrobe(CCxxx0_STX);
	
	TMR0=0; T0IF=0;
	while(spiGetRxTxStatus()&0x70)	
	{
		Dly1mS(2);
		if(T0IF)
		{ 
			halSpiStrobe(CCxxx0_SIDLE);//append by Jason Xiang	2006/08/21
			halSpiStrobe(CCxxx0_SFTX);//Modify by Jason Xiang 2006-10-19 13:59
			return 1;
		}	
			
	}

	return 0;
}// halRfSendPacket


/*BYTE halRfSendPacket(BYTE *txBuffer, UINT8 size) 
{
	halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);
	halSpiStrobe(CCxxx0_STX);
	while(!P_GDO0);
	while(P_GDO0);
	return 0;
}// halRfSendPacket*/

//-------------------------------------------------------------------------------------------------------
//  BOOL halRfReceivePacket(BYTE *rxBuffer, UINT8 *length)
//	接收數據包
//  
//  ARGUMENTS:
//      BYTE *rxBuffer
//          Pointer to the buffer where the incoming data should be stored
//      UINT8 *length
//          Pointer to a variable containing the size of the buffer where the incoming data should be
//          stored. After this function returns, that variable holds the packet length.
//          
//  RETURN VALUE:
//      BOOL
//          TRUE:   CRC OK
//          FALSE:  CRC NOT OK
//-------------------------------------------------------------------------------------------------------
BYTE halRfReceivePacket(BYTE *rxBuffer, UINT8 length) 
{
    BYTE status=0;
    UINT8 packetLength;
	status = halSpiReadStatus(CCxxx0_RXBYTES);
	if((status & 0x7F)==0x00) 
	{
		
		if(halSpiReadStatus(CCxxx0_MARCSTATE)!=0x0D) halSpiStrobe(CCxxx0_SRX);
		return 0;
	}
	TMR0=0; T0IF=0;
	while((halSpiReadStatus(CCxxx0_MARCSTATE)&0x1f)!=0x01) 
	{
		
		if(T0IF)
		{ 
			halSpiStrobe(CCxxx0_SFRX);
			return 0;
		}
	}
    packetLength = halSpiReadReg(CCxxx0_RXFIFO);
    
    if (packetLength == length) {
		halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); 
        
        halSpiStrobe(CCxxx0_SFRX);
        
        return 1;//(status & CRC_OK);
    } else {

		halSpiStrobe(CCxxx0_SFRX);
        return 0;
    }     
}// halRfReceivePacket




//-------------------------------------------------------------------------------------------------------
//  void RfWriteRfSettings()
//	配置RF寄存器
//  DESCRIPTION:
//      This function is used to configure the CCxxx0 based on a given rf setting
//
//  ARGUMENTS:
//      
//         
//-------------------------------------------------------------------------------------------------------
void halRfWriteRfSettings_CC1100() 
{
l_setCC1100:	
	halSpiWriteReg(CCxxx0_FSCTRL1, 0x0C);	
	halSpiWriteReg(CCxxx0_FSCTRL0, 0x00);	
	halSpiWriteReg(CCxxx0_FREQ2, 0x10);
	halSpiWriteReg(CCxxx0_FREQ1, 0xB0);
	halSpiWriteReg(CCxxx0_FREQ0, 0x71);
	halSpiWriteReg(CCxxx0_MDMCFG4, 0xC6);
	halSpiWriteReg(CCxxx0_MDMCFG3, 0x83); 
	halSpiWriteReg(CCxxx0_MDMCFG2, 0x02);
	halSpiWriteReg(CCxxx0_MDMCFG1, 0x22);
	halSpiWriteReg(CCxxx0_MDMCFG0, 0xF8);
	halSpiWriteReg(CCxxx0_CHANNR, 0x00);
	halSpiWriteReg(CCxxx0_DEVIATN, 0x30);
	halSpiWriteReg(CCxxx0_FREND1, 0x56);
	halSpiWriteReg(CCxxx0_FREND0, 0x10);
	halSpiWriteReg(CCxxx0_MCSM0, 0x18);
	halSpiWriteReg(CCxxx0_FOCCFG, 0x15);
	halSpiWriteReg(CCxxx0_BSCFG, 0x6C);
	halSpiWriteReg(CCxxx0_AGCCTRL2, 0x03);
	halSpiWriteReg(CCxxx0_AGCCTRL0, 0x91);
	halSpiWriteReg(CCxxx0_FSCAL3, 0xA9);
	halSpiWriteReg(CCxxx0_FSCAL2, 0x2A);
	halSpiWriteReg(CCxxx0_FSCAL0, 0x0D);
	halSpiWriteReg(CCxxx0_FSTEST, 0x59);
	halSpiWriteReg(CCxxx0_TEST2, 0x86);
	halSpiWriteReg(CCxxx0_TEST1, 0x3D);
	halSpiWriteReg(CCxxx0_TEST0, 0x09);
	halSpiWriteReg(CCxxx0_IOCFG2, 0x24);
	halSpiWriteReg(CCxxx0_IOCFG0, 0x06);
	halSpiWriteReg(CCxxx0_PKTCTRL1, 0x04);
	halSpiWriteReg(CCxxx0_PKTCTRL0, 0x05);
	halSpiWriteReg(CCxxx0_ADDR, 0x00);
	halSpiWriteReg(CCxxx0_PKTLEN, 0xFF);
   
	if(halSpiReadReg(CCxxx0_MDMCFG1)!=0x22)	
		goto l_setCC1100;
}


void halRfWriteRfSettings_CC2500() 
{
l_setCC2500:	
	halSpiWriteReg(CCxxx0_FSCTRL1, 0x0C);	
	halSpiWriteReg(CCxxx0_FSCTRL0, 0x00);	
	halSpiWriteReg(CCxxx0_FREQ2, 0x5D);
	halSpiWriteReg(CCxxx0_FREQ1, 0x93);
	halSpiWriteReg(CCxxx0_FREQ0, 0xB1);
	halSpiWriteReg(CCxxx0_MDMCFG4, 0x2D);
	halSpiWriteReg(CCxxx0_MDMCFG3, 0x3B); 
	halSpiWriteReg(CCxxx0_MDMCFG2, 0x73);
	halSpiWriteReg(CCxxx0_MDMCFG1, 0x22);
	halSpiWriteReg(CCxxx0_MDMCFG0, 0xF8);
	halSpiWriteReg(CCxxx0_CHANNR, 0x00);
	halSpiWriteReg(CCxxx0_DEVIATN, 0x00);
	halSpiWriteReg(CCxxx0_FREND1, 0x56);
	halSpiWriteReg(CCxxx0_FREND0, 0x10);
	halSpiWriteReg(CCxxx0_MCSM0, 0x18);
	halSpiWriteReg(CCxxx0_FOCCFG, 0x15);
	halSpiWriteReg(CCxxx0_BSCFG, 0x6C);
	halSpiWriteReg(CCxxx0_AGCCTRL2, 0xC3);
	halSpiWriteReg(CCxxx0_AGCCTRL0, 0x91);
	halSpiWriteReg(CCxxx0_FSCAL3, 0xEA);
	halSpiWriteReg(CCxxx0_FSCAL2, 0x0A);
	halSpiWriteReg(CCxxx0_FSCAL0, 0x11);
	halSpiWriteReg(CCxxx0_FSTEST, 0x59);
	halSpiWriteReg(CCxxx0_TEST2, 0x8F);
	halSpiWriteReg(CCxxx0_TEST1, 0x21);
	halSpiWriteReg(CCxxx0_TEST0, 0x0B);
	halSpiWriteReg(CCxxx0_IOCFG2, 0x29);
	halSpiWriteReg(CCxxx0_IOCFG0, 0x06);
	halSpiWriteReg(CCxxx0_PKTCTRL1, 0x04);
	halSpiWriteReg(CCxxx0_PKTCTRL0, 0x05);
	halSpiWriteReg(CCxxx0_ADDR, 0x00);
	halSpiWriteReg(CCxxx0_PKTLEN, 0xFF);
   
	if(halSpiReadReg(CCxxx0_MDMCFG1)!=0x22)	
		goto l_setCC2500;
}
//-------------------------------------------------------------
//	通過寫NOP獲得RF的狀態
//-------------------------------------------------------------
BYTE spiGetRxTxStatus(void) 
{
	unsigned char RxTxstatus;
	P_CSn = 0;
	while (P_SO);
	RxTxstatus=SPI_write(CCxxx0_SNOP);
	P_SCLK=0;
	P_SI=0;
	P_CSn=1;
    return(RxTxstatus);
} 

//----------------------------------------------------------------
//	復位RF
//----------------------------------------------------------------
void POWER_UP_RESET_CCxxx0() {
	unsigned char i; 
	halSpiStrobe(CCxxx0_SIDLE);
	P_CSn=1;
	for(i=0;i<5;i++);  
	P_CSn=0;
	for(i=0;i<5;i++);  
	P_CSn=1;
	for(i=0;i<200;i++);  
	P_CSn=0;
	while(P_SO);
	halSpiStrobe(CCxxx0_SRES);
	P_CSn=1;
	P_SCLK=0;
	P_SI=0;
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产网站一区二区| 欧美一区三区二区| 日韩—二三区免费观看av| 国产日产欧产精品推荐色| 91福利视频在线| 国产美女一区二区三区| 天天综合色天天| 最好看的中文字幕久久| 国产亚洲一二三区| 91麻豆精品91久久久久同性| 91捆绑美女网站| 国产成人精品亚洲777人妖 | 国产亚洲精品资源在线26u| 欧美在线看片a免费观看| 波多野结衣的一区二区三区| 国产精品自在欧美一区| 麻豆国产91在线播放| 亚洲国产精品久久艾草纯爱| 玉米视频成人免费看| 国产精品久久久久久久久快鸭 | 一区二区在线观看免费视频播放| 久久久久久久性| 日韩精品一区二区三区四区| 欧美日韩在线免费视频| 色哟哟国产精品| 91日韩在线专区| 成人性生交大片免费| 风间由美一区二区三区在线观看 | 亚洲四区在线观看| 久久久精品人体av艺术| 久久精品夜色噜噜亚洲a∨| 久久婷婷成人综合色| 欧美xxxxxxxx| 久久一留热品黄| 精品日韩欧美一区二区| 精品免费日韩av| 精品免费国产一区二区三区四区| 欧美成va人片在线观看| 久久久久久综合| 中文在线一区二区| 国产精品初高中害羞小美女文| 国产精品成人在线观看| 亚洲欧美一区二区久久| 亚洲一二三区在线观看| 日韩精品乱码av一区二区| 日韩在线观看一区二区| 久草精品在线观看| 国产精品一区三区| 成人性生交大片免费看视频在线 | 亚洲欧美aⅴ...| 一区二区三区中文字幕精品精品 | 欧美羞羞免费网站| 欧美疯狂做受xxxx富婆| 欧美一级高清片| 亚洲精品一区二区三区福利| 欧美国产欧美亚州国产日韩mv天天看完整| 中文字幕免费观看一区| 亚洲美女电影在线| 秋霞av亚洲一区二区三| 国产乱码精品一区二区三区忘忧草| 国产成人久久精品77777最新版本| 99re6这里只有精品视频在线观看| 色哟哟国产精品免费观看| 在线成人av影院| 亚洲精品在线免费播放| 国产精品国产三级国产aⅴ中文 | 毛片av一区二区| 国产精品1区2区3区在线观看| 91啪在线观看| 欧美疯狂性受xxxxx喷水图片| 精品成人在线观看| 亚洲视频一区二区在线| 日本视频一区二区| 成人免费视频视频在线观看免费| 欧美色图片你懂的| 久久久久久麻豆| 洋洋av久久久久久久一区| 九色|91porny| 99re这里都是精品| 欧美草草影院在线视频| 亚洲色图.com| 国内成人免费视频| 欧美性猛交xxxxxx富婆| 久久久99久久| 午夜免费欧美电影| av综合在线播放| 欧美一区二区三区不卡| 中文字幕视频一区| 久久成人久久爱| 欧美视频中文字幕| 中文字幕永久在线不卡| 毛片一区二区三区| 欧美亚洲自拍偷拍| 国产精品麻豆久久久| 美女免费视频一区二区| 日本道色综合久久| 久久精品人人做| 美女精品一区二区| 欧美日韩精品一区二区三区四区| 国产农村妇女毛片精品久久麻豆 | 91麻豆精品秘密| 国产天堂亚洲国产碰碰| 麻豆精品一区二区综合av| 91国偷自产一区二区三区成为亚洲经典 | 国产成人免费视频| 欧美一级黄色片| 亚洲综合色婷婷| av电影在线观看不卡| 久久亚区不卡日本| 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久国产尿小便嘘嘘| 欧美日韩国产美| 亚洲精品视频一区二区| jizzjizzjizz欧美| 久久精品夜色噜噜亚洲a∨| 久久国产成人午夜av影院| 欧美人xxxx| 亚洲国产视频在线| 在线观看一区日韩| 亚洲三级在线观看| 91香蕉视频黄| 国产精品免费视频观看| 国产成人免费高清| 久久精品亚洲麻豆av一区二区 | 日韩精品三区四区| 欧美日韩亚洲不卡| 亚洲一区二区三区四区在线| 91国偷自产一区二区三区观看| 亚洲欧美视频一区| 日本乱码高清不卡字幕| 亚洲精品第1页| 欧美三级三级三级爽爽爽| 一区二区三区四区乱视频| 色婷婷久久久亚洲一区二区三区| 亚洲日本在线视频观看| 91免费在线播放| 一区二区三区精品在线| 欧美午夜电影一区| 婷婷成人激情在线网| 日韩欧美国产午夜精品| 久久99精品一区二区三区| 久久综合视频网| 东方aⅴ免费观看久久av| 国产蜜臀97一区二区三区| 99久久婷婷国产| 一区二区三区影院| 91麻豆精品91久久久久久清纯 | 国产精品一区二区果冻传媒| 久久久不卡影院| 99这里只有久久精品视频| 亚洲精品成a人| 欧美日韩国产首页在线观看| 蜜臀99久久精品久久久久久软件| 精品1区2区在线观看| 成人精品亚洲人成在线| 玉米视频成人免费看| 在线播放亚洲一区| 激情小说欧美图片| 中文字幕中文字幕中文字幕亚洲无线| 一本色道久久综合精品竹菊| 亚洲v日本v欧美v久久精品| 欧美一级午夜免费电影| 国产精品中文字幕日韩精品| 亚洲欧美自拍偷拍| 欧美高清视频不卡网| 国产精品香蕉一区二区三区| 国产精品高清亚洲| 欧美日本视频在线| 国产不卡在线视频| 一区二区在线电影| 日韩欧美国产成人一区二区| jizzjizzjizz欧美| 全国精品久久少妇| 日韩一区欧美一区| 日韩三级电影网址| 国产成人免费高清| 五月开心婷婷久久| 欧美国产一区二区| 欧美日韩综合色| 国产成人无遮挡在线视频| 亚洲高清三级视频| 国产精品午夜在线观看| 欧美精品在线观看播放| 大陆成人av片| 日日欢夜夜爽一区| 成人欧美一区二区三区1314| 欧美岛国在线观看| 欧美丝袜第三区| 成人v精品蜜桃久久一区| 天天影视网天天综合色在线播放| 日本一区二区三区电影| 91精品国产综合久久久蜜臀图片| 成人福利电影精品一区二区在线观看| 三级久久三级久久久| 中文字幕在线视频一区| 欧美精品一区二区三区蜜桃| 欧美色区777第一页| 99国产精品99久久久久久| 国产一区二区电影| 人人精品人人爱|