久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3746|回復: 13
收起左側

怎么調試模擬串口?(有帶起始位設置的串口助手?)

[復制鏈接]
ID:472235 發表于 2019-12-18 21:40 | 顯示全部樓層 |閱讀模式
本帖最后由 121212121212123 于 2019-12-18 21:44 編輯



stc15 89c52rc微控制器模擬串行調試:發送到串口助手沒問題的,但接收就不行了,有大佬搞這個嗎??

#include <reg52.h>
#include“ config.h”

sbit PIN_RXD = P1 ^ 2;
比特PIN_TXD = P1 ^ 3;

位RxdEnd = 0;
位RxdOrTxd = 0;
位TxdEnd = 0;

unsigned char RxdBuf = 0;
unsigned charTxdBuf = 0;

void ConfigUART(unsigned int baud);
void StartRXD();
void StartTXD(unsigned char dat);

static unsigned char cnt = 0;

void main()
{
        EA = 1;
        ConfigUART(9600);

        while(1)
        {
                led1 = 0;
                while(PIN_RXD);
                led2 = 0;
                StartRXD();
                while(!RxdEnd);
                StartTXD(RxdBuf);
                while(!TxdEnd);
        }

}
void ConfigUART(unsigned int baud)
{
        TMOD&= 0xF0;
        TMOD | = 0x01;
        TH0 = 256-(11059200/12)/波特;
}
void StartRXD()
{
        TL0 = TH0;
        ET0 = 1;
        TR0 = 1;
        RxdEnd = 0;
        RxdOrTxd = 0;
}
void StartTXD(unsigned char dat)
{
        TxdBuf = dat;
        TL0 = TH0;
        ET0 = 1;
        TR0 = 1;
        PIN_TXD = 0;
        TxdEnd = 0;
        RxdOrTxd = 1;
}
void InterruptTimer0()中斷1
{                 
// uint8 i;
//
//                 
// TH0 = 256-(11059200/12)/ 9600;
// TL0 = TH0;
//
// i ++;
// if(i == 10){
// i = 0;
// led4 =〜led4;
//}
                led3 = 0;

        if(RxdOrTxd)
        {//發送
                cnt ++;
                if(cnt <= 8)
                {
                                                
                                                                                                
                        PIN_TXD = TxdBuf&0x01;
                        TxdBuf >> = 1;
                }
                else if(cnt == 9)
                {
                         PIN_TXD = 1;
                }
                else
                {
                        cnt = 0;
                        TR0 = 0;
                        TxdEnd = 1;
                }
        }
        else            
        {
                if(cnt == 0)
                {
                        if(!PIN_RXD)
                        {
                                RxdBuf = 0;
                                cnt ++;
                        }
                        else
                        {
                                TR0 = 0;
                        }
                }
                if(cnt <= 8)
                                {                 
                                                led4 = 0;
                        RxdBuf >> = 1;            
                        if(PIN_RXD)
                        {
                                RxdBuf | = 0x80;
                        }
                        cnt ++;
                }
                其他
                {
                        cnt = 0;
                        TR0 = 0;
                        if(PIN_RXD)
                        {
                                RxdEnd = 1;
                        }
                }
        }
}


回復

使用道具 舉報

ID:213173 發表于 2019-12-19 11:04 | 顯示全部樓層
STC有模擬串口的官方范例程序:
  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC15Fxx 系列 軟件模擬串口舉例----------------------------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  6. /* --- Tel: 86-0513-55012928,55012929,55012966-------------------------*/
  7. /* --- Web: www.STCMCU.com --------------------------------------------*/
  8. /* --- Web: www.GXWMCU.com --------------------------------------------*/
  9. /* 如果要在程序中使用此代碼,請在程序中注明使用了STC的資料及程序        */
  10. /* 如果要在文章中應用此代碼,請在文章中注明使用了STC的資料及程序        */
  11. /*---------------------------------------------------------------------*/

  12. //本示例在Keil開發環境下請選擇Intel的8058芯片型號進行編譯
  13. //若無特別說明,工作頻率一般為11.0592MHz


  14. #include "reg51.h"

  15. //-----------------------------------------
  16. //define baudrate const
  17. //BAUD = 65536 - FOSC/3/BAUDRATE/M (1T:M=1; 12T:M=12)
  18. //NOTE: (FOSC/3/BAUDRATE) must be greater then 98, (RECOMMEND GREATER THEN 110)

  19. //#define BAUD  0xF400                  // 1200bps @ 11.0592MHz
  20. //#define BAUD  0xFA00                  // 2400bps @ 11.0592MHz
  21. //#define BAUD  0xFD00                  // 4800bps @ 11.0592MHz
  22. //#define BAUD  0xFE80                  // 9600bps @ 11.0592MHz
  23. //#define BAUD  0xFF40                  //19200bps @ 11.0592MHz
  24. #define BAUD  0xFFA0                    //38400bps @ 11.0592MHz

  25. //#define BAUD  0xEC00                  // 1200bps @ 18.432MHz
  26. //#define BAUD  0xF600                  // 2400bps @ 18.432MHz
  27. //#define BAUD  0xFB00                  // 4800bps @ 18.432MHz
  28. //#define BAUD  0xFD80                  // 9600bps @ 18.432MHz
  29. //#define BAUD  0xFEC0                  //19200bps @ 18.432MHz
  30. //#define BAUD    0xFF60                //38400bps @ 18.432MHz

  31. //#define BAUD  0xE800                  // 1200bps @ 22.1184MHz
  32. //#define BAUD  0xF400                  // 2400bps @ 22.1184MHz
  33. //#define BAUD  0xFA00                  // 4800bps @ 22.1184MHz
  34. //#define BAUD  0xFD00                  // 9600bps @ 22.1184MHz
  35. //#define BAUD  0xFE80                  //19200bps @ 22.1184MHz
  36. //#define BAUD  0xFF40                  //38400bps @ 22.1184MHz
  37. //#define BAUD  0xFF80                  //57600bps @ 22.1184MHz

  38. sfr AUXR = 0x8E;
  39. sbit RXB = P3^0;                        //define UART TX/RX port
  40. sbit TXB = P3^1;

  41. typedef bit BOOL;
  42. typedef unsigned char BYTE;
  43. typedef unsigned int WORD;

  44. BYTE TBUF,RBUF;
  45. BYTE TDAT,RDAT;
  46. BYTE TCNT,RCNT;
  47. BYTE TBIT,RBIT;
  48. BOOL TING,RING;
  49. BOOL TEND,REND;

  50. void UART_INIT();

  51. BYTE t, r;
  52. BYTE buf[16];

  53. void main()
  54. {
  55.     TMOD = 0x00;                        //timer0 in 16-bit auto reload mode
  56.     AUXR = 0x80;                        //timer0 working at 1T mode
  57.     TL0 = BAUD;
  58.     TH0 = BAUD>>8;                      //initial timer0 and set reload value
  59.     TR0 = 1;                            //tiemr0 start running
  60.     ET0 = 1;                            //enable timer0 interrupt
  61.     PT0 = 1;                            //improve timer0 interrupt priority
  62.     EA = 1;                             //open global interrupt switch

  63.     UART_INIT();

  64.     while (1)
  65.     {                                   //user's function
  66.         if (REND)
  67.         {
  68.             REND = 0;
  69.             buf[r++ & 0x0f] = RBUF;
  70.         }
  71.         if (TEND)
  72.         {
  73.             if (t != r)
  74.             {
  75.                 TEND = 0;
  76.                 TBUF = buf[t++ & 0x0f];
  77.                 TING = 1;
  78.             }
  79.         }
  80.     }
  81. }

  82. //-----------------------------------------
  83. //Timer interrupt routine for UART

  84. void tm0() interrupt 1
  85. {
  86.     if (RING)
  87.     {
  88.         if (--RCNT == 0)
  89.         {
  90.             RCNT = 3;                   //reset send baudrate counter
  91.             if (--RBIT == 0)
  92.             {
  93.                 RBUF = RDAT;            //save the data to RBUF
  94.                 RING = 0;               //stop receive
  95.                 REND = 1;               //set receive completed flag
  96.             }
  97.             else
  98.             {
  99.                 RDAT >>= 1;
  100.                 if (RXB) RDAT |= 0x80;  //shift RX data to RX buffer
  101.             }
  102.         }
  103.     }
  104.     else if (!RXB)
  105.     {
  106.         RING = 1;                       //set start receive flag
  107.         RCNT = 4;                       //initial receive baudrate counter
  108.         RBIT = 9;                       //initial receive bit number (8 data bits + 1 stop bit)
  109.     }

  110.     if (--TCNT == 0)
  111.     {
  112.         TCNT = 3;                       //reset send baudrate counter
  113.         if (TING)                       //judge whether sending
  114.         {
  115.             if (TBIT == 0)
  116.             {
  117.                 TXB = 0;                //send start bit
  118.                 TDAT = TBUF;            //load data from TBUF to TDAT
  119.                 TBIT = 9;               //initial send bit number (8 data bits + 1 stop bit)
  120.             }
  121.             else
  122.             {
  123.                 TDAT >>= 1;             //shift data to CY
  124.                 if (--TBIT == 0)
  125.                 {
  126.                     TXB = 1;
  127.                     TING = 0;           //stop send
  128.                     TEND = 1;           //set send completed flag
  129.                 }
  130.                 else
  131.                 {
  132.                     TXB = CY;           //write CY to TX port
  133.                 }
  134.             }
  135.         }
  136.     }
  137. }

  138. //-----------------------------------------
  139. //initial UART module variable

  140. void UART_INIT()
  141. {
  142.     TING = 0;
  143.     RING = 0;
  144.     TEND = 1;
  145.     REND = 0;
  146.     TCNT = 0;
  147.     RCNT = 0;
  148. }

復制代碼
回復

使用道具 舉報

ID:472235 發表于 2019-12-19 22:45 | 顯示全部樓層
wulin 發表于 2019-12-19 11:04
STC有模擬串口的官方范例程序:

謝謝了哈,馬上去試下
回復

使用道具 舉報

ID:472235 發表于 2019-12-19 23:27 | 顯示全部樓層
wulin 發表于 2019-12-19 11:04
STC有模擬串口的官方范例程序:

它的芯片好像不是89C52RC的,是intel 8058的,變量太多了
回復

使用道具 舉報

ID:213173 發表于 2019-12-20 06:41 | 顯示全部樓層
121212121212123 發表于 2019-12-19 23:27
它的芯片好像不是89C52RC的,是intel 8058的,變量太多了

不是intel 8058,只是在Keil開發環境下選擇Intel的8058芯片型號進行編譯。其差別是增加1個寄存器地址
sfr AUXR = 0x8E;  STC公司的1T芯片才有此特殊功能寄存器,
實驗是STC15Fxx。這個程序51核心的芯片都可以用,89C52RC沒有AUXR寄存器,只要比特率不是太高,不影響對定時器的操作。
回復

使用道具 舉報

ID:213173 發表于 2019-12-20 11:13 | 顯示全部樓層
121212121212123 發表于 2019-12-19 23:27
它的芯片好像不是89C52RC的,是intel 8058的,變量太多了

給你改成適合STC89C52RC的模擬串口程序,最高波特率1200,最大數據串16給字節。
  1. #include "reg51.h"

  2. typedef unsigned char uchar;
  3. typedef unsigned int uint;

  4. sbit RXB = P3^0;         //定義UART TX/RX端口
  5. sbit TXB = P3^1;

  6. uchar TBUF,RBUF;
  7. uchar TDAT,RDAT;
  8. uchar TCNT,RCNT;
  9. uchar TBIT,RBIT;
  10. bit TING,RING;
  11. bit TEND,REND;
  12. uchar t, r;
  13. uchar buf[16];

  14. //初始UART模塊
  15. void UART_INIT()
  16. {
  17.         TING = 0;
  18.         RING = 0;
  19.         TEND = 1;
  20.         REND = 0;
  21.         TCNT = 0;
  22.         RCNT = 0;
  23.         TMOD = 0x02;   //8位自動重載12T模式
  24.         TL1 = 0xE8;                //設定定時初值(波特率1200)
  25.         TH1 = 0xE8;                //設定定時器重裝值
  26. //        TMOD = 0x00;   // 16位自動重載模式中的Time0
  27. //        AUXR = 0x80;   // 1T工作模式
  28. //        TL0 = BAUD;
  29. //        TH0 = BAUD>>8; // 初始Time0和設置重載值
  30.         TR0  = 1;      // tiemr0開始運行
  31.         ET0  = 1;      // 啟用Time0中斷
  32.         PT0  = 1;      // 提高定時中斷優先級
  33.         EA   = 1;      // 打開全局中斷開關
  34. }
  35. //
  36. void main()
  37. {
  38.         UART_INIT();   //初始UART模塊
  39.         while (1)
  40.         {              //用戶功能
  41.                 if (REND)   //接收完成標志為真
  42.                 {
  43.                         REND = 0;//接收完成標志清0
  44.                         buf[r++ & 0x0f] = RBUF;//保存在緩存中
  45.                 }
  46.                 if (TEND)
  47.                 {
  48.                         if (t != r)
  49.                         {
  50.                                 TEND = 0;
  51.                                 TBUF = buf[t++ & 0x0f];//發送緩存中數據
  52.                                 TING = 1;
  53.                         }
  54.                 }
  55.         }
  56. }
  57. //UART定時器中斷例程
  58. void tm0() interrupt 1 using 1
  59. {
  60.         if (RING)
  61.         {
  62.                 if (--RCNT == 0)
  63.                 {
  64.                         RCNT = 3;                   //重置發送波特率計數器
  65.                         if (--RBIT == 0)
  66.                         {
  67.                                 RBUF = RDAT;            //將數據保存到RBUF
  68.                                 RING = 0;               //停止接收
  69.                                 REND = 1;               //設置接收完成標志
  70.                         }
  71.                         else
  72.                         {
  73.                                 RDAT >>= 1;
  74.                                 if (RXB) RDAT |= 0x80;  //將RX數據轉換為RX緩沖區
  75.                         }
  76.                 }
  77.         }
  78.         else if (!RXB)
  79.         {
  80.                 RING = 1;                       //設置開始接收標志
  81.                 RCNT = 4;                       //初始接收波特率計數器
  82.                 RBIT = 9;                       //initial receive bit number (8 data bits + 1 stop bit)
  83.         }                                                                                          //初始接收比特數(8個數據位+ 1個停止位)
  84.         if (--TCNT == 0)
  85.         {
  86.                 TCNT = 3;                       //重置發送波特率計數器
  87.                 if (TING)                       //判斷是否發送
  88.                 {
  89.                         if (TBIT == 0)
  90.                         {
  91.                                 TXB = 0;                //發送起始位
  92.                                 TDAT = TBUF;            //加載數據 TBUF 到 TDAT
  93.                                 TBIT = 9;               //initial send bit number (8 data bits + 1 stop bit)
  94.                         }                                                                        //初始發送比特數(8個數據位+ 1個停止位)
  95.                         else
  96.                         {
  97.                                 TDAT >>= 1;             //將數據轉換到CY
  98.                                 if (--TBIT == 0)
  99.                                 {
  100.                                         TXB = 1;
  101.                                         TING = 0;           //停止發送
  102.                                         TEND = 1;           //設置發送完成標志
  103.                                 }
  104.                                 else
  105.                                 {
  106.                                         TXB = CY;           //將CY寫入TX端口
  107.                                 }
  108.                         }
  109.                 }
  110.         }
  111. }
復制代碼
回復

使用道具 舉報

ID:472235 發表于 2019-12-20 14:56 | 顯示全部樓層
wulin 發表于 2019-12-20 11:13
給你改成適合STC89C52RC的模擬串口程序,最高波特率1200,最大數據串16給字節。

我拷過去了,但它會亂碼,而且有時發一次,返回幾十個數據
回復

使用道具 舉報

ID:213173 發表于 2019-12-20 17:12 | 顯示全部樓層
121212121212123 發表于 2019-12-20 14:56
我拷過去了,但它會亂碼,而且有時發一次,返回幾十個數據

這個程序是在STC89C52RC實驗板驗證過的,波特率1200。
回復

使用道具 舉報

ID:213173 發表于 2019-12-20 17:14 | 顯示全部樓層
121212121212123 發表于 2019-12-20 14:56
我拷過去了,但它會亂碼,而且有時發一次,返回幾十個數據

晶振11.0592MHz
回復

使用道具 舉報

ID:472235 發表于 2019-12-21 20:51 | 顯示全部樓層

先謝謝大佬,我用之前找到的代碼跑成功了,現在在想兩字節的串口通信,用的是這個代碼:

#include<reg52.h>
sbit PIN_RXD = P3^0;
sbit PIN_TXD = P3^1;
bit RxdEnd = 0;
bit RxdOrTxd = 0;
bit TxdEnd = 0;
unsigned char RxdBuf = 0;
unsigned char TxdBuf = 0;
void ConfigUART(unsigned int baud);
void StartRXD();
void StartTXD(unsigned char dat);
void main()
{
        EA = 1;
        ConfigUART(9600);
      
        while(1)
        {
                while(PIN_RXD);
                StartRXD();
                while(!RxdEnd);
                StartTXD(RxdBuf);
                while(!TxdEnd);
        }
      
}
void ConfigUART(unsigned int baud)
{
        TMOD &= 0xF0;
        TMOD |= 0x02;
        TH0 = 256 - (11059200/12)/baud;
}
void StartRXD()
{
        TL0 = 256 - ((256 - TH0)>>1)+4;//之所以加4是因為實地測試發送數據還行,但接收數據誤差率太大,估計是51速度太慢,中斷中語句太多,當波特率低于9600時可不加4,波特率等于9600則加3以上
        ET0 = 1;
        TR0 = 1;
        RxdEnd = 0;
        RxdOrTxd = 0;
}
void  StartTXD(unsigned char dat)
{
        TxdBuf = dat;
        TL0 = TH0;
        ET0 = 1;
        TR0 = 1;
        PIN_TXD = 0;
        TxdEnd = 0;
        RxdOrTxd = 1;
}
void InterruptTimer0() interrupt 1
{
        static unsigned char cnt = 0;
        if(RxdOrTxd)
        {
                cnt++;
                if(cnt <= 8)
                {
                        PIN_TXD = TxdBuf & 0x01;
                        TxdBuf >>= 1;
                }
                else if(cnt == 9)
                {
                         PIN_TXD = 1;
                }
                else
                {
                        cnt = 0;
                        TR0 = 0;
                        TxdEnd = 1;
                }
        }
        else
        {
                if(cnt == 0)
                {
                        if(!PIN_RXD)
                        {
                                RxdBuf = 0;
                                cnt++;
                        }
                        else
                        {
                                TR0 = 0;
                        }
                }
                else if(cnt <= 8)
                {
                        RxdBuf >>= 1;            
                        if(PIN_RXD)
                        {
                                RxdBuf |= 0x80;
                        }
                        cnt++;
                }
                else
                {
                        cnt = 0;
                        TR0 = 0;
                        if(PIN_RXD)
                        {
                                RxdEnd = 1;
                        }
                }
        }
}
回復

使用道具 舉報

ID:472235 發表于 2019-12-21 20:51 | 顯示全部樓層

如果要實現兩個字節的模擬串口通信,會不會難度很大??
回復

使用道具 舉報

ID:472235 發表于 2019-12-21 21:22 | 顯示全部樓層

謝謝大佬,都搞定了
回復

使用道具 舉報

ID:472235 發表于 2019-12-21 21:24 | 顯示全部樓層
STC89C52RC 雙字節兩次傳輸串口通信模擬(可擴展多字節):
#include<reg52.h>
#include "config.h"
#include "lcd1602.h"

sbit PIN_RXD = P3^0;
sbit PIN_TXD = P3^1;

bit RxdEnd = 0;
bit RxdOrTxd = 0;
bit TxdEnd = 0;

unsigned int RxdBuf = 0;
unsigned int TxdBuf = 0;

void ConfigUART(unsigned int baud);
void StartRXD();
void StartTXD(unsigned char dat);

unsigned char *p;
//unsigned char *p2;
unsigned char buff[3];
//unsigned char buff2[2];
unsigned char key;
unsigned char i = 0;

void main()
{
        EA = 1;
        ConfigUART(9600);
      
        while(1)
        {
                                led1 = ~led1;
                                while(PIN_RXD);        //0低電平進入
                while(key <= 1){        //key = 0,下一次key = 1;
                                        while(PIN_RXD);
                        StartRXD();
                        while(!RxdEnd);
                                        key++;                        //高電平時間
                                }
                                led3 = ~led3;
                                key = 0;
                                for(i = 0;i<=1;i++){
                                        StartTXD(buff[i]);
                                        while(!TxdEnd);
                                }                              
                                p = buff;
                                Lcd1602_Init();
                                Lcd1602_Show_String(1,1,p);
                       

        }
      
}
void ConfigUART(unsigned int baud)
{
        TMOD &= 0xF0;
        TMOD |= 0x02;
        TH0 = 256 - (11059200/12)/baud;
}
void StartRXD()
{
        TL0 = 256 - ((256 - TH0)>>1)+20;//之所以加4是因為實地測試發送數據還行,但接收數據誤差率太大,估計是51速度太慢,中斷中語句太多,當波特率低于9600時可不加4,波特率等于9600則加3以上
        ET0 = 1;
        TR0 = 1;
        RxdEnd = 0;
        RxdOrTxd = 0;
}
void  StartTXD(unsigned char dat)
{
        TxdBuf = dat;
        TL0 = TH0;
        ET0 = 1;
        TR0 = 1;
        PIN_TXD = 0;
        TxdEnd = 0;
        RxdOrTxd = 1;
}
void InterruptTimer0() interrupt 1
{
        static unsigned char cnt = 0;
        if(RxdOrTxd)
        {
                cnt++;
                if(cnt <= 8)
                {
                        PIN_TXD = TxdBuf & 0x01;
                        TxdBuf >>= 1;
                }
                else if(cnt == 9)
                {
                         PIN_TXD = 1;
                }
                else
                {
                               led4 = ~led4;
                                            cnt = 0;
                        TR0 = 0;
                        TxdEnd = 1;
                }
        }
        else
        {
                if(cnt == 0)
                {
                        if(!PIN_RXD)
                        {
                                RxdBuf = 0;
                                cnt++;
                        }
                        else
                        {
                                TR0 = 0;
                        }
                }
                else if(cnt <= 8)
                {
                        RxdBuf >>= 1;            
                        if(PIN_RXD)
                        {
                                RxdBuf |= 0x80;
                        }
                        cnt++;
                }
                else
                {
                                                if(key == 0){
                                                    buff[0] = RxdBuf;
                                                }else if(key == 1){
                                                        buff[1] = RxdBuf;
                                                        buff[2] = '\0';       
                                                }
                                               
//                                                buff[1] = '\0';
                        cnt = 0;
                        TR0 = 0;
                        if(PIN_RXD)         //當兩個字節發送時,存不存在不為高電平?
                        {
                                led2 = ~led2;
                                                                RxdEnd = 1;
                        }
                }
        }
}
回復

使用道具 舉報

ID:284226 發表于 2023-5-11 20:53 | 顯示全部樓層
樓主。太厲害了,我也在看。你那個看懂了?    發送時,PIN_TXD = TxdBuf & 0x01;為什么先要&這個一步,還有接收時
RXDBuf |=0x80;為什么要走這一步呢
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 波多野结衣一区二区 | av黄色在线观看 | 亚洲欧美综合 | 天堂免费看片 | 久久婷婷麻豆国产91天堂 | 亚洲午夜av久久乱码 | 97国产精品视频人人做人人爱 | 国产1区在线 | 懂色av一区二区三区在线播放 | 久久青| 欧美亚洲成人网 | 日韩在线观看一区二区三区 | 一级黄色片网址 | 精品国产免费人成在线观看 | 久久久国产一区二区三区四区小说 | 欧美影院 | 一级毛片免费视频观看 | 欧美成人免费在线 | 91视频三区 | 国产精品久久久久久亚洲调教 | 免费在线视频一区二区 | 久久不卡视频 | 日韩欧美三级 | 午夜一区二区三区视频 | 精品国产一区二区三区久久久蜜月 | 午夜精品久久久久久久久久久久久 | 欧美日韩亚洲一区 | 亚洲美女视频 | 在线日韩精品视频 | 91精品国产一区二区三区 | 亚洲精品久久久久久久久久久久久 | 国产精品久久久久久婷婷天堂 | 国产精品亚洲一区二区三区在线观看 | 亚洲成人网在线播放 | 成人欧美一区二区三区白人 | 欧美日韩高清免费 | 日干夜干 | 久久久亚洲 | 亚洲不卡视频 | 亚洲高清成人在线 | 日韩免费一级 |