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

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

?? uart_to_twi_m8_組合.c

?? AVR單片機的T_TO_TWI通訊方式
?? C
字號:
/*****************************************************************
ICC-AVR application builder : 2005-8-19 14:40:53
 Target : M8
 Crystal: 7.3728Mhz
// Crystal: 4.6080Mhz

實驗:做usart串行通訊實驗
目的:了解及會使用usart串口
CPU:atmega8L
相關的5個寄存器:UCSRA,UCSRB,UCSRC,UDR,UBRR(UBRRH,UBRRL)
	         其中:UBRRH和UCSRC共用一個地址
******************************************************************/
/*配置:CKOPT=0,CKSEL3..0=1111,SUT1..0=11(65ms慢速上升電源)*/
#include <iom8v.h>
#include <macros.h>

#define test

#define LED_ON   1
#define LED_OFF  0

#define IO_OUT_MAIN_LED   3 //PD3 pin1
#define IO_OUT_SLAVE_LED  2 //PD2 pin32

#define  Main_Led_Off()    PORTD |= BIT(IO_OUT_MAIN_LED)
#define  Slave_Led_Off()   PORTD |= BIT(IO_OUT_SLAVE_LED)
#define  Main_Led_On()     PORTD &= ~BIT(IO_OUT_MAIN_LED)
#define  Slave_Led_On()    PORTD &= ~BIT(IO_OUT_SLAVE_LED)
//usart
#define  Fosc_4608  // 選擇4.608M晶振crystal
#define  true    1
#define  false   0

#ifdef  Fosc_73728
#define baudrate   47   //波特率為9600b/s    0<baudrate<255
#endif
#ifdef  Fosc_4608
#define baudrate  29 //波特率為9600b/s     0<baudrate<255
#endif
/* UART Buffer Defines */
#define UART_RX_BUFFER_SIZE 127
#define UART_TX_BUFFER_SIZE 127


//TWI
#define START 0x08 
#define RE_START 0x10
#define MT_SLA_ACK 0x18
#define MT_SLA_NOACK 0x20
#define MT_DATA_ACK  0x28
#define MT_DATA_NOACK 0x30
#define MR_SLA_ACK  0x40
#define MR_SLA_NOACK 0x48
#define MR_DATA_ACK 0x50
#define MR_DATA_NOACK 0x58
//常用TWI操作(主模式寫和主模式讀)
#define Start()    	  (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))
#define Stop()     	  (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))
#define Wait()	   	      while(!(TWCR&(1<<TWINT)))WDR()
#define TestAck() 	  (TWSR&0xf8)
#define SetAck()	      (TWCR|=(1<<TWEA))
#define SetNoAck()      (TWCR&=~(1<<TWEA))
#define Twi()	  	      (TWCR=(1<<TWEA)|(1<<TWINT)|(1<<TWEN))//含有響應位
#define Write8Bit(x)    {TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);}



#define DEVICE_ADR  0x22

void check_I2C(void);
void init_data(void);
void port_init(void);
void init_devices(void);
void timer0_init(void);
void check_watchdog(void);
void process_data_pack(void);
void twi_transmint(void);
void watchdog_init(void);
void check_main_led(void);
void check_slave_led(void);
void ascii_to_hex(void);

unsigned char Twi_Hex_Data[3];
unsigned char Twi_ASCI_Data[6];
unsigned char Twi_Write_Flag,Twi_Read_Flag;
unsigned char Twi_ASCI_Data_Flag,Twi_Hex_Data_Flag;
//LED指示燈
unsigned char Slave_Led_Status;
unsigned char Main_Led_Status,Cur_Main_Led_Status,Count_10ms;
//usart
unsigned char UART_RX_buff[UART_RX_BUFFER_SIZE];
unsigned char UART_TX_buff[UART_TX_BUFFER_SIZE];
unsigned char Rx_Flag;
unsigned char Rx_Temp,Rx_Count;
unsigned char Rx_Start_Pack_Flag,Rx_Over_Pack_Flag;

unsigned char Write_Error[5] = {'x','w','4','0','x'};
unsigned char Read_Error[5]  = {'x','w','8','0','x'};



void main(void)
{
	init_devices();
	init_data();
    
	USART_Transmit( "read go!" );//用來指示,是不是看門狗復位
	while(1)  //forever
	   {
	      //while(1);
		  UART_Receive();
		 // while(1)WDR();
		  check_watchdog();//喂狗
	      process_data_pack();//解包
		  twi_transmint();
	      //while(1)WDR();
		  check_main_led();
		}
       
}
//>>>>>>>>>>>>>>>>>>>>>>>>解包
void process_data_pack(void)
{
   unsigned char cnt,dat;
   
   if(Rx_Over_Pack_Flag == true)
    {   
	    //從燈
		Slave_Led_Status = LED_ON;
		check_slave_led();//先讓通訊亮一下
		Rx_Over_Pack_Flag = false;
		Slave_Led_Status = LED_OFF;
		
		if(UART_RX_buff[1] == 0x57)
		{
		   for(cnt =0;cnt<6;cnt++)
		    {
			   dat = UART_RX_buff[cnt+2];
			   if((dat >= 0x30)&&(dat <=0x39))
			    {
				  Twi_ASCI_Data[cnt] = dat - 0x30;
				}
			   else if((dat>=0x41)&&(dat<=0x46))
			    {
				  Twi_ASCI_Data[cnt] = dat - 0x37;//如果是字母,那么減去0x37
				}
		    }
			ascii_to_hex();//組合成數據
		   Twi_Write_Flag = true;
		}
		if(UART_RX_buff[1] == 0x52)
		{
		   for(cnt =0;cnt<4;cnt++)
		    {
			   dat = UART_RX_buff[cnt+2];
			   if((dat >= 0x30)&&(dat <=0x39))
			    {
				  Twi_ASCI_Data[cnt] = dat - 0x30;
				}
			   else if((dat>=0x41)&&(dat<=0x46))
			    {
				  Twi_ASCI_Data[cnt] = dat - 0x37;//如果是字母,那么減去0x37
				}
		    }
			ascii_to_hex();
		   Twi_Read_Flag = true;
		}
		Twi_Hex_Data_Flag = true;
		//處理完,先把數據放在UART_TX_buff[]綬沖區,且接收綬沖區清零
		/*for(cnt=0;cnt<9;cnt++)
		{
		   UART_TX_buff[cnt] = UART_RX_buff[cnt];
		   UART_RX_buff[cnt] = 0;
		}*/
		
	}
}
//繼續解包,=>兩個ASCII碼組成一個數
void ascii_to_hex(void)
{
    unsigned char cnt,i;
   
	for(cnt=0,i=0;cnt<6;cnt++,cnt++,i++)
	{
	  Twi_Hex_Data[i] = Twi_ASCI_Data[cnt+1];//先放ASCII的高位(四位)
	  Twi_Hex_Data[i] <<= 4;
	  Twi_Hex_Data[i] += Twi_ASCI_Data[cnt];
	}
}
void hex_to_ascii(unsigned char dat)
{
    unsigned char dat_buff;
  
    dat_buff = dat;
    dat = dat&0x0f;
    if((dat>=0)&&(dat<=9))
    {
       dat += 0x30;
    }
    else
       dat += 0x37;
	UART_TX_buff[7] = dat;
	  
    dat = dat_buff;
	dat >>= 4;
	dat = dat&0x0f;
    if((dat>=0)&&(dat<=9))
    {
      dat += 0x30;
    }
    else
      dat += 0x37;
	UART_TX_buff[8] = dat;
}
//<<<<<<<<<<<<<<<<<<<<<
/***********************************************************************
通用的hex轉成ascii
************************************************************************/
unsigned char general_hex_to_ascii(unsigned char dat)
{
    dat = dat & 0x0f;
    if((dat >= 0)&&(dat <= 9))
    {
	  dat = dat + 0x30;
	}
	else if((dat>='A')&&(dat<='F'))
	{
	  dat += dat + 0x37;
	}
	return dat;
}

//>>>>>>>>>>>>>>>>做包
void twi_transmint(void)
 {
    unsigned char dat1,dat2;
	unsigned char dat1_buff;
  
    if(Twi_Hex_Data_Flag == true)
    {
	    
	    Twi_Hex_Data_Flag = false;
		if(Twi_Write_Flag == true)
		{
		    Twi_Write_Flag = false;
	        dat1 = twi_Write(Twi_Hex_Data[0],Twi_Hex_Data[1],Twi_Hex_Data[2]);
		
		    #ifdef test
		    dat1_buff = dat1;
		    dat1 >>= 4;
		    dat1 = dat1 & 0x0f;
		    dat1 = general_hex_to_ascii( dat1 );
			USART_TransmitByte(dat1);
			dat1 = dat1_buff;
			dat1 = dat1 & 0x0f;
			dat1 = general_hex_to_ascii( dat1 );
			USART_TransmitByte(dat1);
			#endif
		
			if(dat1 == 0)
			{
				USART_Transmit(UART_RX_buff);//寫成功
			}
			else
			{
				USART_Transmit(Write_Error);//寫不成功
			}	
	    
			#ifdef test 
			USART_Transmit("ok!");
			//while(1)WDR();
			#endif
		}
		if(Twi_Read_Flag == true)
        {
			#ifdef test
			USART_TransmitByte((Twi_Read_Flag+0x30));
			USART_Transmit("yes or no?");
			#endif
		
			Twi_Read_Flag = false;
			dat2 = twi_Read(Twi_Hex_Data[0],Twi_Hex_Data[1]);
			if(dat2 == 0)
			{
				USART_Transmit(Read_Error);//讀失敗
				#ifdef test
				USART_Transmit("here!");
				#endif
			}
			else
			{
				hex_to_ascii(dat2);//讀成功 且讀的數在dat2中
				USART_Transmit(UART_RX_buff);
			}
		
			#ifdef test
			USART_Transmit("verify again!");
			#endif
		}
	}
 }

void init_data(void)
{
   Twi_Write_Flag     = false;
   Twi_Read_Flag      = false;
   Twi_Hex_Data_Flag  = false;      
   Twi_ASCI_Data_Flag = false;
   Slave_Led_Status   = LED_OFF;
   Main_Led_Status    = LED_OFF;
   Cur_Main_Led_Status= LED_OFF;
   Count_10ms         = 0;
   WDR();
}
void port_init(void)
{
 PORTB = 0x3F;
 DDRB  = 0x00;
 PORTC = 0x4F; //m103 output only
 DDRC  = 0x00;
 PORTD = 0xFC;
 DDRD  = 0x00;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
 //stop errant interrupts until set up
 CLI(); //disable all interrupts
 port_init();
 uart0_init();
 twi_init();
 timer0_init();
 watchdog_init();

 MCUCR = 0x00;
 GICR  = 0x00;
 TIMSK = 0x00; //timer interrupt sources
 SEI(); //re-enable interrupts
 //all peripherals are now initialized
}
void check_watchdog(void)
{
 	WDR();//喂狗
}
void watchdog_init(void)
{
 WDR();//看門狗計數清零
 WDTCR=((1<<WDE)|(1<<WDP2)|(1<<WDP0));//64K分頻,0.52S
 //WDIE是看門狗中斷使能,WDE看門狗使能 101 512k
}

//TIMER0 initialize - prescale:256
// desired value: 100Hz
// actual value: 100.000Hz (0.0%)
void timer0_init(void)
{
 TCCR0 = 0x00; //stop
 TCNT0 = 0x4C; //set count
 TCCR0 = 0x04; //start timer
}

#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
    TCNT0 = 0x4C; //reload counter value
    //主燈
    Count_10ms++;
    if((Count_10ms>0)&&(Count_10ms<5))
    {
       Cur_Main_Led_Status = LED_ON;
	}
    if((Count_10ms>5)&&(Count_10ms<10))
    {
      Cur_Main_Led_Status = LED_OFF;
    }
}
void check_main_led(void)
{
   if(Main_Led_Status != Cur_Main_Led_Status)
   {
 	  if(Main_Led_Status == LED_ON) 	   Main_Led_Off();
	  else		   	  		   	   Main_Led_On();
	  Main_Led_Status = Cur_Main_Led_Status;
   }
}
void check_slave_led(void)
{
    if(Slave_Led_Status == LED_ON) 
    {
      Slave_Led_On();
	}
	else		   	  		   	  
    {
      Slave_Led_Off();
    }
}

void twi_init(void)
{
 TWCR= 0X00; //disable twi
 TWBR= 0x20; //set bit rate
 TWSR= 0x00; //set prescale
 TWAR= DEVICE_ADR; //set slave address
 TWCR= 0x44; //enable twi 置位TWEA,TWEN TWIE
}
/******************************************
                I2C總線寫一個字節
			    返回0:       寫成功
				返回錯誤狀態字:寫失敗
*******************************************/
unsigned char twi_Write(unsigned char wr_device_add,unsigned char RamAddress,unsigned char Wdata) 
{
	  Start();//I2C啟動
	  Wait(); //等TWINT置位
	  if(TestAck()!=START) return TestAck();//ACK
	  Write8Bit(wr_device_add);//寫I2C從器件地址和寫方式
	  Wait();
	  if(TestAck()!=MT_SLA_ACK) return TestAck();//ACK
	  Write8Bit(RamAddress);//寫RAM地址
	  Wait();
	  if(TestAck()!=MT_DATA_ACK) return TestAck();//ACK
	  Write8Bit(Wdata);//寫數據
	  Wait();
	  if(TestAck()!=MT_DATA_ACK) return TestAck();//ACK	
	  Stop();//I2C停止
 	  delay_ms(10);//延時等寫完
	  return 0;
}
/******************************************
               I2C總線讀一個字節
			   如果讀失敗也返回0
*******************************************/
unsigned char twi_Read(unsigned char rd_device_add,unsigned char RamAddress) 
    {
	   unsigned char temp;
	   Start();//I2C啟動
	   Wait();
	   if (TestAck()!=START) return 0;//ACK	   
	   Write8Bit(rd_device_add);//寫I2C從器件地址和寫方式
	   Wait(); 
	   if (TestAck()!=MT_SLA_ACK) return 0;//ACK
	   Write8Bit(RamAddress);//寫RAM地址
	   Wait();
	   if (TestAck()!=MT_DATA_ACK) return 0;
	   Start();//I2C重新啟動
	   Wait();
	   if (TestAck()!=RE_START)  return 0;
	   Write8Bit(rd_device_add+1);//寫I2C從器件地址和讀方式
	   Wait();
	   if(TestAck()!=MR_SLA_ACK)  return 0;//ACK
	   Twi();//啟動主I2C讀方式,且設為準備響應
	   Wait();
	   if(TestAck()!=MR_DATA_NOACK) return 0;//ACK	
	   temp=TWDR;//讀取I2C接收數據
       Stop();//I2C停止
	   return temp;
    }
#pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{
   //uart has received a character in UDR
  
	UART_RX_buff[Rx_Count] = UDR;
    Rx_Count = Rx_Count+1;
    if(Rx_Count == 9)
       {
          Rx_Flag  = true; 
	      //USART_TransmitByte((Rx_Count+0x30));
		  Rx_Count = 0;
		  //上位機在這時候要停一會兒,才能發第二串數據
	   }
	//USART_TransmitByte((Rx_Count+0x30));
}

//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9600 (0.0%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
 Rx_Count = 0;
 Rx_Flag  = false;
 Rx_Start_Pack_Flag = false;
 Rx_Over_Pack_Flag  = false;
 //本身的uart的初始化
 UCSRB = 0x00; //disable while setting baud rate
 //UCSRB[RXCIE,TXCIE,UDRIE,RXEN,TXEN,UCSZ2,RXB8,TXB8]
 //Bit 7 – RXCIE: RX Complete Interrupt Enable

 UCSRA = 0x00;
 //UCSRA[RXC,TXC,UDRE,FE,DOR,PE,U2X,MPCM]
 
 UCSRC = (BIT(URSEL)|BIT(UCSZ1)|BIT(UCSZ0));//設置成8位
 //UCSRC[URSEL,UMSEL,UPM1,UPM0,USBS,UCSZ1,UCSZ0,UCPOL]
 //位URSEL:寄存器選擇("1"為UCSRC或"0"為UBRRH)
 //位UMSEL:工作模式選擇(0為異步,1為同步)
 //位UPM1..0:為校驗方式,硬件支持校驗
 //位USBS:停止位選擇(0為一位,1為兩位)
 //位UCSZ0..2:發送位數選擇(如果是8位:011)
 //位UCPOL:時鐘極性(只在同步模式使用,異步應置為"0")
 
 UBRRL = baudrate; //set baud rate lo
 UBRRH = 0x00; //set baud rate hi(設置波特率只用低四位,加起來一共12位)
 //UBRR = baudrate; /* set the baud rate */

 UCSRB = ((1<<RXCIE)|(1<<RXEN)|(1<<TXEN));
}
/************************************************************************
接收時采用中斷方式,,,以"包"為單位接收(9個字符)
*************************************************************************/
void UART_Receive(void)
{
   if(Rx_Flag == true)
    {
   		Rx_Flag = false;
		
		if((UART_RX_buff[0] == 0x58)&&(UART_RX_buff[8] == 0x58))//0x58  = 'w'
        {
			Rx_Over_Pack_Flag  = true;      //這個標志,可以讓主函數去查
			//Rx_Count = 0;//接收計數器清零
		}
		//USART_TransmitByte('p');//接收一包完,就發一個信號叫上機暫停發

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久永久免费观看| 国产精品久久久久久久裸模| av亚洲产国偷v产偷v自拍| 亚洲综合视频在线观看| 精品福利一二区| 欧美在线free| 成人黄动漫网站免费app| 蜜臀久久99精品久久久久宅男| 国产精品三级av| 欧美一级精品大片| 一本一道波多野结衣一区二区| 极品美女销魂一区二区三区免费| 亚洲综合一二区| 国产精品狼人久久影院观看方式| 欧美成人精品高清在线播放| 在线免费一区三区| 成人av午夜电影| 国产一区二区三区精品视频| 天堂在线一区二区| 欧美一区二区三区在线观看 | 日本女人一区二区三区| 国产精品国产三级国产aⅴ无密码| 日韩一区二区三区电影| 欧美性猛片aaaaaaa做受| 99久久免费精品高清特色大片| 国产真实精品久久二三区| 丝袜美腿一区二区三区| 亚洲一区二区3| 亚洲欧美色图小说| 国产精品久久久久9999吃药| 国产女人水真多18毛片18精品视频| 日韩精品一区二区在线| 91精品国产综合久久香蕉麻豆 | 精品国产一区二区亚洲人成毛片| 欧美日韩国产综合久久| 欧美午夜在线一二页| 色婷婷精品大在线视频| 色哟哟一区二区三区| 91在线你懂得| 色呦呦日韩精品| 91久久精品一区二区三| 在线观看日韩精品| 欧美无砖专区一中文字| 欧美日韩在线三级| 9191久久久久久久久久久| 欧美日韩国产免费| 日韩三级免费观看| 精品国产免费久久| 久久久不卡影院| 中文字幕va一区二区三区| 国产精品久久毛片a| 国产精品第一页第二页第三页| 国产精品久久久久久久浪潮网站| 中文字幕一区在线| 一区二区免费看| 丝袜诱惑亚洲看片| 久久99国产精品尤物| 国产精品亚洲午夜一区二区三区| 国产成人av一区二区三区在线观看| 国产成人a级片| 91麻豆国产福利在线观看| 欧美偷拍一区二区| 欧美一区二区大片| 久久久久久久电影| 日韩美女精品在线| 亚洲高清免费观看| 精品一区二区免费| 成人精品亚洲人成在线| 色婷婷一区二区| 3atv一区二区三区| 久久精品视频一区二区| 国产精品成人免费| 午夜精品福利在线| 国产一区二区三区在线观看免费视频| 国产91精品露脸国语对白| 在线观看不卡一区| 欧美不卡一二三| 国产精品视频观看| 亚洲成人av资源| 国产精品一区三区| 欧美亚洲国产怡红院影院| 精品国产免费久久 | 蜜臀av性久久久久蜜臀aⅴ流畅| 狠狠色丁香久久婷婷综合丁香| 成年人国产精品| 欧美喷水一区二区| 中文字幕一区二区日韩精品绯色| 亚洲va欧美va人人爽| 国产成人av电影| 91精品国产麻豆| 中文字幕一区二区三区精华液| 日日骚欧美日韩| 暴力调教一区二区三区| 正在播放亚洲一区| 一区二区三区影院| 国产精品系列在线观看| 欧美精品一级二级三级| 国产精品久久久爽爽爽麻豆色哟哟| 日韩 欧美一区二区三区| www.av精品| 欧美精品一区二区精品网| 亚洲一区免费视频| 成人黄色网址在线观看| 欧美精品一区二区三区很污很色的| 日韩理论片一区二区| 国产精品主播直播| 91精品在线麻豆| 一区二区三区美女视频| 成人美女在线观看| 欧美tk丨vk视频| 五月天亚洲婷婷| 色婷婷综合久色| 国产精品无码永久免费888| 麻豆精品在线播放| 欧美电影一区二区三区| 一区二区三区电影在线播| 成人18视频在线播放| 国产色一区二区| 国产一区999| 精品女同一区二区| 麻豆精品精品国产自在97香蕉| 欧美午夜在线一二页| 一区二区三区国产精华| 99久久综合99久久综合网站| 国产蜜臀97一区二区三区| 极品瑜伽女神91| 日韩午夜在线观看视频| 秋霞午夜av一区二区三区| 欧美日韩国产片| 午夜精品久久一牛影视| 欧美少妇一区二区| 亚洲综合激情另类小说区| 色综合视频一区二区三区高清| 欧美高清在线一区二区| 丁香婷婷深情五月亚洲| 国产日产欧美一区| 成人h精品动漫一区二区三区| 国产亚洲精品资源在线26u| 国产乱码精品一区二区三区忘忧草| www欧美成人18+| 国产精品正在播放| 国产精品少妇自拍| av网站一区二区三区| 亚洲人吸女人奶水| 色老汉一区二区三区| 亚洲一二三区视频在线观看| 欧美视频一区二区三区在线观看| 亚洲一区二区成人在线观看| 欧美人妇做爰xxxⅹ性高电影| 免费成人你懂的| 精品美女在线观看| 国产不卡视频一区二区三区| 中文字幕不卡三区| 91麻豆蜜桃一区二区三区| 亚洲国产日韩精品| 欧美v日韩v国产v| 国产精品自拍一区| 18成人在线观看| 欧美午夜精品免费| 美国十次了思思久久精品导航| 精品国产成人系列| 丁香婷婷深情五月亚洲| 亚洲人成网站精品片在线观看| 欧美在线色视频| 精品一区二区三区欧美| 欧美国产欧美综合| 色先锋aa成人| 蜜桃视频在线一区| 中文一区二区在线观看| 色婷婷综合五月| 久久激情综合网| 国产精品久久免费看| 7799精品视频| 国产ts人妖一区二区| 一区二区激情视频| 精品久久五月天| eeuss鲁片一区二区三区在线观看| 亚洲一区二区黄色| 久久久久亚洲蜜桃| 91成人国产精品| 国产一区视频网站| 亚洲在线视频免费观看| 91精品国产品国语在线不卡| 风间由美一区二区av101 | 久久久综合精品| 色悠悠亚洲一区二区| 国产毛片一区二区| 亚洲精品免费在线| 久久影院视频免费| 欧美日韩免费一区二区三区视频| 国产一区二区三区四区五区美女| 亚洲精品伦理在线| 久久久精品免费观看| 欧美日韩精品欧美日韩精品一综合| 国产高清无密码一区二区三区| 亚洲一区二区成人在线观看| 国产精品全国免费观看高清 | 日日夜夜精品视频免费| 中文字幕一区二区视频| 欧美v亚洲v综合ⅴ国产v|