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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5439|回復: 18
打印 上一主題 下一主題
收起左側

STC15單片機ADC程序問題,請教

  [復制鏈接]
回帖獎勵 100 黑幣 回復本帖可獲得 20 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:609989 發表于 2019-12-13 15:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想使用STC15的內部模擬量,測試電壓,只使用P1.0口,想通過串口發到PC。15支持10位,我就需要高八位就好了。
接線:1.直接使用信號源(1~4.3)V,接到P1.0口;

下面是程序,我幾乎照搬了,為啥還不行 ,第一次使用單片機的模擬量,真的頭疼的不行。。。。。是不是接線有問題?哎

單片機源程序如下:
  1. #include <stc15f2k60s2.H>                        
  2. #include <intrins.H>                    
  3. #define uint unsigned int               
  4. #define uchar unsigned char            
  5.    
  6. #define FOSC 11059200L          //系統頻率
  7. #define BAUD 9600            //串口波特率

  8. #define ADC_POWER   0x80                //ADC power control dit (宏定義ADC電源控制位)1000 0000
  9. #define ADC_FLAG    0x10                //ADC complete flag (宏定義ADC完成標志位)    0001 0000
  10. #define ADC_START   0x08                //ADC start control dit (宏定義ADC啟動控制位)0000 1000
  11. #define ADC_SPEEDLL 0x00                //420 clocks (宏定義420時鐘)速度控制         0000 0000
  12. #define ADC_SPEEDL  0x20                //280 clocks (宏定義280時鐘)速度控制         0001 0000
  13. #define ADC_SPEEDH  0x40                //140 clocks (宏定義140時鐘)速度控制         0010 0000
  14. #define ADC_SPEEDHH 0x60                //070 clocks (宏定義70時鐘)速度控制          0011 0000

  15. sbit Q1=P1^1;                                //驅動繼電器端口定義

  16. bit busy;
  17. uchar i,a=0xaa;
  18. uint  ch=0,num;
  19. unsigned char String[2];   //串口1接收數據緩存區

  20. /*----------------------------
  21. 1ms延時子程序(
  22. -----------------------------*/
  23. void delayms(uint k)                    

  24. {
  25.     uint i,j;            
  26.     for(i=k;i>0;i--)   
  27.         for(j=120;j>0;j--);   
  28. }

  29. /*----------------------------
  30. 串口初始化
  31. -----------------------------*/
  32. void UartInit()                //9600bps@11.0592MHz
  33. {
  34.    
  35.     SCON = 0x50;        //8位數據,可變波特率
  36.     T2L = (65536 - (FOSC/4/BAUD));  //設置波特率重裝值
  37.     T2H = (65536 - (FOSC/4/BAUD))>>8;
  38.     AUXR = 0x14;
  39.     AUXR |= 0x01;        //串口1選擇定時器2為波特率發生器
  40.     ES = 1;                          //使能串口1中斷
  41.     EA = 1;
  42. }
  43. /*************發送字符****************/
  44. void SendData(unsigned char dat)
  45. {
  46.     while (busy);              //等待前面的數據發送完成
  47.     busy = 1;
  48.     SBUF = dat;                //寫數據到UART數據寄存器
  49. }
  50. ///*************發送字符串****************/
  51. //void SendString(char *s)
  52. //{
  53. //    while (*s)                  //檢測字符串結束標志
  54. //    {
  55. //        SendData(*s++);        //發送當前字符
  56. //    }
  57. //}

  58. /*************UART_1 中斷服務程序****************/
  59. void Uart1() interrupt 4
  60. {
  61.     if (RI)
  62.     {
  63.         RI = 0;           //清除RI位        
  64.         String[i]= SBUF;              
  65.         i++;
  66.         if(i==2){i=0;REN=0;}
  67.     }
  68.     if (TI)
  69.     {
  70.         TI = 0;                //清除TI位
  71.         busy = 0;              //清忙標志
  72.     }
  73. }
  74. /*----------------------------
  75.    初始化ADC
  76. -----------------------------*/
  77. void InitADC()
  78. {
  79.     P1ASF=0x01;                            //設置P1.0端口作為模擬輸入
  80.     ADC_RES=0;                            //Clear previous result (清除以前的結果)
  81.     ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;    //開啟ACD電源、設置轉換速度
  82.     delayms(100);                            //上電延時                                                
  83. }
  84. //ADC中斷
  85. void adc_isr() interrupt 5
  86. {
  87.     ADC_CONTR &= !ADC_FLAG;
  88. //    SendData(ch);
  89.     SendData(ADC_RES);
  90.     ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;
  91. }
  92. /*--------------------------------------------------
  93. 主函數
  94. ---------------------------------------------------*/
  95. void main()
  96. {
  97.     delayms(1000);
  98.     P1M1 = 0x01;                         //P1.0高阻 P1.1強推挽:0000 0001 ADC輸入高阻、繼電器強上拉
  99.     P1M0 = 0x02;                         //P1.0高阻 P1.1強推挽:0000 0010 ADC輸入高阻、繼電器強上拉
  100.     P_SW1=0x40;                            //P3.6/P3.7串口1 RXD/TXD
  101. //    Q1=0;                                    //驅動繼電器端口初始化0
  102.     InitADC();                            //Init ADC sfr (初始化ADC SFR)
  103.     UartInit();   
  104.     IE=0xa0;
  105.     while(1);
  106. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:606366 發表于 2019-12-13 16:11 | 只看該作者
最高不是3.3V嗎
回復

使用道具 舉報

板凳
ID:213173 發表于 2019-12-13 16:54 | 只看該作者
只發不收不必用開串口中斷。1T單片機的延時函數不能直接套用12T,要改參數。
  1. #include <stc15f2k60s2.H>                        
  2. #include <intrins.H>                    
  3. #define uint unsigned int               
  4. #define uchar unsigned char            
  5. //宏定義ADC的操作命令
  6. #define ADC_POWER   0x80                        //ADC電源控制位
  7. #define ADC_START   0x08                        //ADC啟動控制位
  8. #define ADC_FLAG    0x10                        //ADC完成標志位
  9. #define ADC_SPEEDLL 0x00                        //420時鐘速度控制位

  10. sbit Q1=P1^1;                    //驅動繼電器端口定義

  11. /*--------------------------------
  12.    ms延時子程序 11.0592MHz時鐘
  13. ---------------------------------*/
  14. void delayms(uint k)
  15. {
  16.     uint i,j;            
  17.     for(i=k;i>0;i--)   
  18.         for(j=1150;j>0;j--);
  19. }
  20. /*----------------------------
  21. 串口初始化
  22. -----------------------------*/
  23. void UartInit(void)                //9600bps@11.0592MHz
  24. {
  25.         SCON = 0x50;                //8位數據,可變波特率
  26.         AUXR |= 0x01;                //串口1選擇定時器2為波特率發生器
  27.         AUXR |= 0x04;                //定時器2時鐘為Fosc,即1T
  28.         T2L = 0xE0;                        //設定定時初值
  29.         T2H = 0xFE;                        //設定定時初值
  30.         AUXR |= 0x10;                //啟動定時器2
  31. }
  32. /*----------------------------
  33.    初始化ADC
  34. -----------------------------*/
  35. void InitADC()
  36. {
  37.         P1ASF=0x01;                            //設置P1.0端口作為模擬輸入
  38.         ADC_RES=0;                            //Clear previous result (清除以前的結果)
  39.         ADC_CONTR=ADC_POWER|ADC_SPEEDLL;    //開啟ACD電源、設置轉換速度
  40.         delayms(1);                                                //上電延時1ms                                       
  41. }

  42. uchar GetADCResult(uchar CHA)                                //獲取ADC結果
  43. {
  44.         ADC_CONTR=ADC_POWER|ADC_SPEEDLL|CHA|ADC_START;//啟動轉換1000 1000
  45.     _nop_();                        //延時確保正確讀到ADC_CONTR寄存器的值
  46.     _nop_();
  47.     _nop_();
  48.     _nop_();
  49.         while(!(ADC_CONTR & ADC_FLAG));        //等待ADC轉換完成標志置位 1001 1000
  50.         ADC_CONTR &=~ADC_FLAG;                        //關閉ADC
  51.         return ADC_RES ;                                //返回八位ADC結果
  52. }

  53. /*--------------------------------------------------
  54. 主函數
  55. ---------------------------------------------------*/
  56. void main()
  57. {
  58.         P1M1 = 0x01;                         //P1.0高阻 P1.1強推挽:0000 0001 ADC輸入高阻、繼電器強上拉
  59.         P1M0 = 0x02;                         //P1.0高阻 P1.1強推挽:0000 0010 ADC輸入高阻、繼電器強上拉
  60.         P_SW1= 0x40;                         //P3.6/P3.7串口1 RXD/TXD
  61.         Q1=0;                                //驅動繼電器端口初始化0
  62.         InitADC();                            //Init ADC sfr (初始化ADC SFR)
  63.         UartInit();   
  64.         while(1)
  65.         {       
  66.                 SBUF=GetADCResult(0);//發送數據
  67.                 while(!TI);                                //等待發送完畢
  68.                 TI=0;                                                //發送中斷請求標志位清0
  69.                 delayms(1000);                        //延時1s發送一次
  70.         }
  71. }
復制代碼

評分

參與人數 1黑幣 +10 收起 理由
baiyun1234 + 10

查看全部評分

回復

使用道具 舉報

地板
ID:609989 發表于 2019-12-14 10:22 | 只看該作者
wulin 發表于 2019-12-13 16:54
只發不收不必用開串口中斷。1T單片機的延時函數不能直接套用12T,要改參數。

謝謝師傅,能發送了。我還有幾個不明白的地方,再給我講講唄。
1.那個1ms延時參數問題,我用你的這個1150,為啥使用keil_5調試出來,顯示的是9.2s?
2.ADC_CONTR=ADC_POWER|ADC_SPEEDLL|CHA|ADC_START;//啟動轉換1000 1000
  這個里面的CHA是什么東西(見前面就定義了個uchar CHA,別的沒有了)。
3.關于ADC_CONTR寄存器,低三位(CHS2,CHS1,CHS0)為啥沒有,我知道“ADC_CONTR=ADC_POWER|ADC_SPEEDLL|CHA|ADC_START;//啟動轉換1000 1000”這個低三位是0,0,0,說明選擇1.0作為AD使用,那如果我想用P1.1口呢?先設置1.1口是高阻,再設置P1ASF=0x01;1.1口作為AD口使用,然后怎么設置CHS2,CHS1,CHS0呢(選擇1.1口作為AD輸入來用)?
4.模擬量計算:高八位結果=256*(vin/vcc),vin實際電壓,vcc單片機工作電壓。我實際計算與實際測量誤差在(0.01~0.02)V,這個誤差正常嗎?
回復

使用道具 舉報

5#
ID:609989 發表于 2019-12-14 10:33 | 只看該作者

3.3V的低壓單片機是不超3.3V,5V的是不超過5V。
回復

使用道具 舉報

6#
ID:627214 發表于 2019-12-14 20:00 | 只看該作者
你這個是程序問題還是硬件問題啊?
回復

使用道具 舉報

7#
ID:213173 發表于 2019-12-14 20:18 | 只看該作者
baiyun1234 發表于 2019-12-14 10:22
謝謝師傅,能發送了。我還有幾個不明白的地方,再給我講講唄。
1.那個1ms延時參數問題,我用你的 ...

1.常見的for嵌套延時函數是按8051/12T單片機編寫的,用在1T單片機延時時間就不對了。keil_5調試顯示的是9.2s是因為這個編輯軟件不含STC單片機,所以顯示的時間不代表與實際相符。
2.CHA是在uchar GetADCResult(uchar CHA)函數中定義的形參,其值只能在0~7范圍,就是對ADC_CONTR寄存器的低三位(CHS2,CHS1,CHS0)置數。
3.如果想用P1.1口,先設置P1.1口是高阻,再設置P1ASF=0x02; //P1.1口作為AD口使用。 0000 0010
4.這個誤差是正常的。要想誤差小一定要設法使參考電壓準確和改用10位ADC。
再給你一個示例,串口發送轉換后計算的電壓值。
  1. #include <STC15F2K60S2.H>
  2. #include <intrins.h>
  3. #define uint unsigned int               
  4. #define uchar unsigned char   
  5. //宏定義ADC參考電壓mV
  6. #define VCC_V  5000
  7. //宏定義ADC的操作命令
  8. #define ADC_POWER   0x80            //ADC電源控制位
  9. #define ADC_FLAG    0x10            //ADC完成標志
  10. #define ADC_START   0x08            //ADC起始控制位
  11. #define ADC_SPEEDLL 0x00            //540個時鐘
  12. //聲明子函數
  13. void InitUart();
  14. void SendData(uchar dat);
  15. void InitADC();
  16. uchar GetADCResult(uchar ch);
  17. void delayms(uint k);
  18. //定義變量
  19. uchar dis_buf[]="0.00V\n";                                //顯示緩存數組
  20. uchar ADC_RESH;                                                        //ADC變量
  21. uint count;                                                                        //中間變量
  22. //主程序
  23. void main()
  24. {
  25.         uchar i;
  26.         P0M0 = 0x00;
  27.         P0M1 = 0x00;
  28.         P1M0 = 0x00;                                                        //P1.0高阻
  29.         P1M1 = 0x01;                                                        //P1.0高阻
  30.         P2M0 = 0x00;
  31.         P2M1 = 0x00;
  32.         P3M0 = 0x00;
  33.         P3M1 = 0x00;
  34.         P4M0 = 0x00;
  35.         P4M1 = 0x00;
  36.         P5M0 = 0x00;
  37.         P5M1 = 0x00;
  38.         P6M0 = 0x00;
  39.         P6M1 = 0x00;
  40.         P7M0 = 0x00;
  41.         P7M1 = 0x00;

  42. //        P_SW1|=0x40;                                                        //P3.6/P3.7串口1 RXD/TXD
  43.         InitUart();                                                                //初始化串口
  44.         InitADC();                                                                //初始化ADC
  45.         while (1)
  46.         {
  47.                 ADC_RESH=GetADCResult(0);                //讀取第0通道轉換值

  48.                 count=(VCC_V*(long)ADC_RESH/256+5)/10;//計算電壓值(四舍五入),精度1%V
  49.                 dis_buf[0]=count/100%10+'0';        //數據分解到顯示緩存數組
  50.                 dis_buf[2]=count/10%10+'0';
  51.                 dis_buf[3]=count%10+'0';
  52.                 for(i=0;i<6;i++)
  53.                         SendData(dis_buf[i]);                //串口發送電壓值文本字符
  54.                 delayms(500);                                                //延時0.5s
  55.     }
  56. }
  57. /*----------------------------
  58. 初始化ADC
  59. ----------------------------*/
  60. void InitADC()
  61. {
  62.     P1ASF = 0x01;                   //設置P1.0口為AD口
  63.     ADC_RES = 0;                    //清除結果寄存器
  64.     ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
  65.     delayms(2);                       //ADC上電并延時
  66. }
  67. /*----------------------------
  68. 讀取ADC結果
  69. ----------------------------*/
  70. uchar GetADCResult(uchar ch)
  71. {
  72.     ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
  73.     _nop_();                        //等待4個NOP
  74.     _nop_();
  75.     _nop_();
  76.     _nop_();
  77.     while (!(ADC_CONTR & ADC_FLAG));//等待ADC轉換完成
  78.     ADC_CONTR &= ~ADC_FLAG;         //清除完成標志
  79.     return ADC_RES;                 //返回8位ADC結果
  80. }

  81. /*----------------------------
  82. 初始化串口
  83. ----------------------------*/
  84. void InitUart()
  85. {
  86.         SCON = 0x5A;                        //設置串口為8位可變波特率
  87.         AUXR |= 0x01;                        //串口1選擇定時器2為波特率發生器
  88.         AUXR |= 0x04;                        //定時器2時鐘為Fosc,即1T
  89.         T2L = 0xE0;                                //設定定時初值
  90.         T2H = 0xFE;                                //設定定時初值
  91.         AUXR |= 0x10;                        //啟動定時器2
  92. }
  93. /*----------------------------
  94. 發送串口數據
  95. ----------------------------*/
  96. void SendData(uchar dat)
  97. {
  98.     while (!TI);                        //等待前一個數據發送完成
  99.     TI = 0;                                        //清除發送標志
  100.     SBUF = dat;                        //發送當前數據
  101. }

  102. /*--------------------------------
  103.    ms延時子程序 11.0592MHz時鐘
  104. ---------------------------------*/
  105. void delayms(uint k)
  106. {
  107.     uint i,j;            
  108.     for(i=k;i>0;i--)   
  109.         for(j=1150;j>0;j--);
  110. }

復制代碼



回復

使用道具 舉報

8#
ID:662183 發表于 2019-12-15 22:29 | 只看該作者
baiyun1234 發表于 2019-12-14 10:22
謝謝師傅,能發送了。我還有幾個不明白的地方,再給我講講唄。
1.那個1ms延時參數問題,我用你的 ...

我覺得很正常,首先你測量儀表有誤差。電源也不是精密電源
回復

使用道具 舉報

9#
ID:609989 發表于 2019-12-16 08:16 | 只看該作者
無敵小杰杰 發表于 2019-12-14 20:00
你這個是程序問題還是硬件問題啊?

硬件沒問題,已經做好了
回復

使用道具 舉報

10#
ID:609989 發表于 2019-12-16 16:50 | 只看該作者
wulin 發表于 2019-12-14 20:18
1.常見的for嵌套延時函數是按8051/12T單片機編寫的,用在1T單片機延時時間就不對了。keil_5調試顯示的是9 ...

謝謝師傅,關于多通道與單通道采集,基本上是掌握了。還有個小問題。
1.關于:ADC_RESH=GetADCResult(0);  //賦值
             count=(VCC_V*(long)ADC_RESH/256+5)/10;#define VCC_V  5000
  ①.這個(long)ADC_RESH表示是:unsigned long int 表示一個雙字,但是下面的子函數:uchar GetADCResult(uchar ch),定義類型是char,這里為什么會寫long呢?
  ②.這里面的+5什么意思,8位采集的計算公式應:ADC_RES=256*vin(模擬電壓)/vcc(標準電壓)么?
  ③.如果按照5V計算,算出來是小數,多以用VCC_V=5000mv放大,而后面的/10,是因為結果是0.01V,即1%,用來縮小。可以這么理解吧。。。
    ※這個我找了個簡單方法,直接算成float,用printf串口打印出去就好了。

  
回復

使用道具 舉報

11#
ID:213173 發表于 2019-12-16 21:00 | 只看該作者
baiyun1234 發表于 2019-12-16 16:50
謝謝師傅,關于多通道與單通道采集,基本上是掌握了。還有個小問題。
1.關于:ADC_RESH=GetADCRes ...

你理解的基本是對的。
在實際應用中使用10位ADC每2ms取樣一次,ADC_RESH累加后除10得到平均值,也就是簡單濾波。
取20ms做取樣周期的目的是因為50HZ工頻共模干擾無處不在,這樣得到的ADC值相對穩定些。
下面是實際應用中的平均法濾波程序,使用浮點運算當然可以,但速度要慢許多。
#define VCC_V  5000//參考電壓mV
unsigned int ADC_RESH;
unsigned int ADC_RESX;
void Smooth()
{
        static unsigned char count=0;                //計數器變量
        ADC_RESH += GetADCResult(0);                //累加10次采樣值
        count++;                                                        //計數器變量自+1
        if(count>=10)                                                //如果計數到10次采樣
        {
                count1=0;                                                //計數器清0
                ADC_RESX=(VCC_V*(long)ADC_RESH/1024+5)/10;//強制轉換數據類型(32位)運算,否則數據超出16位溢出而出錯,得到(4舍5入)mV
        }
}
回復

使用道具 舉報

12#
ID:213173 發表于 2019-12-16 21:48 | 只看該作者
baiyun1234 發表于 2019-12-16 16:50
謝謝師傅,關于多通道與單通道采集,基本上是掌握了。還有個小問題。
1.關于:ADC_RESH=GetADCRes ...

修正:
void Smooth()
{
        static unsigned char count=0;                //計數器變量
        ADC_RESH += GetADCResult(0);                //累加10次采樣值
        count++;                                                        //計數器變量自+1
        if(count>=10)                                                //如果計數到10次采樣
        {
                count1=0;                                                //計數器清0
                ADC_RESX=(VCC_V*(long)ADC_RESH/1024+5)/10;//強制轉換數據類型(32位)運算,否則數據超出16位溢出而出錯,得到(4舍5入)mV
              ADC_RESH=0;//清0
        }
}
回復

使用道具 舉報

13#
ID:609989 發表于 2019-12-17 17:51 | 只看該作者
wulin 發表于 2019-12-16 21:48
修正:
void Smooth()
{

謝謝了師傅,講的真到位。今天我把10位計算方式的也搞出來了。
還有最后有一點:ADC_RESX=(VCC_V*(long)ADC_RESH/1024+5)/10;這里面的+5。可以這么理解嗎?
1.因為最后我們是想以整數方式發送(正常計算出來是小數),所以5V放大1000倍是5000,千分之一精度,進行計算VCC_V*(long)ADC_RESH/1024;
2.然后因為要求精度是0.01V,%1V精度,所以我們四舍五入(為了精確點),所以在后面+5,得出VCC_V*(long)ADC_RESH/1024+5;
3.最后/10,算成%1,即0.01V。

回復

使用道具 舉報

14#
ID:213173 發表于 2019-12-17 19:44 | 只看該作者
本帖最后由 wulin 于 2019-12-18 07:42 編輯
baiyun1234 發表于 2019-12-17 17:51
謝謝了師傅,講的真到位。今天我把10位計算方式的也搞出來了。
還有最后有一點:ADC_RESX=(VCC_V* ...

你的理解基本正確
+5是為了小數部分四舍五入,除10是因為ADC_RESH是累加10次采樣值,需要除10得平均值。
設想一下:VCC=5V,最大采樣值1023=0x03ff,
計算公式:IN=VCC*1023/1024=4.9951171875
采用四舍五入:IN=5000*1023/1024+5=5000.1171875mV
取整數后誤差更小些。

評分

參與人數 1黑幣 +10 收起 理由
baiyun1234 + 10

查看全部評分

回復

使用道具 舉報

15#
ID:609989 發表于 2019-12-18 13:26 | 只看該作者
wulin 發表于 2019-12-17 19:44
你的理解基本正確
+5是為了小數部分四舍五入,除10是因為ADC_RESH是累加10次采樣值,需要除10得平均值。 ...

恩,明白了,謝謝
回復

使用道具 舉報

16#
ID:911776 發表于 2021-5-31 10:03 | 只看該作者
wulin 發表于 2019-12-13 16:54
只發不收不必用開串口中斷。1T單片機的延時函數不能直接套用12T,要改參數。

為什么我這里SCON是一定要設置為0x5a, 才能有數據呢
回復

使用道具 舉報

17#
ID:718536 發表于 2021-6-1 14:36 | 只看該作者
好貼,好棒的問答。感謝大佬
回復

使用道具 舉報

18#
ID:839438 發表于 2021-7-10 00:01 | 只看該作者
哇,解決問題
回復

使用道具 舉報

19#
ID:57657 發表于 2021-7-10 19:15 | 只看該作者
wulin 發表于 2019-12-13 16:54
只發不收不必用開串口中斷。1T單片機的延時函數不能直接套用12T,要改參數。

1T單片機可以用12T的定時器延時,但不能用12T的軟件延時。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天色图 | 日韩精品在线视频 | 日本一卡精品视频免费 | 久久精品女人天堂av | 午夜小电影 | 日本a网站 | 欧美aⅴ在线观看 | 亚洲成人毛片 | 91av免费观看 | 欧美日韩久久精品 | 国产97在线 | 日韩 | 国产资源在线播放 | 国产精品中文在线 | 男女午夜激情视频 | 在线观看免费观看在线91 | 一区欧美 | 欧美一区二区三区在线观看视频 | 一级片在线播放 | 欧美一二区 | 亚洲在线成人 | 国产美女一区二区三区 | 国产目拍亚洲精品99久久精品 | 黄色在线网站 | 激情综合五月 | 国内av在线 | 国产精品日日夜夜 | 国内精品一区二区 | 欧美一区二区三区在线观看 | a视频在线 | 国内精品视频一区二区三区 | 一区二区三区免费观看 | 成人av免费网站 | 欧美一区二区三区四区在线 | 精品国产乱码久久久久久丨区2区 | 欧美久久大片 | 精品国产一区二区三区免费 | 国产精品久久久久久中文字 | 中文字幕一区二区三区四区五区 | 久久精品无码一区二区三区 | 久久久婷 | 黄a免费网络|