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

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

?? can.c.bak

?? ARM9200的can驅動原程序
?? BAK
字號:
/*****************************************************************************
;Institue of Automation, Chinese Academy of Sciences
;Beijing Hengyi Embedded System Co.,Ltd (www.hyesco.com)
;File Name:		
;Description:   source for can sja1000
;Date:			2006-03-15		
;Author:		Wujh origin from jzm
;E_mail:		wujh@hyesco.com
*****************************************************************************/
#include "can.h"
#include <stdlib.h>
#include <string.h>

extern void AT91F_DBGU_Printk(char *buf,...);

//發(fā)送緩存,接受緩存
unsigned char TXdata[12]={3,4,5,6,7,8,9,10,11,12,13,14};
unsigned char RXdata[100];

unsigned char bNewData=0;//接收到新的數(shù)據(jù)
unsigned char NewDataLength=0;//接收到新的數(shù)據(jù)長度
unsigned char NewDataMode=0;//接收到新的數(shù)據(jù)格式

//定義了16M晶體下,波特率預設值
unsigned char SJA_BTR_CODETAB[]={
    0x18,0x1C,		               //;20KBPS的預設值
    0x87,0xFF,                     //;40KBPS的預設值
    0x09,0x1C,                     //;50KBPS的預設值
    0x83,0xFF,                     //;80KBPS的預設值
    0x04,0x1C,                     //;100KBPS的預設值
    0x03,0x1c,                     //;125KBPS的預設值
    0X81,0xfa,                     //;200KBPS的預設值
    0x01,0x1c,                     //;250KBPS的預設值  
    0x80,0xfa,		               //;400KBPS的預設值
    0x00,0x1c,                     //;500KBPS的預設值
    0x80,0xb6,                     //;666KBPS的預設值
    0x00,0x16,                     //;800KBPS的預設值
    0x00,0x14,                     //;1000KBPS的預設值   
};

#define  BTR_INDEX           0

//延時函數(shù)
void Delay(char x,char y)
{
    char z;
    
    do {
    z=y;
    do {; } while(--z);
    }while(--x);
    
}

//寫can寄存器
void Write_CAN_REG(unsigned char can_reg_addr, 	unsigned char data)
{


	WRITE_CAN_ADDR(can_reg_addr);//寫寄存器抵制
	WRITE_CAN_DATA(data);//寫數(shù)據(jù)
	
}

//讀CAN寄存器
unsigned char Read_CAN_REG(unsigned char can_reg_addr)
{
	unsigned char data;

	WRITE_CAN_ADDR(can_reg_addr);//寫寄存器抵制
	data=READ_CAN_REG();

	return data;	
	
}

//初始化can
/*
初始化程序主要完成以下寄存器的設計:
(1)通過對SJA1000的時鐘分頻寄存器定義,判斷是使用BassicCAN模式還是使用PeliCAN模式;
是否使能CLOCKOUT及輸出時鐘頻率;是否使用旁路CAN輸入比較器;
TX1輸出是否采用專門的接收中斷。
(2)通過寫驗收碼寄存器和驗收屏蔽寄存器定義接收報文的驗收碼,
以及對報文和驗收碼進行比較的相關位定義驗收屏蔽碼。
(3)通過寫總線定時寄存器定義總線的位速率、位周期內的采樣點和一個位周期內的采樣數(shù)量。
(4)通過寫輸出寄存器定義CAN總線輸出管腳TX0、TX1的輸出模式和輸出配置。
(5)清除SJA1000的復位請求標志,進入正常工作模式,這樣SJA1000方可進行報文的發(fā)送和接收。
*/
unsigned char Init_CAN(void)
{
	unsigned char reg;
	int i;
	unsigned char ucFlag;

	
	//檢測sja1000存在
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_TEST,0x5a);
		reg=Read_CAN_REG(CAN_REG_TEST);
		if(reg==0x5a)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_NO_CAN;//沒有找到sja1000



	//初始化模式寄存器進入復位模式,選擇單濾波方式
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_MOD,0x01);
		reg=Read_CAN_REG(CAN_REG_MOD);
		if(reg	& 0x01)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_RESET;//進入復位狀態(tài)

	
	
	//設置總線控制,btr0
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_BTR0,SJA_BTR_CODETAB[BTR_INDEX]);//設置波特率,現(xiàn)在設置成20kbps
		reg=Read_CAN_REG(CAN_REG_BTR0);
		if(reg==SJA_BTR_CODETAB[BTR_INDEX])
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_BTR;
	
	//btr1
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_BTR1,SJA_BTR_CODETAB[BTR_INDEX+1]);
		reg=Read_CAN_REG(CAN_REG_BTR1);
		if(reg==SJA_BTR_CODETAB[BTR_INDEX+1])
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_BTR;//錯誤返回錯誤代碼


	//設置輸出控制
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_OCR,PARAM_OCR);//設置成正常模式,0xda
		reg=Read_CAN_REG(CAN_REG_OCR);
		if(reg==PARAM_OCR)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_OCR;

	//時鐘分頻器
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_CDR,PARAM_CDR);//設置成pelican模式,cbp=1,關閉時鐘輸出
		reg=Read_CAN_REG(CAN_REG_CDR);
		if(reg==PARAM_CDR)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_CDR;



	//接收錯誤計數(shù)器清零
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_RXERR,0x00);
		reg=Read_CAN_REG(CAN_REG_RXERR);
		if(reg==0x00)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_RXERR;

	//發(fā)送錯誤計數(shù)器清零
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_TXERR,0x00);
		reg=Read_CAN_REG(CAN_REG_TXERR);
		if(reg==0x00)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_TXERR;
	
	
	//初始化接收代碼寄存器	0x0000
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_ACR0,PARAM_ACR0);
		reg=Read_CAN_REG(CAN_REG_ACR0);
		if(reg==PARAM_ACR0)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_ACR;


	//ACR1
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_ACR1,PARAM_ACR1);
		reg=Read_CAN_REG(CAN_REG_ACR1);
		if(reg==PARAM_ACR1)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_ACR;

	//ACR2
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_ACR2,PARAM_ACR2);
		reg=Read_CAN_REG(CAN_REG_ACR2);
		if(reg==PARAM_ACR2)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_ACR;
	//ACR3
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_ACR3,PARAM_ACR3);
		reg=Read_CAN_REG(CAN_REG_ACR3);
		if(reg==PARAM_ACR3)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_ACR;

	//驗收屏蔽,0xffff
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_AMR0,PARAM_AMR0);
		reg=Read_CAN_REG(CAN_REG_AMR0);
		if(reg==PARAM_AMR0)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_AMR;
	//AMR1	
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_AMR1,PARAM_AMR1);
		reg=Read_CAN_REG(CAN_REG_AMR1);
		if(reg==PARAM_AMR1)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
	return ERROR_AMR;	
	
	//AMR2
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_AMR2,PARAM_AMR2);
		reg=Read_CAN_REG(CAN_REG_AMR2);
		if(reg==PARAM_AMR2)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_AMR;	

	//AMR3
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_AMR3,PARAM_AMR3);
		reg=Read_CAN_REG(CAN_REG_AMR3);
		if(reg==PARAM_AMR3)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_AMR;	
	
	//中斷
	//中斷使能寄存器
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_IER,PARAM_IER);
		reg=Read_CAN_REG(CAN_REG_IER);
		if(reg==PARAM_IER)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_IER;	
	
	//接收緩存器起始地址設為0
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_RBSA,PARAM_RBSA);
		reg=Read_CAN_REG(CAN_REG_RBSA);
		if(reg==PARAM_RBSA)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_RBSA;			
	
	//返回工作模式,選擇單濾波模式,
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_MOD,PARAM_RET_MOD);
		reg=Read_CAN_REG(CAN_REG_MOD);
		if((reg & 0x09)==0x08)
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return ERROR_MOD;	

	return 0;
}


//發(fā)送數(shù)據(jù)
int CAN_TRANSMIT(void)
{
	unsigned char reg;
	unsigned char ucFlag;//錯誤標志位
	int i;
	unsigned char ucRegTXSFF;

	//發(fā)送緩存器鎖定否
	ucFlag=1;
	for(i=0;i<REPEART_TIMES;i++)
	{
		reg=Read_CAN_REG(CAN_REG_SR);
		if((reg==0x0c))
		{
			ucFlag=0;
			break;
		}
	}
	if(ucFlag)
		return STATUS_TBS;
			
#ifndef SEND_EFF_DATA
	//寫TX楨信息SFF
	ucRegTXSFF=PARAM_DATA_LENGTH | PARAM_TX_FF_SFF;
	Write_CAN_REG(CAN_REG_TX_SFF,ucRegTXSFF);//發(fā)送數(shù)據(jù),數(shù)據(jù)長度8,標準楨格式

	//寫TX楨信息id0和id1
	Write_CAN_REG(CAN_REG_TX_ID0,PARAM_TX_ID0);//發(fā)送數(shù)據(jù)識別碼
	Write_CAN_REG(CAN_REG_TX_ID1,PARAM_TX_ID1);//發(fā)送數(shù)據(jù)識別碼
	//填寫發(fā)送數(shù)據(jù)緩存
	for(i=0;i<8;i++)
	Write_CAN_REG((CAN_REG_TX_SFF_BUFFER+i),TXdata[i]);//包頭
#else
	//寫TX楨信息SFF
	ucRegTXSFF=PARAM_DATA_LENGTH | PARAM_TX_FF_EFF;
	Write_CAN_REG(CAN_REG_TX_SFF,ucRegTXSFF);//發(fā)送數(shù)據(jù),數(shù)據(jù)長度8,EFF楨格式

	//寫TX楨信息id0和id1
	Write_CAN_REG(CAN_REG_TX_ID0,PARAM_TX_ID0);//發(fā)送數(shù)據(jù)識別碼
	Write_CAN_REG(CAN_REG_TX_ID1,PARAM_TX_ID1);//發(fā)送數(shù)據(jù)識別碼
	Write_CAN_REG(CAN_REG_TX_ID2,PARAM_TX_ID2);//發(fā)送數(shù)據(jù)識別碼
	Write_CAN_REG(CAN_REG_TX_ID3,PARAM_TX_ID3);//發(fā)送數(shù)據(jù)識別碼
	//填寫發(fā)送數(shù)據(jù)緩存
	for(i=0;i<8;i++)
	Write_CAN_REG((CAN_REG_TX_EFF_BUFFER+i),TXdata[i]);//包頭

#endif
	//發(fā)送數(shù)據(jù)
	Write_CAN_REG(CAN_REG_CMR,0x01);//正常發(fā)送數(shù)據(jù)
	
	//判斷發(fā)送數(shù)據(jù)失敗
	ucFlag=1;
	for(i=0;i<REPEART_TIMES*10;i++)
	{
		reg=Read_CAN_REG(CAN_REG_SR);
		if((reg & 0x08))
		{
			ucFlag=0;
			break;
		}
		Delay(200,200);
	}
	if(ucFlag)
		return STATUS_TCS;

	return 0;
	
}


//CAN接收數(shù)據(jù)
//can中斷分發(fā)向量函數(shù)
void Eint2CanInt(void)
{
         unsigned char reg,i;
         
    	//重新打開中斷
    	//ClearPending(BIT_EINT2);
    
    	//訪問地址指向狀態(tài)寄存器,判斷FIFO中的數(shù)據(jù)有沒有,其實在查詢的時候需要,在中斷的時候
    	//不需要
    	/*
    	reg=Read_CAN_REG(CAN_REG_SR);//            
   	if((reg&0x01)==0)              	 //判斷報文是否有效
   	{
      		exit(0);//
  	}*/
   
   	//讀出中斷狀態(tài)寄存器內容,判斷當前是那種中斷發(fā)生,并轉到響應的中斷處理
   	//當然必須在初始化過程中將相應的中斷屏蔽位打開了。
   	reg=Read_CAN_REG(CAN_REG_IR);//讀出中斷狀態(tài)寄存器內容
   	switch(reg)
   	{
   		//置位;當CAN控制器檢測到總線錯誤且中斷使能寄存器中的BEIE被置位時此位被置位
   		case 0x80:
   			break;//自己添加處理程序了
   		//置位;當CAN控制器丟失仲裁,變?yōu)榻邮掌骱椭袛嗍鼓芗拇嫫鞯腁LIE為被置位時,此位被置位
   		case 0x40:
   			break;//自己添加處理程序了
   		//置位;當CAN控制器到達錯誤消極狀態(tài)(至少一個錯誤計數(shù)器超過協(xié)議規(guī)定的值127)或從錯誤消極狀態(tài)又進入錯誤活動狀態(tài)以及中斷
		//寄存器的EPIE位被置位時此位被置1
   		case 0x20:
   			break;//自己添加處理程序了
   		//置位;當CAN控制器在睡眠模式中檢測到總線的活動且中斷寄存器的WUIE位被置1時此位被置位
   		case 0x10:
   			break;//自己添加處理程序了
   		//置位;數(shù)據(jù)溢出狀態(tài)位有0-1 跳變且中斷寄存器的DOIE位被置位時此位被置1
   		case 0x08:
   			break;//自己添加處理程序了
   		//置位;錯誤狀態(tài)位和總線狀態(tài)位的改變和中斷寄存器的EIE位被置位時此位被置1
   		case 0x04:
   			break;//自己添加處理程序了
   		//置位;發(fā)送緩沖器狀態(tài)從’0-1’(釋放)跳變且中斷寄存器的TIE位被置位時此位被置1
   		case 0x02:
   			break;//自己添加處理程序了
   		//置位;接收FIFO不空且中斷寄存器的RIE位被置位時此位被置1
   		case 0x01:
   			CanIntReceiveData();
   			break;
   	}
   	
   	/*
   	for(i=0;i<REPEART_TIMES;i++)
	{
		Write_CAN_REG(CAN_REG_IER,PARAM_IER);
		reg=Read_CAN_REG(CAN_REG_IER);
		if(reg==PARAM_IER)
		{
			break;
		}
	}*/
    
}
//響應中斷接受數(shù)據(jù)
void CanIntReceiveData(void)
{
	unsigned  char  TempCount; 
        unsigned char reg;
        unsigned char i;
   	//判斷楨信息SFF,EFF OR SFF
   	reg=Read_CAN_REG(CAN_REG_RX_SFF);
   	if((reg&0x80)==0x80)//eff,楨
   	{
   		if((reg & 0x40)==0x40)//遠程楨
    			TempCount=2;////遠程楨
   		else
   			TempCount=(reg & 0x0f)+4;////計算報文中數(shù)據(jù)的個數(shù)
   		
   		for(i=0;i<TempCount;i++)
   			RXdata[i]=Read_CAN_REG(CAN_REG_RX_ID0+i);	
   		Write_CAN_REG(CAN_REG_CMR,0x04);	
   		
   		
   		bNewData=1;	
   		NewDataMode=1;
   		NewDataLength=TempCount;
			
   		
   	}
   	else//sff楨
   	{
   		if((reg & 0x40)==0x40)//遠程楨
    			TempCount=2;////遠程楨
   		else
   			TempCount=(reg & 0x0f)+2;////計算報文中數(shù)據(jù)的個數(shù)
   		
   		
   			
   		for(i=0;i<TempCount;i++)
   			RXdata[i]=Read_CAN_REG(CAN_REG_RX_ID0+i);

   		
   		Write_CAN_REG(CAN_REG_CMR,0x04);
   			
   		bNewData=1;		
   		NewDataMode=0;
   		NewDataLength=TempCount;
   	}
  }

//不停發(fā)送數(shù)據(jù)主程序	
void CanSendData(void)
{
	int ret;

	ret=CAN_TRANSMIT();
	if(ret)
	{
		AT91F_DBGU_Printk("Can send data error,error id=%d!\n",ret);
	}
	else
	{
		AT91F_DBGU_Printk("Can send data success!\n");
	}	
	
}


//不停接收數(shù)據(jù)主程序
void CanReceiveData(void)
{
	unsigned char i;

	if(bNewData == 1)
	{
		bNewData=0;
		
		if(NewDataMode)
			AT91F_DBGU_Printk("EFF Data,Data Lenght=%d\n",NewDataLength);//數(shù)據(jù)格式和長度
		else
			AT91F_DBGU_Printk("SFF Data,Data Lenght=%d\n\r",NewDataLength);
			
		for(i=0;i<NewDataLength;i++)
			AT91F_DBGU_Printk("RXdata[%d]=0x%x\n\r",i,RXdata[i]);//輸出數(shù)據(jù)
			
		NewDataLength=0;
		NewDataMode=0;	
	}
		
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久美女艺术照精彩视频福利播放 | 91美女视频网站| 欧美性欧美巨大黑白大战| 欧美大片在线观看| 亚洲国产综合色| 99精品久久99久久久久| 久久久综合激的五月天| 日韩av中文字幕一区二区| 91视视频在线观看入口直接观看www | 一区二区三区自拍| 国产激情偷乱视频一区二区三区| 欧美电影在哪看比较好| 一区二区国产视频| 成人教育av在线| 国产成人啪午夜精品网站男同| 国产不卡免费视频| 欧美成人激情免费网| 亚洲国产色一区| 久久综合av免费| 三级精品在线观看| 欧美电影一区二区| 午夜精品在线视频一区| 欧美三级电影网| 亚洲已满18点击进入久久| 91九色02白丝porn| 亚洲欧美激情在线| 色欧美片视频在线观看在线视频| 国产精品成人一区二区三区夜夜夜 | 亚洲成av人片www| 欧美在线高清视频| 午夜在线成人av| 欧美肥胖老妇做爰| 免费高清在线视频一区·| 日韩视频在线永久播放| 免费观看久久久4p| 欧美精品一区二区三区蜜臀 | 夜夜嗨av一区二区三区网页 | 91精品国产综合久久久久久久 | 蜜臀av一区二区在线免费观看| 欧美日韩不卡在线| 日韩精品福利网| 日韩一级二级三级精品视频| 韩国一区二区在线观看| 国产亚洲综合在线| 一本到不卡免费一区二区| 亚瑟在线精品视频| 日韩午夜激情av| 国产乱子伦视频一区二区三区| 国产精品伦理一区二区| 色成人在线视频| 三级在线观看一区二区| 久久久久久麻豆| 97精品视频在线观看自产线路二 | 亚洲美女视频在线观看| 欧美色视频一区| 国产资源精品在线观看| 亚洲你懂的在线视频| 4438x亚洲最大成人网| 国产成a人亚洲精| 亚洲精品免费播放| 日韩三级免费观看| 99精品视频在线观看| 日本大胆欧美人术艺术动态 | 懂色av一区二区三区免费看| 亚洲一区在线免费观看| 精品国产制服丝袜高跟| 色婷婷久久久久swag精品| 免费观看久久久4p| 亚洲人成网站色在线观看 | 欧美性videosxxxxx| 黄页视频在线91| 一区二区欧美视频| 久久久久国产精品人| 欧日韩精品视频| 国产盗摄视频一区二区三区| 亚洲超碰97人人做人人爱| 欧美激情一区二区三区四区| 欧美日韩不卡一区二区| 91麻豆精品在线观看| 韩国三级中文字幕hd久久精品| 夜色激情一区二区| 久久精品亚洲国产奇米99| 欧美日本一区二区三区四区| a4yy欧美一区二区三区| 国产一区二区在线观看视频| 亚洲不卡一区二区三区| 亚洲欧美日韩久久| 国产色综合一区| 日韩欧美一区二区在线视频| 欧美主播一区二区三区| 91亚洲精品久久久蜜桃| 国产精品1区2区| 久久电影国产免费久久电影 | 成人黄色a**站在线观看| 美女视频一区二区| 日本成人在线电影网| 一区二区高清免费观看影视大全| 欧美国产精品一区二区三区| 日韩精品一区在线| 欧美理论电影在线| 欧美日韩色一区| 91精品91久久久中77777| 99re6这里只有精品视频在线观看| 国产盗摄视频一区二区三区| 韩国v欧美v日本v亚洲v| 韩国精品免费视频| 国产一区二区免费在线| 九九精品一区二区| 激情伊人五月天久久综合| 久久99久久99| 狠狠色丁香婷综合久久| 国产福利视频一区二区三区| 国产成人丝袜美腿| 成人国产一区二区三区精品| 成人性视频网站| thepron国产精品| 99精品黄色片免费大全| 91福利视频久久久久| 欧美日韩高清在线| 日韩一区二区三区三四区视频在线观看| 欧美日韩一区二区三区不卡| 欧美精品免费视频| 精品少妇一区二区三区| 久久久综合激的五月天| 国产精品女上位| 中文字幕一区在线观看视频| 一区二区三区 在线观看视频| 国产精品资源站在线| 国产精品乱码人人做人人爱| 日韩一区二区免费在线电影| 亚洲欧美综合在线精品| 亚洲三级视频在线观看| 日韩一区二区电影网| 在线观看日韩精品| 99精品国产视频| 国产在线精品一区二区不卡了| 午夜精品一区在线观看| 亚洲激情在线激情| 国产精品毛片高清在线完整版 | 亚洲三级小视频| 国产精品视频一二| 国产精品丝袜91| 亚洲国产高清不卡| 国产欧美日韩综合精品一区二区| 日韩精品资源二区在线| 欧美电视剧在线观看完整版| 欧美一区二区三区四区在线观看| 欧美日韩精品免费观看视频| 欧美日韩专区在线| 欧美日韩aaa| 欧美一卡二卡三卡四卡| 欧美一区二区三区四区久久| 欧美精品久久一区| 91麻豆精品国产91久久久久久久久| 欧美日韩高清一区二区| 欧美高清性hdvideosex| 欧美一级夜夜爽| 2欧美一区二区三区在线观看视频| 久久亚洲一区二区三区明星换脸| 国产天堂亚洲国产碰碰| 中文字幕在线不卡视频| 亚洲国产日产av| 日韩精品一区第一页| 麻豆精品在线观看| 国产成人久久精品77777最新版本| 国产精品1区2区| 99精品视频在线播放观看| 欧美日韩国产综合一区二区三区| 欧美一区二区三区视频在线 | 三级欧美韩日大片在线看| 日韩经典一区二区| 国产精品夜夜爽| 91麻豆高清视频| 日韩欧美激情在线| 亚洲欧洲另类国产综合| 亚洲国产精品久久久久秋霞影院| 美女网站色91| 成人av电影免费在线播放| 欧美片网站yy| 国产亚洲欧美日韩在线一区| 亚洲欧美福利一区二区| 美国十次综合导航| eeuss国产一区二区三区| 欧美卡1卡2卡| 国产精品看片你懂得| 五月激情综合婷婷| 北条麻妃一区二区三区| 欧美裸体一区二区三区| 国产欧美一区二区精品婷婷| 亚洲18影院在线观看| 国产精品1区2区3区在线观看| 在线视频观看一区| 中文字幕av一区二区三区高 | 天堂成人国产精品一区| 丁香婷婷综合网| 欧美一级欧美一级在线播放| 亚洲日本成人在线观看| 国产制服丝袜一区| 欧美人伦禁忌dvd放荡欲情| 国产精品久久久久影院老司 |