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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機流水燈,逐個點亮,我不能全部都逐個點亮

  [復制鏈接]
跳轉到指定樓層
樓主
可以實現閃爍、輪流點亮和逐個點亮,但暫停不行(實物不能暫停,仿真可以),求大佬改一下。
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define unit unsigned int
  4. void delay_ms(unsigned int);
  5. sbit LED1=P0^0;
  6. sbit LED2=P0^1;
  7. sbit LED3=P0^2;
  8. sbit LED4=P0^3;
  9. sbit LED5=P0^4;
  10. sbit LED6=P0^5;
  11. sbit LED7=P0^6;
  12. sbit LED8=P0^7;
  13. sbit LED9=P2^0;
  14. sbit LED10=P2^1;
  15. sbit LED11=P2^2;
  16. sbit LED12=P2^3;
  17. sbit LED13=P2^4;
  18. sbit LED14=P2^5;
  19. sbit LED15=P2^6;
  20. sbit LED16=P2^7;
  21. sbit  K=P3^4;
  22. sbit T=P1^0;
  23. sbit K1=P3^5;
  24. uchar num,num1;
  25. uchar loopled=0xfe;
  26. uchar flag=0;
  27. uchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  28. uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};


  29. void  init        (){
  30. TMOD = 0x00;   //定時器T0工作方式1
  31. TH0=(65536-50000)/256;   //TH0=(65536-50000)/256;
  32. TL0=(65536-50000)%256;   //TL0=(65536-50000)%256;
  33. EA=1;
  34. ET0=1;
  35. // TR0=1;

  36. }


  37. void  init1(){
  38. TMOD = 0x10;   //定時器T0工作方式1
  39. TH0=(65536-50000)/256;   //TH0=(65536-50000)/256;
  40. TL0=(65536-50000)%256;   //TL0=(65536-50000)%256;
  41. EA=1;
  42. ET1=1;
  43. //TR1=1;

  44. }

  45. void main(void){
  46.   int i;
  47.   IT0 = 1;  //設外部中斷0為邊緣觸發
  48. EX0 = 1;  //開外部中斷0
  49. EA = 1;   //開總中斷
  50.   IT1=1;        //開外部中斷INT1
  51.   EX1=1;        //開外部中斷


  52.           init1();
  53.   init();

  54.             while(1){
  55.     if(K==0){//控制輪流點亮的開啟
  56.            TR0=1;
  57. }
  58.     if(K1==0){//控制閃爍的開啟
  59.            TR1=1;
  60. }                  
  61.               
  62.          
  63.           if(num==20){//輪流點亮程序
  64.           num=0; //num清零
  65.         for(i=0;i<8;i++){
  66.           P0=table0[i];        //
  67.           delay_ms(100);
  68.           P0=0XFF;        //關閉最后一盞燈
  69.            }
  70.         for(i=0;i<8;i++){
  71.           P2=table0[i];
  72.           delay_ms(100);
  73.           P2=0XFF; //關閉最后一盞燈
  74.            }
  75.         }
  76.                  if(num1==20){//閃爍程序
  77.           num1=0; //num1清零
  78.                   
  79.             LED1=~LED1; //將全部端口取反,實現閃爍功能
  80.          LED2=~LED2;
  81.    LED3=~LED3;
  82.    LED4=~LED4;
  83.    LED5=~LED5;
  84.    LED6=~LED6;
  85.    LED7=~LED7;
  86.    LED8=~LED8;
  87.    LED9=~LED9;
  88.    LED10=~LED10;
  89.    LED11=~LED11;
  90.    LED12=~LED12;
  91.    LED13=~LED13;
  92.    LED14=~LED14;
  93.    LED15=~LED15;
  94.    LED16=~LED16;
  95.          
  96.           }

  97.   }        



  98. while(1);

  99. }

  100.   int0() interrupt 0 { //暫停
  101.             delay_ms(200);
  102.                 ET0=~ET0;        //將開啟中斷的端口取反
  103.                  ET1=~ET1;
  104.                  EX1=~EX1;

  105.         }
  106.         


  107.     int1() interrupt 2                 //逐個點亮
  108. {        
  109.                            P0=loopled;//點亮P0組第一個燈
  110.         P2=0xFF; //關閉P2組

  111.                  loopled=loopled<<1;  //循環左移
  112.         loopled=loopled|1; // 最右補1,防止點亮最后一個LED

  113.   if (loopled==0xff) {
  114.                 flag++;// 一路循環完成場合,指向下一組

  115.                  loopled=0xFE; // 下一組最后一個LED點亮


  116.     if (flag==2) {        // 兩組組循環完成了,重新指向第一組
  117.                         flag=0;
  118.                 }               
  119.         }

  120.         switch(flag) {            // 根據FLAG的情況開啟/關閉P0/P2組
  121.                 case 0:// P0組
  122.                         P2=0xFF;  // 關閉P2組

  123.                         P0=loopled;                                
  124.                         break;
  125.                 case 1:// P2組
  126.                         P0=0xFF;  // 關閉P0組

  127.                         P2=loopled;
  128.                         break;

  129.         }

  130.                          }


  131.         



  132. time0() interrupt 3{//設定初值

  133.          TH0=(65536-50000)/256;        
  134.           TL0=(65536-50000)%256;
  135.          num1++;
  136.          
  137.          
  138. }

  139. time1() interrupt 1{

  140.          TH0=(65536-50000)/256;         //設定初值
  141.           TL0=(65536-50000)%256;
  142.          num++;
  143.          
  144.          
  145. }




  146.         void delay_ms(unsigned int dt)//延時函數
  147. {
  148. register unsigned char bt,ct;
  149. for (;dt;dt--)
  150.    for (ct=2;ct;ct--)
  151.        for (bt=250;--bt;);
  152. }
復制代碼

附上完整代碼

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

使用道具 舉報

沙發
ID:386367 發表于 2019-6-8 19:58 | 只看該作者
逐個點亮的部份,其實不用寫得那麼難看懂,你寫得簡單一點,方便自己,也方便他人。
建議先檢查,測試一下硬件連接有沒問題,然後拆分逐個點亮的代碼部份,逐一調試。
回復

使用道具 舉報

板凳
ID:555516 發表于 2019-6-9 19:55 | 只看該作者
tt123 發表于 2019-6-8 19:58
逐個點亮的部份,其實不用寫得那麼難看懂,你寫得簡單一點,方便自己,也方便他人。
建議先檢查,測試一下 ...

呃,, 左移的代碼是跟老師學的,,,我要做的效果是 按一下按鈕就中斷去點亮下一個燈,  你能幫我改一下嗎  
回復

使用道具 舉報

地板
ID:517466 發表于 2019-6-10 00:18 | 只看該作者
/** 流水燈*/
#include<reg52.h>

#define uchar unsigned char
#define uint unsigned int
       
sbit button=P1^0;

/* 函數申明 -----------------------------------------------*/
void delay(uint z);
void led(void);

/*
********************************************************************************
** 函數名稱 : main(void)
** 函數功能 : 主函數
********************************************************************************
*/

uchar loopled=0xfe;
uchar flag=0;

void main() {
        P0=loopled;
        P2=0xFF;
        P3=0xFF;
        while(1) {
                // 按鈕按下了?
                if (button==0) {
                          delay(200);
                          // 等待按鈕松開
                                while(button==0);
                                if (button==1) {
                                        // 按鈕按下又抬起
                                        led();
                                }
                }
        }
}

// 流水燈
void led(void) {
        // 循環左移
        loopled=loopled<<1;
        // 最右補1,防止點亮最后一個LED
        loopled=loopled|1;
  if (loopled==0xff) {
                // 一路循環完成場合,指向下一組
                flag++;
                // 下一組最后一個LED點亮
                loopled=0xFE;
                // 三組循環完成了,重新指向第一組
    if (flag==3) {
                        flag=0;
                }               
        }
        // 將循環數據送給當前組
        switch(flag) {
                case 0:// P0組
                        P2=0xFF;  // 關閉P2組
                        P3=0xFF;  // 關閉P3組
                        P0=loopled;
                        break;
                case 1:// P2組
                        P0=0xFF;  // 關閉P0組
                        P3=0xFF;  // 關閉P3組
                        P2=loopled;
                        break;
                case 2:// P3組
                        P0=0xFF;  // 關閉P0組
                        P2=0xFF;  // 關閉P2組
                        P3=loopled;
                        break;
        }
}

/*
********************************************************************************
** 函數名稱 : delay(uint z)
** 函數功能 : 延時函數
********************************************************************************
*/
void delay(uint z)
{
    uchar j;
    for(z;z>0;z--)
        for(j=100;j>0;j--);
}

流水燈.jpg (452.12 KB, 下載次數: 137)

流水燈.jpg

流水燈·.zip

9.1 KB, 下載次數: 10

回復

使用道具 舉報

5#
ID:517466 發表于 2019-6-10 00:21 | 只看該作者
我發給你的,沒有接入LED。你只需要仿真,看到P0,P2,P3口隨著按鈕每按一次,只有一個口線輸出0(視為點亮LED),并一直保持循環即可。
回復

使用道具 舉報

6#
ID:517466 發表于 2019-6-10 00:27 | 只看該作者
我的程序中沒有使用中斷。改成中斷的話,需要調整按鈕連接的口線,連接到P3口的外部中斷管腳上(INT0或者INT1),同時把程序中P3組的循環改成P1。51的外部中斷的設置,參照的例子很多,也很簡單。
設置中斷處理后,當按鈕按下時,會自動產生中斷。在中斷處理中執行led()函數就可以的。
回復

使用道具 舉報

7#
ID:558594 發表于 2019-6-10 01:38 來自手機 | 只看該作者
逐個點亮不是可以用,循環左移_crol(0,1),我感覺可以用
回復

使用道具 舉報

8#
ID:555516 發表于 2019-6-10 20:25 | 只看該作者
suncat0504 發表于 2019-6-10 00:18
/** 流水燈*/
#include

很強,,,我代碼寫得有點差 ,,大佬你的代碼很強,謝謝
回復

使用道具 舉報

9#
ID:555516 發表于 2019-6-10 21:53 | 只看該作者
文二 發表于 2019-6-10 01:38
逐個點亮不是可以用,循環左移_crol(0,1),我感覺可以用

我需要逐個點亮16個LED燈 所以要2個端口  ,直接用循環左移只能點亮一半或者2個端口一起逐個點亮
回復

使用道具 舉報

10#
ID:554109 發表于 2019-6-11 08:26 | 只看該作者
感覺你的代碼也有一定的問題,while(1)中無論有沒有語句好像都需要{}這個吧,即使是空循壞也是需要這個的
回復

使用道具 舉報

11#
ID:555516 發表于 2019-6-11 20:41 | 只看該作者
冰麒麟 發表于 2019-6-11 08:26
感覺你的代碼也有一定的問題,while(1)中無論有沒有語句好像都需要{}這個吧,即使是空循壞也是需要這個的

呃,,,這個我解釋不了,這個代碼是我老師說的  我并不理解,但他說沒錯的
回復

使用道具 舉報

12#
ID:517466 發表于 2019-6-11 22:09 | 只看該作者
while語句有沒有{}無所謂的。有,表示條件為真時執行一段代碼塊,因為執行語句多,所以用{}包起來。沒有{}的話,條件為真時,執行緊鄰其后的一個有效語句,哪怕是一個“;”,表示空語句,什么也不做。樓主的代碼中,所有處理都放在中斷處理中執行,所以主處理中什么都不做,僅僅是一個死循環罷了。
回復

使用道具 舉報

13#
ID:557774 發表于 2019-6-12 00:03 來自手機 | 只看該作者
比我寫的好多了,我還是個初學者
回復

使用道具 舉報

14#
ID:216226 發表于 2019-6-12 08:48 | 只看該作者
4樓的寫的還可以了
回復

使用道具 舉報

15#
ID:560560 發表于 2019-6-12 09:14 | 只看該作者
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define led_8 P1
uchar m;
void ys (uint x)
{ uchar i;
while(x--)
for(i=0;i<120;i++);
}
void main()
{
uchar j,k;
while(1)
{
for(j=0;j<3;j++)
{
m=0x7f;
k=0;
while(k!=8)
{
m=_crol_(m,1);
led_8=m;
ys(500);
k++;
}

led_8=0xff;
ys(500);
for(j=0;j<3;j++)
{
led_8=0x55;
ys(500);
led_8=0xaa;
ys(500);
}
led_8=0xff;
ys(500);
k=0;
while(k!=8)
{
led_8<<=1;
ys(500);
k++;
}

}
}
}
回復

使用道具 舉報

16#
ID:560560 發表于 2019-6-12 09:16 | 只看該作者
如果不能的話,我建議你改一下圖
回復

使用道具 舉報

17#
ID:559917 發表于 2019-6-12 09:26 | 只看該作者
suncat0504 發表于 2019-6-10 00:18
/** 流水燈*/
#include

我印象中我有做過流水燈
回復

使用道具 舉報

18#
ID:555516 發表于 2019-6-12 19:15 | 只看該作者
suncat0504 發表于 2019-6-11 22:09
while語句有沒有{}無所謂的。有,表示條件為真時執行一段代碼塊,因為執行語句多,所以用{}包起來。沒有{} ...

那我想問大佬個問題,我想要實現用中斷去控制其他中斷的暫停和開始該怎么做?
回復

使用道具 舉報

19#
ID:555516 發表于 2019-6-12 19:17 | 只看該作者
數據集 發表于 2019-6-12 09:14
#include
#include
#define uint unsigned int

謝謝了,樓上的大佬已經幫我搞定了,,,謝謝
回復

使用道具 舉報

20#
ID:517466 發表于 2019-6-12 20:46 | 只看該作者
czd175711 發表于 2019-6-12 19:15
那我想問大佬個問題,我想要實現用中斷去控制其他中斷的暫停和開始該怎么做?

利用中斷控制位啊。建議你看看單片機原理。每個中斷都有自己的控制位,比如51單片機中的ET0,ET1,ES等。通常控制位=0,就表示禁止那個中斷的響應處理。控制位=1,表示允許那個中斷來的時候,調用對應的中斷處理。
回復

使用道具 舉報

21#
ID:517466 發表于 2019-6-12 20:54 | 只看該作者
czd175711 發表于 2019-6-12 19:15
那我想問大佬個問題,我想要實現用中斷去控制其他中斷的暫停和開始該怎么做?

中斷處理中控制其它中斷,還需要考慮優先級的問題。比如在低級中斷中控制高級中斷,會出現這樣的情況:低級的在執行高級中斷禁止的時候,還沒來得及執行禁止語句的時候,高級中斷發生了。也就是說,有時候,你覺得你已經禁止某個中斷了,結果實際運行中,還是出現了那個被禁止的中斷被執行過。這就是優先級有高低而產生的問題,在實際應用中要加以注意。
不忙的時候,多看看原理方面的書,對工作會有很大幫助的。
回復

使用道具 舉報

22#
ID:517466 發表于 2019-6-12 20:58 | 只看該作者
初學編程的人,給你們提一個建議:一點更要養成良好的編程習慣。比如加注釋,變量、函數命名方式,對其縮進等等,開始可能覺得很煩,習慣了就好了。這樣自己做的東西,別人也容易理解。自己以后修改或者代碼重用,也不會出現摸不到頭腦的情況。
回復

使用道具 舉報

23#
ID:555516 發表于 2019-6-13 11:01 來自手機 | 只看該作者
suncat0504 發表于 2019-6-12 20:46
利用中斷控制位啊。建議你看看單片機原理。每個中斷都有自己的控制位,比如51單片機中的ET0,ET1,ES等。 ...

這個我知道,我試過用中斷,但是中斷里面的代碼應該是什么?把總中斷EA取反嗎?
回復

使用道具 舉報

24#
ID:561674 發表于 2019-6-13 12:07 | 只看該作者
suncat0504 發表于 2019-6-11 22:09
while語句有沒有{}無所謂的。有,表示條件為真時執行一段代碼塊,因為執行語句多,所以用{}包起來。沒有{} ...

應該會出錯吧
回復

使用道具 舉報

25#
ID:517466 發表于 2019-6-13 12:50 | 只看該作者
czd175711 發表于 2019-6-13 11:01
這個我知道,我試過用中斷,但是中斷里面的代碼應該是什么?把總中斷EA取反嗎?

盡量不要用取反,使用明確的賦值。比如在串口中斷中,禁止使用計時器0 的中斷時,
/*------------------------------------------------
                     串口中斷程序
------------------------------------------------*/
void com_intr (void) interrupt 4 //串行中斷服務程序
{
    unsigned char Temp;    //定義臨時變量
    uchar i=0;
    ET=0;                  // 臨時禁止Timer0的中斷
    if(RI) {               //判斷是接收中斷產生
              RI=0;              //標志位清零
              Temp=SBUF;         //讀入緩沖區的值
        SBUF=Temp;         //把接收到的值再發回電腦端
         }
   if(TI) {                //如果是發送標志位,清零
                 comio=~comio;
     TI=0;
   }
   ET0=1;                  // 允許Timer0的中斷
}
回復

使用道具 舉報

26#
ID:561732 發表于 2019-6-13 13:48 | 只看該作者
我也在做這個
回復

使用道具 舉報

27#
ID:560178 發表于 2019-6-13 17:13 | 只看該作者
可以先一個一個點亮試試,再整合代碼逐個點亮,加油!
回復

使用道具 舉報

28#
ID:555516 發表于 2019-6-17 14:00 | 只看該作者
suncat0504 發表于 2019-6-10 00:18
/** 流水燈*/
#include

有段代碼不怎么理解 ,想問一下什么意思
// 循環左移
        loopled=loopled<<1;
        // 最右補1,防止點亮最后一個LED
        loopled=loopled|1;


loopled<<1// 循環左移 到最后loopled應該等于0X7F
那么最右補1 怎么能做到防止點亮最后一個LED


[// 最右補1,防止點亮最后一個LED
        loopled=loopled|1;】這個代碼是怎么理解的

回復

使用道具 舉報

29#
ID:555516 發表于 2019-6-17 14:19 | 只看該作者
suncat0504 發表于 2019-6-13 12:50
盡量不要用取反,使用明確的賦值。比如在串口中斷中,禁止使用計時器0 的中斷時,
/*------------------ ...

有個問題想問,,,,為什么要用串口來實現中斷?INT0的優先級是最高的,,那用INT0會不會更好,而且我小白,,,這個代碼有點看不懂。   我用INT0中斷去將EX1  ET0  ET1 取反  在仿真上可以實現暫停,但我將代碼燒錄進實物  卻實現不了,想問下為什么
回復

使用道具 舉報

30#
ID:555516 發表于 2019-6-17 15:29 來自手機 | 只看該作者
suncat0504 發表于 2019-6-10 00:18
/** 流水燈*/
#include


哦,,,我好像理解了,|表示的應該是或的意思吧,
回復

使用道具 舉報

31#
ID:517466 發表于 2019-6-17 16:36 | 只看該作者
czd175711 發表于 2019-6-17 14:00
有段代碼不怎么理解 ,想問一下什么意思
// 循環左移
        loopled=loopled

循環左移場合,字節的Bit0會自動補入0,不或上‘1’的話,會導致bit0對應的LED也被點亮。
對于數據FF,不斷左移后的變化是:FE,FC, F8, F0, E0,C0,80, 00
回復

使用道具 舉報

32#
ID:517466 發表于 2019-6-17 16:41 | 只看該作者
czd175711 發表于 2019-6-17 14:19
有個問題想問,,,,為什么要用串口來實現中斷?INT0的優先級是最高的,,那用INT0會不會更好,而且我小 ...

我是給你舉個在中斷中禁止其他中斷的例子。你的程序仿真沒有問題,寫入芯片后不執行,需要調試。通過管腳輸出數據或者通過串口向PC發數據,來觀察中間的處理過程。沒有你的程序,我也只能告訴你這么做。
回復

使用道具 舉報

33#
ID:564818 發表于 2019-6-17 17:28 | 只看該作者
用匯編比較簡單 左移右移
回復

使用道具 舉報

34#
ID:555516 發表于 2019-6-17 21:37 | 只看該作者
suncat0504 發表于 2019-6-17 16:41
我是給你舉個在中斷中禁止其他中斷的例子。你的程序仿真沒有問題,寫入芯片后不執行,需要調試。通過管腳 ...

我現在附上完整代碼了   可以幫我看看,,謝謝
回復

使用道具 舉報

35#
ID:555516 發表于 2019-6-17 21:42 | 只看該作者
suncat0504 發表于 2019-6-17 16:36
循環左移場合,字節的Bit0會自動補入0,不或上‘1’的話,會導致bit0對應的LED也被點亮。
對于數據FF, ...

但是loopled=0xfe   循環左移 不應該是 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f 這樣嗎?   
回復

使用道具 舉報

36#
ID:555516 發表于 2019-6-17 21:45 | 只看該作者
1441 發表于 2019-6-17 17:28
用匯編比較簡單 左移右移

匯編,,,我不怎么會匯編,,,而且匯編的可看性不好,,我一個小白還是先用C語言來學比較好
回復

使用道具 舉報

37#
ID:564631 發表于 2019-6-18 16:29 | 只看該作者
你暫停了之后沒有保存當前的值,當開啟之后丟失了當前值,還有一個就是你暫定后,只是中斷停止了,但是外面的while循環還在執行LED
回復

使用道具 舉報

38#
ID:517466 發表于 2019-6-18 21:49 | 只看該作者
czd175711 發表于 2019-6-17 21:42
但是loopled=0xfe   循環左移 不應該是 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f 這樣嗎?

在我印象中,匯編語言的左移有兩種,一種是含進位的,RLC A;一種是不含進位C的左移 RL A,都是循環模式。對于循環左移一次,Bit7變成Bit0;其他的,順序左移。
但是在C語言中,只有<<左移,>>右移,是不具有循環方式的(抱歉沒有說清楚),也就是說,在C語言中,使用<<一次后,最右側Bit0補零;使用>>移位一次后,最左側Bit7補零。
回復

使用道具 舉報

39#
ID:517466 發表于 2019-6-18 21:52 | 只看該作者
czd175711 發表于 2019-6-17 21:37
我現在附上完整代碼了   可以幫我看看,,謝謝

在你的代碼中,我沒有看到中斷處理中,對其他中斷做禁止和許可的操作啊
回復

使用道具 舉報

40#
ID:555516 發表于 2019-7-11 16:21 來自手機 | 只看該作者
suncat0504 發表于 2019-6-18 21:52
在你的代碼中,我沒有看到中斷處理中,對其他中斷做禁止和許可的操作啊

我在外部中斷INT0那里將 ET0  ET1 EX1都取反來實現中斷的禁止和開啟(我之前說我仿真可以實現暫停和開始,但實物不行,后來我發現是我焊接的問題,事實上仿真和實物都可以實現),但是都只能在按下暫停鍵后讓正在實施的中斷的代碼全部運行完了之后才暫停,想問下怎么實現按下暫停鍵就將正在運行中斷的實物停在那里,就是說按下暫停鍵后就停止在那個燈的位置(前段時間在期末考試沒有時間上論壇)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一级二级三级 | 久久精品欧美一区二区三区麻豆 | 国产精品美女久久久久aⅴ国产馆 | 亚洲一本 | a在线v| www.日韩| 中文字幕 国产 | 免费亚洲网站 | 久久99精品久久久久久 | 91精品国产综合久久婷婷香蕉 | 成人a在线| 91麻豆产精品久久久久久 | 看片wwwwwwwwwww| 黄色国产视频 | 日韩成人在线观看 | 国产精品99久久久久久久vr | 亚洲欧洲精品一区 | 久久久综合色 | 天堂成人国产精品一区 | 久久99精品国产99久久6男男 | 正在播放国产精品 | 国产一级特黄aaa大片评分 | 观看av | 一区二区三区国产好的精 | 精品不卡 | 人人干97| 久久久高清 | 美女爽到呻吟久久久久 | 久久久久精 | 日韩一区二区成人 | 久久久国产一区 | 成人精品鲁一区一区二区 | 野狼在线社区2017入口 | 亚洲久草| 国产精品久久久久久久久久免费看 | 男女羞羞视频在线观看 | 91最新入口 | 涩涩视频网站在线观看 | av手机在线播放 | 精品视频一区二区三区 | 一二三四在线视频观看社区 |