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

標(biāo)題: MSP430單片機(jī)俄羅斯方塊游戲程序設(shè)計(jì) [打印本頁]

作者: 51hei學(xué)習(xí)技術(shù)中    時(shí)間: 2017-3-13 02:19
標(biāo)題: MSP430單片機(jī)俄羅斯方塊游戲程序設(shè)計(jì)
MSP430單片機(jī)游戲程序,俄羅斯方塊,采用TI公司官方MSP430F5529開發(fā)板.TI公司的官方開發(fā)板,原理圖網(wǎng)上都有,TI官網(wǎng)也有下的



源碼:
  1. /*基于MSP430F5529俄羅斯方塊游戲程序*/
  2. //作者:        詹磊
  3. //功能:        基于MSP430F5529俄羅斯方塊游戲程序
  4. //說明:        運(yùn)行環(huán)境:TI官方MSP-EXP5529開發(fā)板(外接4個(gè)帶上拉電阻獨(dú)立按鍵)
  5. //                非原創(chuàng),思路是從51單片機(jī)上移植過來的
  6. //                底層液晶驅(qū)動(dòng)是TI官方提供的LCD API
  7. //                游戲算法部分的底層程序多處已經(jīng)修改,與原版會(huì)有較大的差別
  8. //版本:        測試版 V1.0(基本能流暢運(yùn)行,但需要進(jìn)一步的美化和優(yōu)化)
  9. #include "MSP430F5529.h"
  10. #include "LCD_102x64.h"
  11. #include "main.h"
  12. #include "Key.h"
  13. #define MAXHANG 20                                                //游戲顯示行數(shù)
  14. #define MAXLIE  16                                                //游戲顯示列數(shù)
  15. #define MapWide        48                                                //地圖寬
  16. #define MapHigh        60                                                //地圖高
  17. #define ON                0
  18. #define OFF                1

  19. #define BIT(n)                (1<<(n))
  20. volatile uint cubeMap[MAXHANG];                           //地圖顯示存存
  21. typedef struct{
  22.                uchar const * box;                   //方塊圖形字模數(shù)據(jù)指針
  23.                            uchar cube : 4;                           //方塊形態(tài)(占用4個(gè)位域)
  24.                            uchar state : 4;                           //方塊狀態(tài)(占用4個(gè)位域)
  25.                            char row;                                   //方塊所在行
  26.                            char column;                                   //方塊所在列
  27.                            } block;
  28. block this;
  29. uchar liang=1;
  30. uchar Speed=1,Score=0;
  31. uint timeA=0;
  32. uchar downflag=0;
  33. uchar randomNumber=0;
  34. const uchar cube[]=
  35. {
  36. /* ■
  37.   ■■■
  38. */
  39. 0,4,0xe,0,  0,2,6,2,     0,7,2,0,     4,6,4,0,

  40. /*■
  41.   ■■■
  42. */
  43. 0,8,0xe,0,  0,4,4,0xc,   0,0,0xe,2,   0,6,4,4,
  44. /*■■■
  45.   ■
  46. */
  47. 0,0xe,8,0,  0,4,4,6,     0,1,7,0,     6,2,2,0,
  48. /*■■
  49.     ■■
  50. */
  51. 0,0xc,6,0,  0,2,6,4,     0,6,3,0,     2,6,4,0,
  52. /*  ■■
  53.   ■■
  54. */
  55. 0,6,0xc,0,  0,4,6,2,     0,3,6,0,     4,6,2,0,
  56. /*■■■■
  57. */
  58. 0,0xf,0,0,  4,4,4,4,     0,0,0xf,0,   2,2,2,2,
  59. /*■■
  60.   ■■
  61. */
  62. 0,6,6,0,    0,6,6,0,     0,6,6,0,     0,6,6,0
  63. };
  64. void delay_ms(uint z)//毫秒級(jí)延時(shí)函數(shù)
  65. {
  66.         uint i,m;
  67.         for(i=z;i>0;i--)
  68.                 for(m=4500;m>0;m--)
  69.                 {
  70.                         _NOP();
  71.                 }
  72. }
  73. //-------------------------------------------//
  74. //函數(shù)名:八位LED燈控制函數(shù)
  75. //入口:Number:Number哪位為一則哪位LED點(diǎn)亮
  76. //出口:Void
  77. //功能:
  78. //-------------------------------------------//
  79. void DigitalLedControl(uchar Number)
  80. {
  81.         if(Number&BIT7)
  82.                 P1OUT|=BIT0;
  83.         else
  84.                 P1OUT&=~BIT0;
  85.         if(Number&BIT6)
  86.                 P8OUT|=BIT1;
  87.         else
  88.                 P8OUT&=~BIT1;
  89.         if(Number&BIT5)
  90.                 P8OUT|=BIT2;
  91.         else
  92.                 P8OUT&=~BIT2;
  93.         if(Number&BIT4)
  94.                 P1OUT|=BIT1;
  95.         else
  96.                 P1OUT&=~BIT1;
  97.         if(Number&BIT3)
  98.                 P1OUT|=BIT2;
  99.         else
  100.                 P1OUT&=~BIT2;
  101.         if(Number&BIT2)
  102.                 P1OUT|=BIT3;
  103.         else
  104.                 P1OUT&=~BIT3;
  105.         if(Number&BIT1)
  106.                 P1OUT|=BIT4;
  107.         else
  108.                 P1OUT&=~BIT4;
  109.         if(Number&BIT0)
  110.                 P1OUT|=BIT5;
  111.         else
  112.                 P1OUT&=~BIT5;
  113. }
  114. //-------------------------------------------//
  115. //函數(shù)名:顯存清空函數(shù)
  116. //入口:Void
  117. //出口:Void
  118. //功能:清空顯存
  119. //-------------------------------------------//
  120. void DisplayRamClear()
  121. {
  122.         uchar i;
  123.         for(i=0;i<20;i++)
  124.         {
  125.                 cubeMap[i]=0x0;
  126.         }
  127. }
  128. //-------------------------------------------//
  129. //函數(shù)名:兩位十進(jìn)制數(shù)字顯示函數(shù)
  130. //入口:        Row:顯示的行數(shù)
  131. //                Column:顯示的列數(shù)
  132. //                Number:需要顯示的數(shù)字<100 && >=0
  133. //出口:Void
  134. //功能:
  135. //-------------------------------------------//
  136. void Number2BitDisplay(uchar Row,uchar Column,uchar Number)
  137. {
  138.         uchar tempShi,tempGe;
  139.         tempShi=Number/10;
  140.         tempGe=Number%10;
  141.         Dogs102x6_charDraw(Row, Column,tempShi+'0',ON);
  142.         Dogs102x6_charDraw(Row, Column+6,tempGe+'0',ON);
  143. }
  144. //-------------------------------------------//
  145. //函數(shù)名:游戲背景函數(shù)
  146. //入口:Void
  147. //出口:Void
  148. //功能:繪制游戲背景地圖
  149. //-------------------------------------------//
  150. void GameBackground()
  151. {
  152.         uchar i;
  153.         for(i=0;i<MapHigh+1;i++)
  154.         {
  155.                 Dogs102x6_pixelDraw(0, i, ON);
  156.                 Dogs102x6_pixelDraw(MapWide+1, i, ON);
  157.         }
  158.         for(i=0;i<MapWide+2;i++)
  159.         {
  160.                 Dogs102x6_pixelDraw(i, 0, ON);
  161.                 Dogs102x6_pixelDraw(i, MapHigh+1, ON);
  162.         }
  163.         DisplayRamClear();
  164.         Dogs102x6_stringDraw(3, 10, "START",ON);
  165.         Dogs102x6_stringDraw(1, 51, "NEXT:",ON);
  166.         Dogs102x6_stringDraw(3, 51, "SPEED:--",ON);
  167.         Dogs102x6_stringDraw(5, 51, "SCORE:--",ON);
  168.         Number2BitDisplay(3,87,Speed);
  169.         Number2BitDisplay(5,87,Score);
  170. }
  171. //-------------------------------------------//
  172. //函數(shù)名:游戲Map清空
  173. //入口:Void
  174. //出口:Void
  175. //功能:清空游戲背景地圖(不清空顯存)
  176. //-------------------------------------------//
  177. void GameMapClear()
  178. {
  179.         uchar i,j;
  180.         for(i=0;i<MapHigh;i++)
  181.         {
  182.                 for(j=0;j<MapWide;j++)
  183.                 {
  184.                         Dogs102x6_pixelDraw(j+1, i+1, OFF);
  185.                 }
  186.         }
  187. }
  188. //-------------------------------------------//
  189. //函數(shù)名:系統(tǒng)初始化
  190. //入口:Void
  191. //出口:Void
  192. //功能:
  193. //-------------------------------------------//
  194. void SystemInit()
  195. {
  196.         WDTCTL = WDTPW + WDTHOLD;
  197.         P8DIR|=BIT1+BIT2;
  198.         P8OUT|=BIT1+BIT2;
  199.         P1DIR|=BIT0+BIT1+BIT2+BIT3+BIT4+BIT5;
  200.         P1OUT|=BIT0+BIT1+BIT2+BIT3+BIT4+BIT5;
  201.         InitKey();

  202.         UCSCTL3 = SELREF_2;                       // Set DCO FLL reference = REFO
  203.         UCSCTL4 |= SELA_2;                        // Set ACLK = REFO

  204.         __bis_SR_register(SCG0);                  // Disable the FLL control loop
  205.         UCSCTL0 = 0x0000;                         // Set lowest possible DCOx, MODx
  206.         UCSCTL1 = DCORSEL_7;                      // Select DCO range 50MHz operation
  207.         UCSCTL2 = FLLD_1 + 609;                   // Set DCO Multiplier for 25MHz(這里設(shè)置為20MHz適應(yīng)液晶的SPI通信)
  208.                                                   // (N + 1) * FLLRef = Fdco
  209.                                                   // (762 + 1) * 32768 = 25MHz
  210.                                                   // Set FLL Div = fDCOCLK/2
  211.         __bic_SR_register(SCG0);                  // Enable the FLL control loop
  212.         TA1CCTL0 = CCIE;                          // CCR0 interrupt enabled
  213.         TA1CCR0 = 328-1;
  214.         TA1CTL = TASSEL_1 + MC_1 + TACLR;         // ACLK, upmode, clear TAR
  215.         _BIS_SR(GIE);
  216.         Dogs102x6_init();
  217.         Dogs102x6_clearScreen();
  218.         Dogs102x6_backlightInit();
  219.         Dogs102x6_setContrast(11);
  220.         Dogs102x6_setBacklight(liang);
  221. }
  222. //-------------------------------------------//
  223. //函數(shù)名:3x3點(diǎn)顯示函數(shù)
  224. //入口:        x:x軸坐標(biāo)
  225. //                y:y軸坐標(biāo)
  226. //                mode:ON 打點(diǎn);OFF 消點(diǎn)
  227. //出口:Void
  228. //功能:
  229. //-------------------------------------------//
  230. void Display3x3Pixels(uchar x,uchar y,uchar mode)
  231. {
  232.         x=3*x+1;
  233.         y=3*y+1;
  234.         Dogs102x6_pixelDraw(x, y, mode);
  235.         Dogs102x6_pixelDraw(x+1, y, mode);
  236.         Dogs102x6_pixelDraw(x+2, y, mode);
  237.         Dogs102x6_pixelDraw(x, y+1, mode);
  238.         Dogs102x6_pixelDraw(x+1, y+1, mode);
  239.         Dogs102x6_pixelDraw(x+2, y+1, mode);
  240.         Dogs102x6_pixelDraw(x, y+2, mode);
  241.         Dogs102x6_pixelDraw(x+1, y+2, mode);
  242.         Dogs102x6_pixelDraw(x+2, y+2, mode);
  243. }
  244. //-------------------------------------------//
  245. //函數(shù)名:顯示像素點(diǎn)更改函數(shù)
  246. //入口:        Row:行數(shù)
  247. //                Column:列數(shù)
  248. //                mode:ON 打點(diǎn);OFF 消點(diǎn)
  249. //出口:Void
  250. //功能:
  251. //-------------------------------------------//
  252. void ChangeRamBit(uchar Row,uchar Column,uchar mode)
  253. {
  254.         uint tempData;
  255.         tempData=(0x8000>>(Column%16));
  256.         if(mode==ON)
  257.                 cubeMap[Row]|=tempData;
  258.         else
  259.                 cubeMap[Row]&=~tempData;
  260. }
  261. //-------------------------------------------//
  262. //函數(shù)名:讀取某個(gè)顯示像素點(diǎn)位值函數(shù)
  263. //入口:        Row:行數(shù)
  264. //                Column:列數(shù)
  265. //出口:uchar 1:所選點(diǎn)位1,0:所選的點(diǎn)位0
  266. //功能:
  267. //-------------------------------------------//
  268. uchar ReadDisplayRamBit(uchar Row,uchar Column)
  269. {
  270.         uint tempData;
  271.         tempData=(0x8000>>(Column%16));
  272.         if(cubeMap[Row]&tempData)
  273.                 return 1;
  274.         else
  275.                 return 0;
  276. }
  277. //-------------------------------------------//
  278. //函數(shù)名:下一個(gè)方塊顯示函數(shù)
  279. //入口:        x:x軸坐標(biāo)
  280. //                y:y軸坐標(biāo)
  281. //                *p:圖形字模數(shù)據(jù)指針
  282. //出口:Void
  283. //功能:
  284. //-------------------------------------------//
  285. void showNextCube(uchar const * p,uchar x,uchar y)
  286. #define NexPoinX        27                                                        //下一個(gè)圖形顯示的X坐標(biāo)
  287. #define NexPoinY        2                                                        //下一個(gè)圖形顯示的Y坐標(biāo)
  288. {
  289. uchar i,j,temp;
  290.   for(i=0;i<4;i++)
  291.    {
  292.       temp=0x08;
  293.       for(j=0;j<4;j++)
  294.       {
  295.         if(p[i] & temp)
  296.                 Display3x3Pixels(x+j,y+i,ON);
  297.         else
  298.                 Display3x3Pixels(x+j,y+i,OFF);
  299.         temp>>=1;
  300.       }
  301.    }
  302. }
  303. //-------------------------------------------//
  304. //函數(shù)名:顯示函數(shù)
  305. //入口:Void
  306. //出口:Void
  307. //功能:將顯存的內(nèi)容寫入顯示器顯示
  308. //-------------------------------------------//
  309. void showCubeMap(void)
  310. {
  311. uchar hang,lie;
  312. for(hang=0;hang<MAXHANG;hang++)
  313.   {
  314.    if(cubeMap[hang]!=0)                                                        //跳過某行全為零的地方
  315.    for(lie=0;lie<MAXLIE;lie++)
  316.     {
  317.            if(cubeMap[hang]&(0x8000>>(lie%16)))
  318.                    Display3x3Pixels(lie,hang,ON);
  319.     }
  320.   }
  321. }
  322. //-------------------------------------------//
  323. //函數(shù)名:產(chǎn)生新方塊函數(shù)
  324. //入口:Void
  325. //出口:Void
  326. //功能:
  327. //-------------------------------------------//
  328. void createCube(void)
  329. {
  330.   static uchar next=0;
  331.   this.cube=next;
  332.   next=randomNumber%7;                                                          //產(chǎn)生隨機(jī)數(shù)
  333.   this.row=0;                                                                          //初始行為0
  334.   this.column=6;                                                                  //初始列為6
  335.   this.state=0;                                                                          //初始狀態(tài)為0
  336.   this.box=cube+16*this.cube;                                          //設(shè)定方塊指針起始地址
  337.   showNextCube(cube+16*next,NexPoinX,NexPoinY);        //提示區(qū)顯示下一個(gè)方塊
  338.   timeA=0;
  339.   downflag=0;
  340. }
  341. //-------------------------------------------//
  342. //函數(shù)名:寫顯存函數(shù)
  343. //入口:mode:ON 打點(diǎn);OFF 消點(diǎn)
  344. //出口:Void
  345. //功能:將數(shù)據(jù)寫入顯存,同時(shí)寫入顯示器顯示
  346. //-------------------------------------------//
  347. void writeCubeToMap(uchar mode)
  348. {
  349.         uchar tempData,tempRow,tempColumn,i,j,k=0;
  350.         for(i=0;i<4;i++)
  351.         {
  352.                 tempData=this.box[i];
  353.                 if(tempData==0)
  354.                         continue;
  355.                 for(j=0;j<4;j++)
  356.                 {
  357.                         if(tempData&0x08)
  358.                         {
  359.                                 tempRow=this.row+k;
  360.                                 tempColumn=this.column+j;
  361.                                 ChangeRamBit(tempRow,tempColumn,mode);
  362.                                 Display3x3Pixels(tempColumn,tempRow,mode);
  363.                         }
  364.                         tempData<<=1;
  365.                 }
  366.                 k++;
  367.         }
  368. }
  369. //-------------------------------------------//
  370. //函數(shù)名:方塊邊沿檢測函數(shù)
  371. //入口:Void
  372. //出口:uchar 0:可以繼續(xù)移動(dòng)        1:到底,停止移動(dòng)
  373. //功能:
  374. //-------------------------------------------//
  375. uchar checkClask(void)
  376. {
  377.         uchar tempData,tempRow,tempColumn,i,j,k=0;
  378.         for(i=0;i<4;i++)
  379.         {
  380.                 tempData=this.box[i];
  381.                 if(tempData==0)                                                                                        //跳過全為零的行
  382.                         continue;
  383.                 for(j=0;j<4;j++)
  384.                 {
  385.                         if(tempData&0x08)
  386.                         {
  387.                                 tempRow=this.row+k;
  388.                                 tempColumn=this.column+j;
  389.                                 if        (
  390.                                                 ReadDisplayRamBit(tempRow,tempColumn)        //與邊上的方塊接觸
  391.                                                 ||(tempRow>=MAXHANG)                                        //到了最底部
  392.                                                 ||(tempColumn>=MAXLIE)                                        //到了最右邊
  393.                                                 ||(tempColumn==255)                                                //到了最左邊
  394.                                         )
  395.                                         return 1;                                                                        //返回1,停止移動(dòng)
  396.                         }
  397.                         tempData<<=1;
  398.                 }
  399.                 k++;
  400.         }
  401.         return 0;                                                                                                //返回0,可以繼續(xù)移動(dòng)
  402. }
  403. //-------------------------------------------//
  404. //函數(shù)名:地圖檢測函數(shù)
  405. //入口:Void
  406. //出口:Void
  407. //功能:檢測地圖中是否有滿行,有的話就消行,加分,一定分后加速,同時(shí)刷一次屏
  408. //-------------------------------------------//
  409. void CheckMap()
  410. {
  411.         uchar fullFlag=0;
  412.         static uchar tempScore=0,tempSpeed=0;
  413.         char i,j;
  414.         for(i=MAXHANG-1;i>0;i--)
  415.         {
  416.                 if(cubeMap[i]==0xffff)
  417.                 {
  418.                         fullFlag++;
  419.                         for(j=i;j>0;j--)
  420.                         {
  421.                                 if(j>0)
  422.                                         cubeMap[j]=cubeMap[j-1];
  423.                                 else
  424.                                         cubeMap[j]=0;
  425.                         }
  426.                         i++;
  427.                 }
  428.         }
  429.         tempScore=Score;
  430.         tempSpeed=Speed;
  431.         switch(fullFlag)
  432.         {
  433.         case 1:Score++;break;
  434.         case 2:Score+=2;break;
  435.         case 3:Score+=4;break;
  436.         case 4:Score+=6;break;
  437.         default:break;
  438.         }
  439.         if(Score>99)
  440.         {
  441.                 Speed++;
  442.                 if(Speed>9)
  443.                         Speed=1;
  444.                 Score=0;
  445.         }
  446.         if(tempScore!=Score)
  447.                 Number2BitDisplay(5,87,Score);
  448.         if(tempSpeed!=Speed)
  449.                 Number2BitDisplay(3,87,Speed);
  450.         if(fullFlag)
  451.         {
  452.                 GameMapClear();
  453.                 showCubeMap();
  454.         }
  455. }
  456. //-------------------------------------------//
  457. //函數(shù)名:方塊左移函數(shù)
  458. //入口:Void
  459. //出口:Void
  460. //功能:
  461. //-------------------------------------------//
  462. void moveLeft(void)
  463. {
  464.         writeCubeToMap(OFF);
  465.           this.column--;
  466.           if(checkClask())
  467.                   this.column++;
  468.           writeCubeToMap(ON);
  469. }
  470. //-------------------------------------------//
  471. //函數(shù)名:方塊右移函數(shù)
  472. //入口:Void
  473. //出口:Void
  474. //功能:
  475. //-------------------------------------------//
  476. void moveRigh(void)
  477. {
  478.         writeCubeToMap(OFF);
  479.         this.column++;
  480.         if(checkClask())
  481.                 this.column--;
  482.         writeCubeToMap(ON);
  483. }
  484. //-------------------------------------------//
  485. //函數(shù)名:方塊下移函數(shù)
  486. //入口:Void
  487. //出口:uchar 到底返回1,否則返回0;
  488. //功能:
  489. //-------------------------------------------//
  490. uchar moveDown(void)
  491. {
  492.         writeCubeToMap(OFF);
  493.         this.row++;
  494.         if(checkClask())                                //到底
  495.         {
  496.                 this.row--;
  497.                 writeCubeToMap(ON);
  498.                 CheckMap();                                        //是否消行
  499.                 return 1;
  500.         }
  501.         else
  502.         {
  503.                 writeCubeToMap(ON);
  504.                 return 0;
  505.         }
  506. }
  507. //-------------------------------------------//
  508. //函數(shù)名:方塊翻轉(zhuǎn)函數(shù)
  509. //入口:Void
  510. //出口:Void
  511. //功能:
  512. //-------------------------------------------//
  513. void cubeRotation(void)
  514. {
  515.         uchar temp;
  516.         temp=this.state;
  517.         writeCubeToMap(OFF);
  518.         this.state=++this.state%4;
  519.         this.box=cube+16*this.cube+4*this.state;
  520.         if(checkClask())
  521.         {
  522.                 this.state=temp;
  523.                 this.box=cube+16*this.cube+4*this.state;
  524.         }
  525.         writeCubeToMap(ON);
  526. }
  527. //-------------------------------------------//
  528. //函數(shù)名:俄羅斯方塊結(jié)束界面函數(shù)
  529. //入口:Void
  530. //出口:Void
  531. //功能:
  532. //-------------------------------------------//
  533. void TetrisGameOver()
  534. {
  535.         DisplayRamClear();
  536.         GameMapClear();
  537.         Score=0;
  538.         Speed=1;
  539.         Number2BitDisplay(5,87,Score);
  540.         Number2BitDisplay(3,87,Speed);
  541.         Dogs102x6_stringDraw(3, 13, "GAME",ON);
  542.         Dogs102x6_stringDraw(4, 13, "OVER",ON);
  543. }
  544. //-------------------------------------------//
  545. //函數(shù)名:俄羅斯方塊游戲運(yùn)行函數(shù)
  546. //入口:Void
  547. //出口:Void
  548. //功能:不阻塞CPU
  549. //-------------------------------------------//
  550. void TetrisGame()
  551. {
  552.         uchar temp=0;
  553.         static uchar Flag=0;
  554.         if(Flag==0)
  555.         {
  556.                 createCube();
  557.                 if(checkClask())
  558.                 {
  559.                         TetrisGameOver();
  560.                         delay_ms(1000);
  561.                         GameMapClear();
  562.                 }
  563.                 else
  564.                         writeCubeToMap(ON);
  565.                 Flag=1;
  566.         }
  567.         if(downflag&&Flag)
  568.         {
  569.                 downflag=0;
  570.                 if(moveDown())
  571.                 {
  572.                         Flag=0;
  573.                 }
  574.         }
  575.         temp=GetKey();
  576.         switch(temp)
  577.         {
  578.                 case KeyUP:cubeRotation();DigitalLedControl(0);
  579.                         break;
  580.                 case KeyDOWN:while(moveDown()==0);Flag=0;DigitalLedControl(1);
  581.                         break;
  582.                 case KeyLEFT:moveLeft();DigitalLedControl(2);
  583.                         break;
  584.                 case KeyRIGHT:moveRigh();DigitalLedControl(3);
  585.                         break;
  586.                 case KeyBACK:DigitalLedControl(4);liang=++liang%12;Dogs102x6_setBacklight(liang);
  587.                         break;
  588.                 case KeyMEU:DigitalLedControl(5);
  589.                         break;
  590.                 case 0:
  591.                         break;
  592.                 default:
  593.                         break;
  594.         }
  595. }
  596. void main(void)
  597. {
  598.         SystemInit();
  599.         GameBackground();
  600.         DisplayRamClear();
  601.         GameMapClear();
  602.         showCubeMap();
  603.         while(1)
  604.         {
  605.                 TetrisGame();
  606.         }
  607. }
  608. #pragma vector=TIMER1_A0_VECTOR
  609. __interrupt void TIMER1_A0_ISR(void)
  610. {
  611.         randomNumber=++randomNumber%100;
  612.         if(downflag==0)
  613.                 timeA++;
  614.         if(timeA==(10-Speed)*10)
  615.         {
  616.                 timeA=0;
  617.                 downflag=1;
  618.         }
  619. }
復(fù)制代碼




全部源碼打包下載:
俄羅斯方塊游戲.rar (75.65 KB, 下載次數(shù): 86)



作者: panpan222    時(shí)間: 2018-12-13 21:54
這個(gè)我拿來用不了啊 一直顯示文件路徑有問題
program “make” not found in PATH
作者: 15538053902    時(shí)間: 2020-3-30 15:58
你好,電路圖怎么找、
作者: juju5    時(shí)間: 2022-4-8 12:05
四個(gè)獨(dú)立按鍵怎么裝呀

作者: zzzcccc    時(shí)間: 2023-9-3 16:20
15538053902 發(fā)表于 2020-3-30 15:58
你好,電路圖怎么找、

電路圖可以在德州儀器的單片機(jī)上找產(chǎn)品信息




歡迎光臨 (http://www.izizhuan.cn/bbs/) Powered by Discuz! X3.1
国产日韩欧美视频| 中文字幕毛片| 在线观看岛国片| 福利在线免费| 午夜在线视频| 玛雅亚洲电影| www.98色噜噜噜| 无码人妻丰满熟妇啪啪欧美| chinese少妇国语对白| 5月婷婷6月丁香| 美女又爽又黄免费| 羞羞影院体验区| 日批视频在线播放| 2018狠狠干| 九七久久人人| 欧美成年网站| 一区免费在线| 久久综合久久综合久久综合| 黑人巨大精品欧美一区二区| 国产99久久久久| 国产精品初高中害羞小美女文| 欧美在线播放高清精品| 欧美精品vⅰdeose4hd| 国产亚洲精品美女久久久| 国产精品18久久久久久麻辣| 色婷婷精品国产一区二区三区| 91香蕉视频污版| 国产精品久久免费观看| 91无套直看片红桃| 青青青爽在线视频免费观看| 免费a级人成a大片在线观看| 国产专区在线播放| 影音先锋在线视频| 欧美日韩大片免费观看| 青青草国产成人99久久| 亚洲欧美电影院| 精品亚洲国产成人av制服丝袜| 久久夜色精品一区| 91精品国产综合久久精品app | www.美色吧.com| 亚洲欧洲日韩综合| 男女做爰猛烈刺激| 国产精品区在线观看| www.av在线视频| а√天堂资源官网在线资源| 欧美成人激情| ww亚洲ww在线观看国产| 欧美一卡二卡三卡| 欧美在线www| 成人午夜免费剧场| 夜夜春很很躁夜夜躁| 少妇人妻一区二区| 天堂av在线免费观看| 视频精品一区| 国内精品伊人久久久久av影院| 高跟丝袜一区二区三区| 国模视频一区二区三区| 丰满女人性猛交| 91久久在线播放| 播放灌醉水嫩大学生国内精品| 91杏吧porn蝌蚪| 国产7777| 黄页网站视频在线观看| 亚洲精品乱码日韩| 麻豆91在线看| 欧美日本一区二区三区| 国产精品狠色婷| 性欧美极品xxxx欧美一区二区| 免费观看成人毛片| 免费99热在线观看| 国产一区二区色噜噜| 日本系列欧美系列| 欧美在线制服丝袜| 日韩有码在线视频| 亚洲精品中文字幕乱码三区不卡| 波多野结衣 在线| 中国女人精69xxxxxx视频| 电影av在线| 成人综合专区| 自拍偷拍亚洲欧美日韩| 欧美精品videos性欧美| 久久久久久久中文| 五月婷婷六月婷婷| 中文在线三区| 国语产色综合| 亚洲精品欧美综合四区| 欧美黑人巨大xxx极品| 国产亚洲欧美一区二区 | 爱搞国产精品| 久久国产精品99国产| 色琪琪一区二区三区亚洲区| 国产拍精品一二三| 老司机午夜免费福利| 黄色一二三区| 成av人片在线观看www| 日韩精品一区第一页| 91精品视频网| 九九九九九九精品| 男人av资源站| 色一情一乱一区二区三区| eeuss影院www在线观看| 欧美a级片一区| 精品国产乱码久久久久久天美| 国产精品高清在线观看| 亚洲国产欧美日韩在线| 天天天天天天天干| 色鬼7777久久| 午夜欧美视频| 欧美在线观看一区| 久久久久久久久久久久久久一区| 欧美风情第一页| 人妻一区二区三区免费| 国产日产一区二区| 久久久青草婷婷精品综合日韩| 91精品国产综合久久香蕉麻豆 | 亚洲精品日韩在线观看| 日韩 欧美 中文| 日产精品久久久久久久性色| 欧美激情1区2区| 欧美区一区二区三区| 免费试看一区| 欧美亚洲精品天堂| 精品久久久久一区二区三区| 1024成人| 亚洲娇小xxxx欧美娇小| 国产视频一区二区不卡| 国产精品丝袜一区二区| 国产福利电影网| 亚洲精品中文字幕乱码| 欧美日韩极品在线观看一区| 日韩精品久久久| 手机看片福利视频| 黄页免费观看| 888久久久| 日韩一区二区影院| 青青在线视频免费观看| 成人av无码一区二区三区| 亚洲精品成人图区| 国产日韩精品久久久| 国产精品久久国产精品99gif| 国产毛片久久久久久久| 毛片毛片毛片毛片毛片毛片| 中文字幕区一区二区三| 成人黄色一级视频| 欧美黄色片在线观看| 国产艳妇疯狂做爰视频| 最近免费看av| 欧美国产先锋| 日韩av在线免费观看| 亚洲精品中文字幕无码蜜桃| 免费观看四虎精品成人| 成人涩涩网站| 一本大道av伊人久久综合| 亚洲二区三区四区| 成人av免费播放| 精品久久99| 亚洲1区2区3区4区| 台湾成人av| 亚洲AV无码国产精品午夜字幕 | 国产毛片在线视频| h1515四虎成人| 一区二区三区四区在线播放 | 高清在线视频日韩欧美| 性欧美成人播放77777| 天堂中文字幕——hd| 日韩成人一级| 欧美午夜一区二区三区| 日本中文字幕一级片| 香蕉视频网站在线| 成人av激情人伦小说| 欧美色区777第一页| 亚洲中文字幕无码一区二区三区| 先锋影音男人资源网| 婷婷国产精品| 日韩精品一区二区三区三区免费| 日韩精品一区中文字幕| 免费污片软件| 一本色道久久综合亚洲精品不卡| 久久国产一区二区三区| 一道本视频在线观看| 日日干夜夜骑| 猛男gaygay欧美视频| 亚洲一级二级在线| 亚洲精品视频一二三| 五月婷婷丁香网| 亚洲制服一区| 亚洲国产私拍精品国模在线观看| 亚洲五月激情网| 91麻豆精品国产91久久| 91精品亚洲| 一区二区三欧美| 人妻少妇一区二区| 日本中文字幕在线观看| 久久众筹精品私拍模特| 国产精品一区二区三区在线| 精品人妻一区二区三区含羞草 | 国产精品一国产精品| 亚洲成人av资源网| 国产xxx在线观看| 日本亚洲欧美| 91浏览器在线视频| 久久精品综合一区| 天堂在线视频免费观看| 欧美日中文字幕| www.欧美精品一二三区| 四虎884aa成人精品| www视频在线观看| 精品久久久中文| 欧美a在线视频| 亚州福利视频| 国产精品自拍av| 欧美激情欧美狂野欧美精品| 欧美日韩在线国产| 欧美大片1688网站| 专区另类欧美日韩| 欧美a级黄色大片| 女人爱爱视频| 日本亚洲欧美天堂免费| 92看片淫黄大片看国产片| 午夜美女福利视频| 欧美gvvideo网站| 欧美激情免费观看| 在线永久看片免费的视频| 欧美三级一区| 精品亚洲一区二区三区在线观看| 偷拍夫妻性生活| 国产美女高潮在线| 欧美视频完全免费看| 亚洲午夜精品在线观看| 欧美三级黄网| 欧美日韩一区二区在线 | 亚洲欧洲另类国产综合| 国产女主播自拍| 成人综合av| 久久这里只有精品首页| 无码人妻aⅴ一区二区三区日本| 很黄很色网站| 性欧美videos另类喷潮| 国产日韩欧美视频| 狠狠鲁男人天堂| 久久精品导航| 国产精品视频免费一区二区三区| 中文字幕在线久热精品| 国产在线观看91一区二区三区 | 人人澡人人澡人人看欧美| 国产又粗又猛又爽又黄的视频一 | 久久国产成人精品国产成人亚洲| 写真福利片hd在线观看| 国产欧美日韩精品一区| 欧洲精品一区二区三区久久| 桥本有菜亚洲精品av在线| 综合在线观看色| 99视频在线视频| 欧美日韩在线资源| 欧美日韩国产综合久久| 一道本在线观看| 四虎地址8848精品| 中文字幕欧美视频在线| 岛国av中文字幕| 日韩在线高清| 国产专区精品视频| 国产精品入口麻豆免费| 成人久久视频在线观看| 国产在线视频在线| 撸视在线观看免费视频| 国产拍揄自揄精品视频麻豆| 3d动漫一区二区三区| 国产尤物视频在线| 色噜噜狠狠成人中文综合| 日本aaa视频| 99精品国产九九国产精品| 色天天综合狠狠色| 一区二区三区播放| 在线国产精品一区| 精品一区二区日本| ts人妖交友网站| 亚洲最色的网站| 国产精品久久久免费观看| 欧美天堂在线| 欧美成人亚洲成人日韩成人| 亚洲精品国产精品乱码不卡| 三级欧美在线一区| 中文字幕一区综合| 欧美视频综合| 欧美日韩不卡在线| 精品无码人妻一区二区三区品| 国产a久久精品一区二区三区| 国产精品久久久久久久久| 欧美黑人xxxxx性受| av高清久久久| 亚洲综合色在线观看| www视频在线观看| 尤物精品国产第一福利三区| 91在线你懂的| 琪琪一区二区三区| 国产又粗又猛又爽又黄的网站 | 久久精品亚洲无码| 久久中文字幕av| 国产一区二区无遮挡| 交换国产精品视频一区| 欧美日韩国产丝袜美女| 亚洲精品自拍视频在线观看| 福利精品在线| 久久91亚洲人成电影网站| 亚洲色图一二三区| 99精品国产热久久91蜜凸| 鲁一鲁一鲁一鲁一av| 色尼玛亚洲综合影院| 欧美成人在线影院| 欧美毛片又粗又长又大| 国产亚洲短视频| 日本精品一二三| 91综合久久爱com| 成人日韩在线电影| 久久久久久77777| 欧美性大战久久久| 青草视频在线观看免费| 国产精品亚洲片在线播放| 99re热精品| 老少交欧美另类| 国产精品五月天| 国产传媒第一页| 久久99免费视频| 久久手机视频| 国产一二三区在线视频| 亚洲国产欧美日韩精品| 超碰免费在线97| 久久影院电视剧免费观看| 男男一级淫片免费播放| 精品欧美午夜寂寞影院| 国产精成人品localhost| 日本亚洲天堂| 日韩精品在线一区二区| jlzzjlzzjlzz亚洲人| 亚洲视频碰碰| 成人av在线播放观看| 日韩伦理在线一区| 国内精品久久久久久久久| 一个人看的www在线免费视频| 亚洲观看高清完整版在线观看| 婷婷在线精品视频| 亚洲制服少妇| 无遮挡又爽又刺激的视频| 黄色春季福利在线看| 欧美日韩专区在线| 在线观看黄色国产| 国产91高潮流白浆在线麻豆| 欧美激情一区二区三区p站| 国产成人精品免费视| 日韩精品大片| 免费男女羞羞的视频网站在线观看| 久久精品亚洲国产| 日本免费三片免费观看| 欧美性生活影院| 国产欧美久久久| 国产亚洲精品免费| 黑人操日本美女| 肉丝袜脚交视频一区二区| 91看片在线免费观看| 亚洲欧美tv| 亚洲欧洲精品一区二区| 伊人久久综合一区二区| 国产欧亚日韩视频| 懂色一区二区三区| 久久久视频精品| 毛片毛片毛片毛片| 国产亚洲人成a一在线v站| 91在线资源| 在线成人免费观看| 少妇人妻偷人精品一区二区| 亚洲情趣在线观看| 久久久蜜桃一区二区| 99国产欧美久久久精品| 亚洲一二三四视频| 日本午夜一区二区| 天堂www中文在线资源| 激情成人亚洲| 久久久久久综合网| 91亚洲国产| 国产成人a亚洲精v品无码| 另类在线视频| 精品国产伦理网| 国产网站麻豆精品视频| 欧美亚洲禁片免费| 亚洲第一页在线播放| 亚洲成人免费影院| 97人妻精品一区二区三区| 中文字幕综合网| 精品国产www| 亚洲日本一区二区三区| 免费精品一区二区| 国产精品视频一二三| 中文字幕在线看人| 欧美高清在线一区| 国产suv精品一区二区33| 中文字幕欧美日韩一区| 日本天堂网在线| 国产精品久久夜| 美女100%露胸无遮挡| 日韩av一级片|