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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2662|回復: 1
收起左側

單片機貪吃蛇+俄羅斯方塊+萬年歷仿真與源碼 12864顯示

[復制鏈接]
ID:249790 發表于 2017-11-15 19:35 | 顯示全部樓層 |閱讀模式
貪吃蛇俄羅斯方塊萬年歷的仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png 0.png 0.png

單片機源程序如下:
  1. //版本:V1.0
  2. //作品:貪吃蛇+萬年歷+俄羅斯方塊
  3. //作者所屬院校:南陽理工學院
  4. //作者QQ: 497259320
  5. //申明:轉載請標明作品來源 知識產權歸作者本人所有!
  6. //工作之余,寫下此程序,程序、設計中有很多不足之處,風格、命名也很亂,這是下一個版本要改進的
  7. //在V1.1版本中還會增加矩陣鍵盤和科學計算器等功能,此程序已成功移植于AVR單片機。硬件上實現要修改底層驅動!
  8. #include <at89x51.h>
  9. #include "18b20.h"
  10. #include "1302.h"
  11. #include "12864.h"
  12. #include "zifu.h"
  13. uchar k,direction;
  14. bit flag;
  15. bit flag5=0;                           //flag5是外部中斷1的標志位 flag1是步進標志
  16. uchar p,dengji;               //定時次數
  17. bit flag1=0;
  18. systemtime realtime;
  19. bit first=1;                                   //中斷次數控制
  20. void dingshi() interrupt 1  using 1  //定時程序.產生步進時間
  21. {
  22.    if(p--)
  23.    {
  24.     TL0=0;
  25.         TH0=0xa0;
  26.         flag1=0;
  27.    }
  28.    else
  29.    {
  30.      flag1=1;
  31.          TL0=0;
  32.          TH0=0x00;
  33.          p=20-(dengji>>1);
  34.    }
  35. }
  36. /*開始確認暫停鍵的判斷*/
  37. void zhongduan1() interrupt 2 using 2
  38. {
  39.    if(!flag5)
  40.    {
  41.      flag5=1;
  42.    }
  43.    else
  44.    {
  45.      flag5=0;
  46.    }
  47. }
  48. void zhongduan() interrupt 0 using 0
  49.   {
  50.     uchar i=0;
  51.         if(first)               //FIRST=1;打開方向按鍵判斷標志
  52.         {
  53.         first=0;            
  54.         k=(P2>>6);          
  55.         k=k&0x03;                               
  56.         if(flag)
  57.           {
  58.             if(k==1)     direction=3;//左
  59.             if(k==2)         direction=1;//右
  60.              }
  61.           else
  62.           {
  63.             if(k==0)         direction=4;//上
  64.             if(k==3)         direction=2;//下
  65.              }
  66.         }
  67.   }
  68. /*顯示四個小格的方塊*/
  69. void playbuf(uchar buff,char offsetx,char offsety)          
  70. {
  71.   //i=(moxing+((dat&0xf0)|((dat&0x0f)<<2)));
  72.   change1((((*(moxing+((buff&0xf0)+((buff&0x0f)<<2))))&0xf0)>>4)+offsetx,((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))))&0x0f)+offsety);
  73.   change1((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+1)))&0xf0)>>4)+offsetx,((*(((moxing+((buff&0xf0)|((buff&0x0f)<<2))))+1))&0x0f)+offsety);
  74.   change1((((*(((moxing+((buff&0xf0)|((buff&0x0f)<<2))))+2))&0xf0)>>4)+offsetx,((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0x0f)+offsety);
  75.   change1((((*(((moxing+((buff&0xf0)|((buff&0x0f)<<2))))+3))&0xf0)>>4)+offsetx,((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0x0f)+offsety);

  76. }
  77. /*判斷方塊停止向下運動*/
  78. bit tingzhixia(uchar buff,char offsetx,char offsety)
  79. {
  80.    char x0,y0,x1,y1,x2,y2,x3,y3;
  81.    bit tz=0;
  82.    x0=(((*(moxing+((buff&0xf0)|((buff&0x0f)<<2))))&0xf0)>>4)+offsetx;
  83.    x1=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2))+1)))&0xf0)>>4)+offsetx;
  84.    x2=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0xf0)>>4)+offsetx;
  85.    x3=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0xf0)>>4)+offsetx;
  86.    y2=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0x0f)+offsety;
  87.    y3=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0x0f)+offsety;
  88.    y0=((*(moxing+((buff&0xf0)|((buff&0x0f)<<2))))&0x0f)+offsety;
  89.    y1=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+1))&0x0f)+offsety;
  90.    
  91.    if(readfk(x0+1,y0))
  92.    {
  93.       if(!((((x0+1)==x1)&&(y0==y1))|(((x0+1)==x2)&&(y0==y2))|(((x0+1)==x3)&&(y0==y3))))
  94.          {
  95.           tz=1;
  96.           }
  97.    }
  98.     if(readfk(x1+1,y1))
  99.    {
  100.       if(!((((x1+1)==x0)&&(y1==y0))|(((x1+1)==x2)&&(y1==y2))|(((x1+1)==x3)&&(y1==y3))))
  101.          {
  102.           tz=1;
  103.          }
  104.    }
  105.    if(readfk(x2+1,y2))
  106.    {
  107.       if(!((((x2+1)==x0)&&(y2==y0))|(((x2+1)==x1)&&(y2==y1))|(((x2+1)==x3)&&(y2==y3))))
  108.           {
  109.            tz=1;
  110.           }
  111.    }
  112.    if(readfk(x3+1,y3))
  113.    {
  114.       if(!((((x3+1)==x0)&&(y3==y0))|(((x3+1)==x1)&&(y3==y1))|(((x3+1)==x2)&&(y3==y2))))
  115.           {
  116.            tz=1;
  117.           }
  118.    }
  119.    return(tz);
  120. }
  121. /*判斷一行是否可以消除*/
  122. bit hangman(uchar x)
  123. {
  124. uchar i;
  125. bit   man=1;
  126. for(i=0;i<15;i++)
  127. {
  128.         man=man&(readfk(x,i));
  129.         if(!man)
  130.         break;
  131. }
  132. return(man);
  133. }
  134. /*消除一行*/
  135. void xiaohang(uchar x)
  136. {
  137.   uchar i,j;
  138.   for(i=0;i<15;i++)
  139.   {
  140.     clear1(x,i);
  141.   }
  142.   for(i=1;i<=x;i++)
  143.   {
  144.    for(j=0;j<15;j++)
  145.    {
  146.      if(readfk(x-i,j))
  147.          {
  148.           change1(x-i+1,j);
  149.           clear1(x-i,j);
  150.          }
  151.    }
  152.   }
  153. }
  154. /*判斷是否停止向右*/
  155. bit tingzhiyou(uchar buff,char offsetx,char offsety)
  156. {
  157.    char x0,y0,x1,y1,x2,y2,x3,y3;
  158.    bit tz=0;
  159.    x0=(((*(moxing+((buff&0xf0)|((buff&0x0f)<<2))))&0xf0)>>4)+offsetx;
  160.    x1=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2))+1)))&0xf0)>>4)+offsetx;
  161.    x2=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0xf0)>>4)+offsetx;
  162.    x3=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0xf0)>>4)+offsetx;
  163.    y2=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0x0f)+offsety;
  164.    y3=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0x0f)+offsety;
  165.    y0=((*(moxing+((buff&0xf0)|((buff&0x0f)<<2))))&0x0f)+offsety;
  166.    y1=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+1))&0x0f)+offsety;
  167.    if(readfk(x0,y0-1))
  168.    {
  169.       if(!(((x0==x1)&&((y0-1)==y1))|((x0==x2)&&((y0-1)==y2))|((x0==x3)&&((y0-1)==y3))))
  170.          {
  171.            tz=1;
  172.           }
  173.    }
  174.    if(readfk(x1,y1-1))
  175.      {
  176.       if(!(((x1==x0)&&((y1-1)==y0))|((x1==x2)&&((y1-1)==y2))|((x1==x3)&&((y1-1)==y3))))
  177.          {
  178.           tz=1;          
  179.          }
  180. }
  181.     if(readfk(x2,y2-1))
  182.    {
  183.       if(!(((x2==x0)&&((y2-1)==y0))|((x2==x1)&&((y2-1)==y1))|((x2==x3)&&((y2-1)==y3))))
  184.           {
  185.            tz=1;
  186.           }
  187.    }
  188.       if(readfk(x3,y3-1))
  189.    {
  190.       if(!(((x3==x0)&&((y3-1)==y0))|((x3==x1)&&((y3-1)==y1))|((x3==x2)&&((y3-1)==y2))))
  191.           {
  192.            tz=1;
  193.           }
  194.    }
  195.    return(tz);
  196. }
  197. /*判斷是否停止向左*/
  198. bit tingzhizuo(uchar buff,char offsetx,char offsety)
  199. {
  200.    char x0,y0,x1,y1,x2,y2,x3,y3;
  201.    bit tz=0;
  202.    x0=(((*(moxing+((buff&0xf0)|((buff&0x0f)<<2))))&0xf0)>>4)+offsetx;
  203.    x1=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2))+1)))&0xf0)>>4)+offsetx;
  204.    x2=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0xf0)>>4)+offsetx;
  205.    x3=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0xf0)>>4)+offsetx;
  206.    y2=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0x0f)+offsety;
  207.    y3=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0x0f)+offsety;
  208.    y0=((*(moxing+((buff&0xf0)|((buff&0x0f)<<2))))&0x0f)+offsety;
  209.    y1=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+1))&0x0f)+offsety;
  210.    if(readfk(x0,y0+1))
  211.    {
  212.       if(!(((x0==x1)&&((y0+1)==y1))|((x0==x2)&&((y0+1)==y2))|((x0==x3)&&((y0+1)==y3))))
  213.          {
  214.            tz=1;
  215.           }
  216.    }
  217.    if(readfk(x1,y1+1))
  218.      {
  219.       if(!(((x1==x0)&&((y1+1)==y0))|((x1==x2)&&((y1+1)==y2))|((x1==x3)&&((y1+1)==y3))))
  220.          {
  221.           tz=1;          
  222.          }
  223. }
  224.     if(readfk(x2,y2+1))
  225.    {
  226.       if(!(((x2==x0)&&((y2+1)==y0))|((x2==x1)&&((y2+1)==y1))|((x2==x3)&&((y2+1)==y3))))
  227.           {
  228.            tz=1;
  229.           }
  230.    }
  231.       if(readfk(x3,y3+1))
  232.    {
  233.       if(!(((x3==x0)&&((y3+1)==y0))|((x3==x1)&&((y3+1)==y1))|((x3==x2)&&((y3+1)==y2))))
  234.           {
  235.            tz=1;
  236.           }
  237.    }
  238.    return(tz);
  239. }
  240. /*清除一個方塊*/
  241. void clearbuf(uchar dat,char setx,char sety)
  242. {
  243.   uchar *i;
  244.   i=(moxing+((dat&0xf0)|((dat&0x0f)<<2)));
  245.   clear1(((((*i)&0xf0)>>4)+setx),(((*i)&0x0f)+sety));
  246.   clear1(((((*(i+1))&0xf0)>>4)+setx),(((*(i+1))&0x0f)+sety));
  247.   clear1(((((*(i+2))&0xf0)>>4)+setx),(((*(i+2))&0x0f)+sety));
  248.   clear1(((((*(i+3))&0xf0)>>4)+setx),(((*(i+3))&0x0f)+sety));  
  249. }
  250. /*俄羅斯方塊子程序*/
  251. void fangkuai(void)
  252. {
  253.   uchar fenshu=0;
  254.   char offsety,offsetx;
  255.   char offsety_buff,offsetx_buff;
  256.   uchar buff=0x10;                 
  257.   bit ting=0;                                                               
  258.   uchar i;
  259.   //flag5=1;
  260.   TMOD=1;          //定時器工作方式
  261.   IT0=1;          //邊延有效
  262.   IT1=1;
  263.   EA=1;                  //開CPU中斷
  264.   ET0=1;          //開定時器中斷
  265.   EX0=1;          //開外部中斷
  266.   EX1=1;
  267.   TL0=0x00;
  268.   TH0=0x00;          //定時器初值
  269.   TR0=1;          //啟動定時器
  270.   k=5;
  271.   choose12864(2);
  272.   clear12864();
  273.   play16(0,0,0,els);
  274.   play16(0,0,1,els+32);
  275.   play16(0,0,2,els+64);
  276.   play16(0,2,0,els+96);
  277.   play16(0,2,1,els+128);
  278.   play8(0,0,3,shu0);
  279.   play8(0,1,3,shu0);
  280.   vertical(1,60,30);
  281.   vertical(1,60,127);
  282.   for(i=0;i<98;i++)
  283.   {
  284.     dot(30+i,1);
  285.         dot(30+i,62);
  286.   }
  287.   offsety=7;
  288.   offsetx=-3;
  289.   for(;;)
  290. {
  291.    if(P3&0x04)
  292.    first=1;
  293.    if((k==0x02)&&((P3&0x04)==0x04))
  294.    {
  295.      offsety_buff=offsety;
  296.          ting=tingzhiyou(buff,offsetx,offsety);
  297.         if(!ting)
  298.          {
  299.           if(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0x0f)+offsety)
  300.       offsety--;
  301.           clearbuf(buff,offsetx_buff,offsety_buff);
  302.           playbuf(buff,offsetx,offsety);
  303.           offsety_buff=offsety;
  304.           
  305.     }
  306.           k=5;
  307.    }
  308.    if((k==0x01)&&((P3&0x04)==0x04))
  309.    {

  310.      offsety_buff=offsety;
  311.          ting=tingzhizuo(buff,offsetx,offsety);
  312.          if(!ting)
  313.         {
  314.          if(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0x0f)+offsety<=13)
  315.      offsety++;
  316.          k=5;
  317.          clearbuf(buff,offsetx_buff,offsety_buff);
  318.          playbuf(buff,offsetx,offsety);
  319.          offsety_buff=offsety;
  320.         }
  321.    }
  322.    if((k==0x03)&&((P3&0x04)==0x04))
  323.    {
  324.      dengji=36;/////////////
  325.          k=5;
  326.    }
  327.    if((k==0x00)&&((P3&0x04)==0x04))
  328.    {
  329.       uchar i;
  330.           k=5;
  331.           i=buff;
  332.           buff++;
  333.           if((buff&0x0f)>=4)
  334.           buff=buff&0xf0;
  335.           
  336.           //change1(0,14);
  337.       if(((*(((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0x0f)+offsety)>14)
  338.        {
  339.              do
  340.                   {
  341.                           offsety--;
  342.                   }while((((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0x0f)+offsety)>14);
  343.                  
  344.            }
  345.           if(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0x0f)+offsety<0)
  346.           {
  347.             do
  348.                 {
  349.                   offsety++;
  350.                 }while(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0x0f)+offsety);
  351.           }
  352.           clearbuf(i,offsetx_buff,offsety_buff);
  353.           playbuf(buff,offsetx,offsety);
  354.    }
  355.    ting=tingzhixia(buff,offsetx,offsety);
  356.    while(flag5);
  357.    if(flag1)
  358.    {
  359.      offsetx_buff=offsetx;
  360.          offsety_buff=offsety;
  361.      offsetx++;
  362.          clearbuf(buff,offsetx_buff,offsety_buff);
  363.          playbuf(buff,offsetx,offsety);
  364.      offsetx_buff=offsetx;
  365.          flag1=0;
  366.     }
  367.    if((((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+1)))&0xf0)>>4)+offsetx)>22)|ting)
  368.    {
  369.     uchar i=0;
  370.         if(hangman((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+1)))&0xf0)>>4)+offsetx))
  371.         {xiaohang((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+1)))&0xf0)>>4)+offsetx);fenshu++;i++;}
  372.    
  373.         if((((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0xf0)>>4)+offsetx>=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0xf0)>>4)+offsetx)         //x2>=x3
  374.         {
  375.          if((((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0xf0)>>4)+offsetx<(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2))+1)))&0xf0)>>4)+offsetx)        //x2<x1
  376.          {
  377.            if(hangman((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+2)))&0xf0)>>4)+offsetx+i))
  378.            {xiaohang((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+2)))&0xf0)>>4)+offsetx+i);fenshu++;i++;}
  379.          }
  380.          if((((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0xf0)>>4)+offsetx<(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0xf0)>>4)+offsetx)         //x3<x2
  381.           {
  382.            if(hangman((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+3)))&0xf0)>>4)+offsetx+i))
  383.            {xiaohang((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+3)))&0xf0)>>4)+offsetx+i);fenshu++;i++;}
  384.           }
  385.          if((((*(moxing+((buff&0xf0)|((buff&0x0f)<<2))))&0xf0)>>4)+offsetx<(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0xf0)>>4)+offsetx)         //x0<x3
  386.          {
  387.            if(hangman((((*(moxing+((buff&0xf0)+((buff&0x0f)<<2))))&0xf0)>>4)+offsetx+i))
  388.            {xiaohang((((*(moxing+((buff&0xf0)+((buff&0x0f)<<2))))&0xf0)>>4)+offsetx+i);fenshu++;i++;}
  389.          }
  390.         }
  391.         if((((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0xf0)>>4)+offsetx<(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0xf0)>>4)+offsetx) //x2<x3
  392.         {
  393.            if((((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0xf0)>>4)+offsetx<(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2))+1)))&0xf0)>>4)+offsetx)
  394.            {
  395.              if(hangman((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+3)))&0xf0)>>4)+offsetx+i))
  396.              {xiaohang((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+3)))&0xf0)>>4)+offsetx+i);fenshu++;i++;}
  397.            }
  398.            if(hangman((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+2)))&0xf0)>>4)+offsetx+i))
  399.            {xiaohang((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+2)))&0xf0)>>4)+offsetx+i);fenshu++;i++;}
  400.            if((((*(moxing+((buff&0xf0)|((buff&0x0f)<<2))))&0xf0)>>4)+offsetx<(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0xf0)>>4)+offsetx)
  401.            {
  402.              if(hangman((((*(moxing+((buff&0xf0)+((buff&0x0f)<<2))))&0xf0)>>4)+offsetx+i))
  403.              {xiaohang((((*(moxing+((buff&0xf0)+((buff&0x0f)<<2))))&0xf0)>>4)+offsetx+i);fenshu++;i++;}
  404.            }
  405.         }
  406.          
  407.         play8(0,0,3,shu0+((fenshu/10)<<4));
  408.         play8(0,1,3,shu0+((fenshu%10)<<4));
  409.         dengji=fenshu/5;
  410.         if(((((*(moxing+((buff&0xf0)+((buff&0x0f)<<2))))&0xf0)>>4)+offsetx)<1)
  411.         {

  412.           delay1ms(450);
  413.       delay1ms(450);
  414.       choose12864(2);
  415.       clear12864();
  416.       play16(0,4,1,over);
  417.       play16(0,6,1,over+32);
  418.       play16(1,0,1,over+64);
  419.       play16(1,2,1,over+96);
  420.       delay1ms(450);
  421.       delay1ms(450);
  422.       break;
  423.         }       
  424.         buff=(((TL0%7)<<4)|(TH0%4));
  425.         //buff=0x11;
  426.     offsety=7;
  427.     offsetx=-3;
  428.         offsetx_buff=-9;
  429.         offsety_buff=-9;
  430.         }
  431. }

  432. }                                          


  433. /*萬年歷子程序*/                                          
  434. void wannianli(void)
  435. {
  436.   uchar i;
  437.   uchar count1=0;
  438.   k=0;
  439.   choose12864(2);
  440.   init12864();
  441.   clear12864();
  442.   play8(0,0,0,shu2);                 //屏,列,頁,地址
  443.   play8(0,1,0,shu0);
  444.   
  445. ……………………

  446. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
貪吃蛇 俄羅斯方塊 萬年歷.rar (158.82 KB, 下載次數: 52)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:74784 發表于 2017-11-15 22:04 | 顯示全部樓層
這個早在阿莫論壇里見到過~~~~~~~~~~~~~
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品中文在线 | 日韩在线精品视频 | 亚洲区一区二 | 精品视频一区在线 | 欧美久久久久 | 精品久久精品 | 99久久久国产精品 | 性欧美xxxx| 伊人焦久影院 | 黄色日批视频 | 久久久涩 | 久草在线青青草 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 久久久www成人免费无遮挡大片 | 97偷拍视频| av午夜电影 | 毛片免费在线 | 国产日韩一区二区三免费高清 | 久久高清国产视频 | 一区二区三区国产好 | 欧美亚洲国产精品 | 久久精品国产久精国产 | 一级黄色片在线免费观看 | 免费h视频 | 亚洲精品www| 日日摸夜夜添夜夜添精品视频 | 午夜精品一区二区三区三上悠亚 | 日韩在线视频精品 | 在线观看国产网站 | 欧美一级做性受免费大片免费 | 国产日韩精品一区二区 | 日韩色综合 | 久久久精 | 欧美日韩国产精品激情在线播放 | 久久精品国产99国产 | 久久手机在线视频 | av中文在线播放 | 婷婷色国产偷v国产偷v小说 | 狠狠爱综合网 | 日韩视频一级 | 日韩欧美不卡 |