wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 19269|回復: 2
收起左側

51單片機串口Uart1 Uart2收發程序帶校驗

[復制鏈接]
ID:26188 發表于 2015-2-18 01:27 | 顯示全部樓層 |閱讀模式
//包含文件定義
//#include "reg51.h"
//#include <stc.h>
#include "intrins.h"
#include "string.h"
//串口相關常量定義
#define  FOSC              22118400L   //系統頻率11059200L 22118400L
#define  Uart1_MaxString   32          //串口1最大接收緩沖區字符數量(0-31)共32個字符
#define  Uart2_MaxString   32          //串口2最大接收緩沖區字符數量(0-31)共32個字符
//串口相關變量定義
char           Uart1_Data[Uart1_MaxString];   //串口1接收字串
unsigned char  Uart1_String_P;                //串口1接收字串位置指針
bit            Uart1_busy;                    //串口1正在發送標記,1,正在發送,0,發送完成
unsigned char  Uart1_ParitySet;               //串口1奇偶校驗方式 0不校驗 1奇校驗 2偶校驗 3始終1 4始終0
bit            Uart1_Parity;                  //串口1接收到的奇偶校驗狀態 1,0
bit            Uart1_Parity_out;              //串口1驗證接收到的奇偶校驗狀態 1,驗證,0驗證錯誤
char           Uart2_Data[Uart1_MaxString];   //串口2接收字串
unsigned char  Uart2_String_P;                //串口2接收字串位置指針
bit            Uart2_busy;                    //串口2正在發送標記,1,正在發送,0,發送完成
unsigned char  Uart2_ParitySet;               //串口2奇偶校驗方式 0不校驗 1奇校驗 2偶校驗 3始終1 4始終0
bit            Uart2_Parity;                  //串口2接收到的奇偶校驗狀態 1,0
bit            Uart2_Parity_out;              //串口2驗證接收到的奇偶校驗狀態 1,驗證,0驗證錯誤
//Uart1包含函數申明
void Uart1_Setup(unsigned long Uart1_Baud,bit Uart1_Tx); //串口1波特率和時基源設置函數
void Uart1_SendData(unsigned char Uart1_dat);                  //串口1單字符發送函數
void Uart1_SendString(char *s);                          //串口1字符串發送函數
//void Uart1_Isr() interrupt 4 using 1;                    //串口1中斷服務函數
void Uart2_Setup(unsigned long Uart2_Baud);              //串口2波特率
void Uart2_SendData(unsigned char Uart2_dat);                  //串口2單字符發送函數
void Uart2_SendString(char *s);                          //串口2字符串發送函數
//void Uart1_Isr() interrupt 4 using 1;                    //串口2中斷服務函數
/*串口編程示范============================================================================
Uart1_String_P=0;                //串口1接收字串下標歸0
Uart1_ParitySet=1;               //串口1使用9位可變波特率方式,校驗方式為奇校驗
Uart1_Setup(9600,0);             //串口1波特率為9600bps,時基源選擇定時器1
Uart1_SendString("hello word");  //串口1發送數據,英文字母 hello word
Uart2_String_P=0;                //串口2接收字串下標歸0
Uart2_ParitySet=1;               //串口2使用9位可變波特率方式,校驗方式為奇校驗
Uart2_Setup(9600);               //串口2波特率為9600bps
Uart2_SendString("hello word");  //串口2發送數據,英文字母 hello word
=======================================================================================*/
/*********************************************************
** 函數名稱: void Uart1_Setup(unsigned long Uart1_Baud,bit Uart1_Tx)
** 功能描述: 初始化串口函數
** 輸   入: unsigned long Uart1_Baud,bit Uart1_Tx
** 輸   出: 無
** 全局變量: PCON,SCON,TMOD,AUXR,TCON,TH1,
** 調用模塊:
** 備    注:時鐘為22118400Hz
            參數1:波特率設置,300;600;1200;2400;4800;9600;19200
            參數2:計數器選擇,0,定時器1;1,獨立波特率
**********************************************************/
void Uart1_Setup(unsigned long Uart1_Baud,bit Uart1_Tx)
{
unsigned int Uart1_Brt;
//時基源設置-------------------------------------------------
if(Uart1_Tx)
    {
AUXR |= 0x01;  //串口1選擇獨立波特率發生器
}
else
    {
AUXR &= 0xFE;  //串口1選擇定時器1做波特率發生器
}
//校驗方式設置-------------------------------------------------
switch (Uart1_ParitySet)
    {//判斷校驗方式
    case 1:
        {//9位串口, 奇校驗 Uart1_ParitySet=1;   //校驗位初值狀態標記置1
        SCON=0xD8;           //9位波特率可變,允許接收,TB8待發第9位初始置1
        break;
        }
    case 2:
        {//9位串口, 偶校驗 Uart1_ParitySet=2;   //校驗位初值狀態標記置2
        SCON=0xD4;           //9位波特率可變,允許接收,RB8待收第9位初始置1
        break;
        }
    case 3:
        {//9位串口, 掩碼校驗 校驗值始終為 1 Uart1_ParitySet=3;   //校驗位初值狀態標記置3
        SCON|=0xD8;         //9位波特率可變,允許接收,TB8待發第9位初始置1
        break;
        }
    case 4:
        {//9位串口, 空校驗 校驗值始終為 0 Uart1_ParitySet=4;   //校驗位初值狀態標記置4
        SCON=0xD4;          //9位波特率可變,允許接收,RB8待收第9位初始置1
        break;
        }
    default:
        {//8位串口, 無校驗 Uart1_ParitySet=0;   //校驗位初值狀態標記置0
        SCON&=0x5F;         //清除第5位,第7位
        SCON|=0x50;         //8位波特率可變,允許接收
        break;
        }
    }
//波特率設置并開始運行串口-------------------------------------------------
//時鐘為22118400Hz
Uart1_Brt=FOSC/32/Uart1_Baud;
if(Uart1_Brt>255)
    {//如果重裝值>255,使用12T模式12分頻
    if(Uart1_Tx)
        {//如果使用獨立波特率發生器
        //PCON |= 0x80;                                 //串口1波特率加倍
        //PCON &= 0x7f;                                 //串口1波特率不加倍
        AUXR &= 0xFB;                                 //獨立波特率使用12T模式
        //AUXR |= 0x04;                                 //獨立波特率使用1T模式
        BRT = 256-Uart1_Brt/12;                       //獨立波特率發生器初值設置
        AUXR|= 0x10;                                  //獨立波特率發生器開始計數
        }
    else
        {//如果使用定時器1做波特率發生器
        TMOD&=0xCF;                                 //清除定時器1設置狀態,定時器0不修改
        TMOD|=0x20;                                 //定時器1使用8位自動重裝模式
        //PCON |= 0x80;                               //串口1波特率加倍
        //PCON &= 0x7f;                               //串口1波特率不加倍
        AUXR &= 0xBF;                               //定時器1使用12T模式
        //AUXR|=0x40;                                 //定時器1使用1T模式
        TH1  = TL1 = 256-Uart1_Brt/12;              //設置自動裝入的值
        ET1  = 0;                                   //關閉定時器1中斷
        TR1  = 1;                                   //TCON|=0x40;定時器1開始計數,TCON&=0xBF;關閉計數
        }
    }
else
    {//如果重裝值<255,使用1T模式1分頻
    if(Uart1_Tx)
        {//如果使用獨立波特率發生器
        //PCON |= 0x80;                                 //串口1波特率加倍
        //PCON &= 0x7f;                                 //串口1波特率不加倍
        //AUXR &= 0xFB;                                 //獨立波特率使用12T模式
        AUXR |= 0x04;                                 //獨立波特率使用1T模式
        BRT  = 256-Uart1_Brt;                         //獨立波特率發生器初值設置
        AUXR|= 0x10;                                  //獨立波特率發生器開始計數
        }
    else
        {//如果使用定時器1做波特率發生器
        TMOD&=0xCF;                                 //清除定時器1設置狀態,定時器0不修改
        TMOD|=0x20;                                 //定時器1使用8位自動重裝模式
        //PCON |= 0x80;                               //串口1波特率加倍
        //PCON &= 0x7f;                               //串口1波特率不加倍
        //AUXR &= 0xBF;                               //定時器1使用12T模式
        AUXR|=0x40;                                 //定時器1使用1T模式
        TH1  = TL1 = 256-Uart1_Brt;                 //設置自動裝入的值
        ET1  = 0;                                   //關閉定時器1中斷
        TR1  = 1;                                   //TCON|=0x40;定時器1開始計數,TCON&=0xBF;關閉計數
        }
    }
    ES        = 1;                                  //打開串口中斷
    EA        = 1;                                  //打開總中斷
}
/*********************************************************
** 函數名稱: void Uart2_Setup(unsigned long Uart2_Baud)
** 功能描述: 初始化串口函數
** 輸   入: unsigned long Uart1_Baud
** 輸   出: 無
** 全局變量:
** 調用模塊:
** 備    注:時鐘為22118400Hz
            參數1:波特率設置,300;600;1200;2400;4800;9600;19200
**********************************************************/
void Uart2_Setup(unsigned long Uart2_Baud)
{
unsigned int Uart2_Brt;
//校驗方式設置-------------------------------------------------
switch (Uart2_ParitySet)
    {//判斷校驗方式
    case 1:
        {//9位串口, 奇校驗 Uart1_ParitySet=1;   //校驗位初值狀態標記置1
        S2CON=0xD8;           //9位波特率可變,允許接收,TB8待發第9位初始置1
        break;
        }
    case 2:
        {//9位串口, 偶校驗 Uart1_ParitySet=2;   //校驗位初值狀態標記置2
        S2CON=0xD4;           //9位波特率可變,允許接收,RB8待收第9位初始置1
        break;
        }
    case 3:
        {//9位串口, 掩碼校驗 校驗值始終為 1 Uart1_ParitySet=3;   //校驗位初值狀態標記置3
        S2CON|=0xD8;         //9位波特率可變,允許接收,TB8待發第9位初始置1
        break;
        }
    case 4:
        {//9位串口, 空校驗 校驗值始終為 0 Uart1_ParitySet=4;   //校驗位初值狀態標記置4
        S2CON=0xD4;          //9位波特率可變,允許接收,RB8待收第9位初始置1
        break;
        }
    default:
        {//8位串口, 無校驗 Uart1_ParitySet=0;   //校驗位初值狀態標記置0
        S2CON&=0x5F;         //清除第5位,第7位
        S2CON|=0x50;         //8位波特率可變,允許接收
        break;
        }
    }
//波特率設置并開始運行串口-------------------------------------------------
//時鐘為22118400Hz
Uart2_Brt=FOSC/32/Uart2_Baud;
if(Uart2_Brt>255)
    {//如果重裝值>255,使用12T模式12分頻
        //PCON |= 0x80;                                 //串口1波特率加倍
        //PCON &= 0x7f;                                 //串口1波特率不加倍
        AUXR &= 0xFB;                                 //獨立波特率使用12T模式
        //AUXR |= 0x04;                                 //獨立波特率使用1T模式
        BRT = 256-Uart2_Brt/12;                       //獨立波特率發生器初值設置
    }
else
    {//如果重裝值<255,使用1T模式1分頻
        //PCON |= 0x80;                                 //串口1波特率加倍
        //PCON &= 0x7f;                                 //串口1波特率不加倍
        //AUXR &= 0xFB;                                 //獨立波特率使用12T模式
        AUXR |= 0x04;                                 //獨立波特率使用1T模式
        BRT  = 256-Uart2_Brt;                         //獨立波特率發生器初值設置
    }
    AUXR|= 0x10;                                  //獨立波特率發生器開始計數
IE2|=0x01;                                    ////打開串口2中斷
    EA   = 1;                                     //打開總中斷
}
//=======================================================================================
/**********************************************************
串口1中斷服務函數
**********************************************************/
void Uart1_Isr() interrupt 4 using 1
{// UART 中斷服務函數
EA=0; //關總中斷
if (RI)
{//如果 UART 接收產生中斷
    RI = 0;                                           //清除 UART 接收中斷標記
    ACC= SBUF;                                        //接收緩沖區數據寫入累加器A
    Uart1_Parity = P;                                 //保存校驗值到Uart1_Parity
    Uart1_Parity_out=0;                               //清除允許寫入標記,為下面判斷準備
    switch(Uart1_ParitySet)
    {//根據校驗要求判斷
        case 1:
        {//要求奇校驗
        Uart1_Parity_out=Uart1_Parity^RB8;    //如果檢驗結果和接收結果不符合則成立,允許寫入
        break;
        }
        case 2:
        {//要求偶校驗
        Uart1_Parity_out=~(Uart1_Parity^RB8); //如果檢驗結果和接收結果符合則成立,允許寫入
        break;
        }
        case 3:
        {//要求常1校驗
        Uart1_Parity_out=RB8;                 //如果接收結果為1則成立,允許寫入
        break;
        }
        case 4:
        {//要求常0校驗
        Uart1_Parity_out=~RB8;                //如果接收結果為0則成立,允許寫入
        break;
        }
        default:
        {//要求無校驗
        Uart1_Parity_out=1;                  //如果無校驗,允許寫入
        break;
        }
    }
    if(Uart1_Parity_out)
    {//如果允許寫入
        Uart1_Data[Uart1_String_P]= SBUF;              //接收緩沖區數據順序寫入串口接收字串
        Uart1_String_P++;                              //串口接收字串指針累加
        //↓如果串口接收字串指針在大于最大接收緩沖區字符數量,串口接收字串指針歸零
        if(Uart1_String_P >= Uart1_MaxString)
        {//如果接受字串指針越界
            Uart1_String_P=0;                          //接受字串指針歸零
        }
    }
}
if (TI)
{//如果 UART 發送產生中斷
    TI   = 0;                  //清除 UART 發送中斷標記
    Uart1_busy = 0;            //發送完成,清除正在發送標記
}
EA=1;                          //開總中斷
}
//=======================================================================================
/**********************************************************
串口2中斷服務函數
**********************************************************/
void Uart2_Isr() interrupt 8 using 1
{// UART 中斷服務函數
EA=0; //關總中斷
if (S2CON&0x01)
{//如果 UART 接收產生中斷
    S2CON &= 0xFE;                                     //清除 UART 接收中斷標記
    ACC= S2BUF;                                        //接收緩沖區數據寫入累加器A
    Uart2_Parity = P;                                  //保存校驗值到Uart1_Parity
    Uart2_Parity_out=0;                                //清除允許寫入標記,為下面判斷準備
    switch(Uart2_ParitySet)
    {//根據校驗要求判斷
        case 1:
        {//要求奇校驗
        Uart2_Parity_out=Uart2_Parity^(S2CON&0x04);    //如果檢驗結果和接收結果不符合則成立,允許寫入 (S2CON&0x04)==S2RB8
        break;
        }
        case 2:
        {//要求偶校驗
        Uart2_Parity_out=~(Uart2_Parity^(S2CON&0x04)); //如果檢驗結果和接收結果符合則成立,允許寫入
        break;
        }
        case 3:
        {//要求常1校驗
        Uart2_Parity_out=(S2CON&0x04);                 //如果接收結果為1則成立,允許寫入
        break;
        }
        case 4:
        {//要求常0校驗
        Uart2_Parity_out=~(S2CON&0x04);                //如果接收結果為0則成立,允許寫入
        break;
        }
        default:
        {//要求無校驗
        Uart2_Parity_out=1;                  //如果無校驗,允許寫入
        break;
        }
    }
    if(Uart2_Parity_out)
    {//如果允許寫入
        Uart2_Data[Uart2_String_P]= S2BUF;              //接收緩沖區數據順序寫入串口接收字串
        Uart2_String_P++;                              //串口接收字串指針累加
        //↓如果串口接收字串指針在大于最大接收緩沖區字符數量,串口接收字串指針歸零
        if(Uart2_String_P >= Uart2_MaxString)
        {//如果接受字串指針越界
            Uart2_String_P=0;                          //接受字串指針歸零
        }
    }
}
if (S2CON&0x02)
{//如果 UART 發送產生中斷
    S2CON &= 0xFD;                  //清除 UART 發送中斷標記
    Uart2_busy = 0;            //發送完成,清除正在發送標記
}
EA=1;                          //開總中斷
}

//=======================================================================================
/**********************************************************
** 函數名稱: void Uart1_SendData(unsigned char Uart1_dat)
** 功能描述: UART1 單個字符發送函數
** 輸   入: unsigned char Uart1_dat
** 輸   出: 無
** 全局變量:
** 調用模塊:
** 備    注:參數1:待發送的單個字符
**********************************************************/
void Uart1_SendData(unsigned char Uart1_dat)
{//UART 發送字節函數
    while (Uart1_busy);       //循環等待正在發送標記被清空
    ACC = Uart1_dat;                //被發送數據送累加器A,準備求奇偶校驗位 P
    TB8 = P;                  //寫奇偶校驗標記
    switch(Uart1_ParitySet)
    {//根據校驗要求判斷
        case 1:
        {//要求奇校驗
            TB8=~TB8;        //翻轉TB8的值
            break;
        }
        /*偶校驗,TB8不變
        case 2:
        {//要求偶校驗
            TB8=TB8;            //TB8不變
            break;
        }
        */
        case 3:
        {//要求常1校驗
            TB8=1;            //TB8恒等于1
            break;
        }
        case 4:
        {//要求常0校驗
            TB8=0;            //TB8恒等于0
            break;
        }
        default:
        {//要求無校驗
        break;
        }
    }
    Uart1_busy = 1;          //正在發送標記置 1
    SBUF = ACC;              //累加器 A 中的數據送發送緩沖區發送
}
//=======================================================================================
/**********************************************************
** 函數名稱: void Uart2_SendData(unsigned char Uart2_dat)
** 功能描述: UART2 單個字符發送函數
** 輸   入: unsigned char Uart2_dat
** 輸   出: 無
** 全局變量:
** 調用模塊:
** 備    注:參數1:待發送的單個字符
**********************************************************/
void Uart2_SendData(unsigned char Uart2_dat)
{//UART 發送字節函數
    while (Uart2_busy);       //循環等待正在發送標記被清空
    ACC = Uart2_dat;                //被發送數據送累加器A,準備求奇偶校驗位 P
    TB8 = P;                  //寫奇偶校驗標記
    switch(Uart2_ParitySet)
    {//根據校驗要求判斷
        case 1:
        {//要求奇校驗
            S2CON^=0x08;        //翻轉S2TB8的值
            break;
        }
        /*偶校驗,S2TB8不變
        case 2:
        {//要求偶校驗
            S2TB8=1;            //S2TB8不變
            break;
        }
        */
        case 3:
        {//要求常1校驗
            S2CON|=0x08;            //S2TB8恒等于1
            break;
        }
        case 4:
        {//要求常0校驗
            S2CON&=0xF7;            //TB8恒等于0
            break;
        }
        default:
        {//要求無校驗
        break;
        }
    }
    Uart2_busy = 1;          //正在發送標記置 1
    S2BUF = ACC;              //累加器 A 中的數據送發送緩沖區發送
}
//=======================================================================================
/**********************************************************
** 函數名稱: void Uart1_SendString(char *s)
** 功能描述: UART1 按字符串發送函數
** 輸   入: char *s
** 輸   出: 無
** 全局變量:
** 調用模塊:
** 備    注:參數1:待發送的字符串
**********************************************************/
void Uart1_SendString(char *s)
{//UART 按字符串發送
    while (*s)
    {
        Uart1_SendData(*s++);   //將待發字符串依次使用SendData函數按字節發送
    }
}
//=======================================================================================
/**********************************************************
** 函數名稱: void Uart2_SendString(char *s)
** 功能描述: UART2 按字符串發送函數
** 輸   入: char *s
** 輸   出: 無
** 全局變量:
** 調用模塊:
** 備    注:參數1:待發送的字符串
**********************************************************/
void Uart2_SendString(char *s)
{//UART 按字符串發送
    while (*s)
    {
        Uart2_SendData(*s++);   //將待發字符串依次使用SendData函數按字節發送
    }
}
//=======================================================================================
/*常用串口設置開關===============================副錄===================================
AUXR |= 0x01;  //串口1選擇獨立波特率發生器
AUXR &= 0xFE;  //串口1選擇定時器1做波特率發生器
AUXR |= 0x40;  //定時器1使用1T模式
AUXR &= 0xBF;  //定時器1使用12T模式
AUXR |= 0x04;  //獨立波特率使用1T模式
AUXR &= 0xFB;  //獨立波特率使用12T模式
AUXR |= 0x10;  //打開獨立波特率發生器
AUXR &= 0xEF;  //關閉獨立波特率發生器
PCON |= 0x80;  //串口1波特率加倍
PCON &= 0x7f;  //串口1波特率不加倍
AUXR |= 0x08;   //串口2波特率加倍
AUXR &= 0xf7;   //串口2波特率不加倍
=======================================================================================*/



回復

使用道具 舉報

ID:367948 發表于 2018-8-3 11:42 | 顯示全部樓層
學習了
回復

使用道具 舉報

ID:975054 發表于 2021-11-14 01:05 | 顯示全部樓層
內容完整豐富
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
久久国产精彩视频| 日本一本不卡| 老司机午夜精品| 日韩一级片网址| 国产精品一区二区在线观看 | 中文字幕巨乱亚洲| 不卡av在线网站| 国产情侣av自拍| 国产老女人乱淫免费| 色综合久久久久综合一本到桃花网| 欧美电影一二区| 一本大道av伊人久久综合| 97久久精品午夜一区二区| x88av在线| 天天碰日日操| 九九久久精品| 精品久久久久久久久国产字幕| 亚洲a一级视频| 亚洲毛片亚洲毛片亚洲毛片| 电影天堂最新网址| 久久精品国产www456c0m| 欧美日韩视频在线| 狠狠久久综合婷婷不卡| 久久r这里只有精品| 免费在线观看麻豆视频 | 成人51免费| 国产精品美女久久久久久2018| 8x拔播拔播x8国产精品| 91人妻一区二区三区| 欧美18一14sex性处hd| 外国成人毛片| 中文字幕视频一区| 成人信息集中地欧美| 91av手机在线| 最后生还者第二季在线观看| 国产精品二区影院| 精品成人免费观看| 日韩精品xxxx| 影音先锋中文在线观看| a一区二区三区亚洲| 亚洲人成人一区二区在线观看| 亚洲伊人久久大香线蕉av| 欧美又粗又大又长| 韩国三级在线观看久| 日本视频一区二区| 久久久精品中文字幕| 男男受被啪到高潮自述| 色在线视频免费| 国产真实有声精品录音| 欧美日韩精品一区二区在线播放| 久久综合国产精品| 色婷婷av一区二区三区在线观看 | 99re国产在线| 1stkiss在线漫画| 成人av影院在线| 欧美制服第一页| 九九九视频在线观看| 波多野结衣中文字幕在线| 夜夜爽av福利精品导航| 国产小视频国产精品| 波多野结衣网页| 濑亚美莉vs黑人在线观看| 综合久久婷婷| 亚洲欧洲激情在线| 欧美一级免费在线| 成人淫片免费视频95视频| 韩日视频一区| 中文字幕在线成人| 中国黄色片视频| 波多野结衣中文字幕在线| 日本美女一区二区三区| 欧美激情第三页| 久久丫精品忘忧草西安产品| 亚洲校园欧美国产另类| 久草中文综合在线| 欧洲中文字幕国产精品| 九九九久久久久| 宅男网站在线免费观看| 国产欧美精品一区aⅴ影院| 国产精品嫩草在线观看| 国产精品久久久久久免费免熟| jizz亚洲女人高潮大叫| 大桥未久av一区二区三区| 91精品国产吴梦梦| 欧美野外多人交3| 国产精品久久占久久| 一个人www欧美| 最新在线黄色网址| 久久99久久| caoporen国产精品视频| 99re视频在线播放| 国产乱人乱偷精品视频| 精品一区二区三区中文字幕| 欧美日韩国产综合一区二区三区| 色综合av综合无码综合网站| 啪啪av大全导航福利网址| 亚洲影视在线| 91av在线免费观看| 国产91av视频| 欧美成人精品一区二区男人小说| 精品二区三区线观看| 国产日韩亚洲欧美在线| 尤物视频在线| 久久99伊人| 日本精品一区二区三区在线| 亚洲免费在线观看av| 欧美电影免费观看网站| 天天色综合天天| 妞干网在线视频观看| 春意影院免费入口| 久久综合影视| 国产精品视频大全| 亚洲一区 中文字幕| 成人爽a毛片免费啪啪红桃视频| 日韩欧美久久久| 在线观看亚洲免费视频| av在线播放免费| 国产精品第四页| 可以免费看的黄色网址| 两个人日本在线观看视频| 日韩电影在线一区二区三区| 国产精品色悠悠| 超碰在线观看av| 菠萝蜜一区二区| 久久久精品国产网站| 久久丫精品久久丫| 久久不卡日韩美女| 精品国产123| 色婷婷在线影院| 九九热精品在线观看| 三区在线观看| 国产精品久久久久久妇女6080 | 人妖精品videosex性欧美| 在线观看污污网站| 成人资源在线| 亚洲欧美另类中文字幕| 国产精品1区2区3区4区| 成人美女黄网站| 欧美挠脚心视频网站| 性猛交╳xxx乱大交| 秋霞午夜在线观看| 亚洲国产日韩a在线播放性色| 日本三级免费网站| 自拍av在线| 亚洲欧洲www| 国产高清精品在线观看| 又黄又爽在线观看| 国产精品久线观看视频| 91免费黄视频| 日本aⅴ中文| 欧美极品aⅴ影院| 中文字幕无码精品亚洲资源网久久| www.97| 91性感美女视频| 伊人久久婷婷色综合98网| wwwwww99| 国产午夜精品久久久久久久| 国产精品第157页| 国产精品精华液网站| 国产清纯白嫩初高生在线观看91 | 日韩mv欧美mv国产网站| 久久久成人av| 中文人妻熟女乱又乱精品| 国产91精品对白在线播放| 色综合五月天导航| 国产精品国产一区二区三区四区 | 国产美女亚洲精品7777| 国产午夜精品全部视频播放| 国产无遮挡aaa片爽爽| 91综合精品国产丝袜长腿久久| 国产一区二区三区在线观看视频 | 视频一区二区三区在线| 国产精品theporn88| 高清国语自产拍免费视频国产 | 少妇一级淫免费播放| 1769视频在线播放免费观看| 精品人伦一区二区三区蜜桃网站 | 91九色丨porny丨肉丝| 欧美中文一区| 韩日欧美一区二区| 国精品人妻无码一区二区三区喝尿 | 国产精品中文字幕日韩精品 | 成人欧美在线| 欧美色大人视频| 国产精品久久久久久久av| 成人短视频软件网站大全app| 夜夜嗨av色一区二区不卡| 亚洲免费在线观看av| 欧美亚洲精品在线| 国产精品美女久久久久久免费| 中文字幕第一页av| 国产麻豆9l精品三级站| www.激情网| 毛片免费在线播放| 91豆麻精品91久久久久久| 国产精成人品免费观看| 午夜日韩影院| 69**夜色精品国产69乱| 亚洲精品精品一区| 国产91丝袜在线观看| 日本韩国欧美在线观看| 欧洲美女少妇精品| 欧美tk丨vk视频| 亚洲s码欧洲m码国产av| 欧美天堂亚洲电影院在线观看| 国产视频在线观看一区| 国产网站免费观看| 天天操天天干天天操| 狠狠色狠狠色综合系列| 国产精品一线二线三线| 久草资源在线| 日韩av在线导航| 在线观看毛片网站| 久久久人人人| 亚洲黄色网址在线观看| 91大神xh98hx在线播放| 日韩区在线观看| 久久久久久在线观看| 亚洲日本激情| 亚洲欧洲精品一区二区三区波多野1战4| 国产三级av在线| 欧洲日韩一区二区三区| 精国产品一区二区三区a片| 天天揉久久久久亚洲精品| 国产欧美日韩综合一区在线观看| 国产精品粉嫩av| 欧美性猛xxx| 九九热最新地址| 天天影视欧美综合在线观看| 国内成+人亚洲| 中文字幕一区免费| 制服视频三区第一页精品| 日韩毛片一区二区三区| 99成人在线| 亚洲影院在线观看| 亚洲熟妇一区二区| 看亚洲a级一级毛片| 国产精品高潮呻吟视频| www天堂网| 精品国产成人在线| 欧美精品一区二区蜜桃| 欧美激情视频一区二区三区在线播放 | 欧美大奶子在线| 蜜桃色永久入口| 亚洲国产精品激情在线观看| 日本天堂在线播放| 免费日韩一区二区三区| 91久久精品国产91久久性色tv| 女人黄色片免费| 欧美一区二区三区思思人| 欧美成人一区二区视频| 久久国内精品视频| 亚洲最大成人在线观看| 9999精品视频| 91九色国产视频| 黄网站app在线观看下载视频大全官网 | 久久精品夜色噜噜亚洲a∨| 88av在线播放| 国产一区二区三区四区大秀| 久久一区二区三区av| 第三区美女视频在线| 亚洲天堂男人的天堂| 新久草在线视频| 综合久久久久久久| 四虎永久免费在线| 一级成人国产| 能看的毛片网站| 日韩一区二区三区色| av成人观看| 国产精品秘入口| 最近2019年好看中文字幕视频| 欧美老tube| 亚洲一卡二卡三卡四卡 | 夜夜精品视频| 日韩欧美xxxx| 五月亚洲婷婷| 激情欧美一区二区三区黑长吊| 国产专区精品视频| 欧美性猛交7777777| 日韩成人在线观看| 最近2018年在线中文字幕高清| 日韩理论片一区二区| 欧美日韩中文字幕在线观看| 日日噜噜夜夜狠狠视频欧美人| 香蕉视频网站入口| 日韩av三区| 亚洲精品日韩成人| 欧美国产大片| 91精品国产高清久久久久久91裸体| 九色视频网站在线观看| 日韩中文字幕在线精品| 免费在线一级片| 另类图片综合电影| 国产精品福利在线观看| 丝袜国产免费观看| 日韩精品福利网站| 国产精彩自拍| 精品视频一区二区不卡| 亚洲av无码国产综合专区| 国产精品久久久久精k8 | 亚洲第一成肉网| 国产欧美高清视频在线| 国产卡一卡二在线| 国产精品高潮久久| 精品日本视频| 国产欧美日本在线| h片在线观看| 国产欧美久久久久久| wwwxxx在线观看| 91av视频在线免费观看| 亚洲精品视频在线免费| 久久亚洲一区二区三区四区五区高| 天天色av.com| 亚洲人成网站999久久久综合| 夜夜嗨yeyeh| 日韩精品在线看片z| 性欧美高清强烈性视频| 91久久精品网| 无码国产精品高潮久久99| 亚洲综合在线免费观看| 亚洲无码久久久久久久| 亚洲人妖av一区二区| 高潮无码精品色欲av午夜福利| 国产欧美一区二区三区鸳鸯浴| 久久免费精彩视频| 99久久精品情趣| 国产在线免费视频| 99视频在线观看一区三区| 无码黑人精品一区二区| 国产高清精品久久久久| 男人与禽猛交狂配| 成人av网站大全| 麻豆国产尤物av尤物在线观看 | 亚洲精品20p| 一区二区三区四区日韩| 日韩中文字幕a| 国产专区一区| 亚洲精品鲁一鲁一区二区三区| 中文国产一区| 亚洲av片不卡无码久久| 男男视频亚洲欧美| 国产馆在线观看| 国产精品资源在线看| 特级片在线观看| 国产亚洲婷婷免费| 中文 欧美 日韩| 午夜影院久久久| 亚洲天堂在线视频观看| 欧美日韩一区国产| 99久久免费国产精品| 精品亚洲一区二区三区在线观看 | 日本国产一区二区| 神马久久久久久久久| 日韩午夜在线播放| 看成年女人免费午夜视频| 国产亚洲一区精品| 2020中文字幕在线播放| 97精品在线视频| 大片免费在线看视频| 超碰97在线人人| 九九九精品视频| 国产亚洲精品久久久久久久| 国产伦一区二区三区| 精品久久久久久最新网址| 四虎影音在线| 欧美精品一区二区三区视频| eeuss影院eeuss最新直达| av三级在线播放| 日本视频久久久| 麻豆福利在线观看| 免费国产在线精品一区二区三区| 4438五月综合| 少妇av一区二区三区无码| 亚洲国产精品日韩专区av有中文| 69xxx免费视频| 国产麻豆成人传媒免费观看| 国产高潮久久久| 亚洲午夜电影在线| 日韩在线天堂| 亚洲欧洲成视频免费观看| 一级毛片在线观| 菠萝蜜视频在线观看www入口| 日韩欧美在线一区二区| 亚洲桃色综合影院| 亚洲丝袜在线观看| 国产精品亚洲第一| 丰满人妻一区二区三区四区| 在线观看成人小视频| 非洲黑人最猛性xxxx交| 欧美精品videofree1080p| 日韩三级电影视频| 亚洲国产一区二区三区在线| 国产传媒欧美日韩成人精品大片| 麻豆网站免费观看| 国产美女娇喘av呻吟久久| 国产精品第6页| 欧美日韩一区久久| 国产视频一二| 国产精品揄拍一区二区| 国产精品高清一区二区|