Advertisement
Yamian

main.c (16F877A-Showtime)

Mar 15th, 2016
466
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 22.12 KB | None | 0 0
  1. //COPYRIGHT BY YAMI AN
  2. #include"main.h"
  3. __CONFIG(HS&WDTDIS&PWRTEN&UNPROTECT&BORDIS&LVPDIS);
  4. char lrpwm=0,im=60,ir=20,il=30,ib=20,irl=20,irud=20,ic=20,icud=20,i60,i,i20,i30,delay=5,ig=20,pp,pc,status=1,ilv=30;
  5. int duty=100,value_adc;
  6. void _Init_LCD(void);
  7. void _Init_IO(void);
  8. void _Delay(char time);
  9. void _Display_Number(char x,char y,int num);
  10. void _Seti60(char im);
  11. void _Seti20(char ir);
  12. void _Seti30(char il);
  13. void _Processing(void);
  14. void _Main_Menu(void);
  15. void _M_M(char i60);
  16. void _Copyright(void);
  17. void _ADC(void);
  18. void _Nick(void);
  19. void _Name(void);
  20. void _Relay(void);
  21. void _On_Off(char i20);
  22. void _Day(void);
  23. void _Buz(void);
  24. void _Beap(void);
  25. void _Motor(char lrpwm,int dutys);
  26. int _Check_Limit(char x,char y,int limit);
  27. void _Turn_Left_PWM(int duty);
  28. void _Turn_Right_PWM(int duty);
  29. void _Up_Down(char i20);
  30. void _Limit(char delays);
  31. void _Led(void);
  32. void _L_M(char i30);
  33. void _Run(void);
  34. void _R_U(void);
  35. void _R_D(void);
  36. void _Catch(void);
  37. void _C_U(void);
  38. void _C_D(void);
  39. void _Run_Up_LED(char delay);
  40. void _Run_Down_LED(char delay);
  41. void _Catch_Up_LED(char delay);
  42. void _Catch_Down_LED(char delay);
  43. void _H_L(void);
  44. void _High_Low(char delay);
  45. void _O_T_T(void);
  46. void _Level(char i30);
  47. void _EASY(void);
  48. void _HARD(void);
  49. void _One_Two_Three(char i30);
  50. void _One(void);
  51. void _Two(void);
  52. void _Three(void);
  53. void _Rock(char pp,char pc);
  54. void _Paper(char pp,char pc);
  55. void _Scissor(char pp,char pc);
  56. void _Close(void);
  57. void _Win(void);
  58. void _Draw(void);
  59. void _Check_Point(char pp,char pc);
  60. void main(void)
  61. {
  62.     _Init_LCD();
  63.     _Init_IO();
  64.     _KhoiTao_ADC();
  65.     _SETUP_TIMER_0(INTERNAL,DIV256);
  66.     _SET_TIMER0(0);
  67.     _ENABLE_INTERRUPTS(TIMER0);
  68.     _ENABLE_INTERRUPTS(GLOBAL);
  69.     _Processing();
  70.     MainMenu:
  71.     _Main_Menu();
  72.     _Seti60(im);
  73.     _M_M(i60);
  74.     ENABLE=0;
  75.     while(1)
  76.     {
  77.         if(SW1==0)
  78.         {
  79.             while(SW1==0);
  80.             _Copyright();
  81.             goto MainMenu;
  82.         }
  83.         else if(SW2==0)
  84.         {
  85.             while(SW2==0);
  86.             im--;
  87.             goto MainMenu;
  88.         }
  89.         else if(SW3==0)
  90.         {
  91.             while(SW3==0);
  92.             im++;
  93.             goto MainMenu;
  94.         }
  95.         else if(SW4==0)
  96.         {
  97.             while(SW4==0);
  98.             _Seti60(im);
  99.             if(i60==0)
  100.             {
  101.                 ADCMenu:
  102.                 _ADC();
  103.                 while(1)
  104.                 {
  105.                     if(SW1==0)
  106.                     {
  107.                         while(SW1==0);
  108.                         goto MainMenu;
  109.                     }
  110.                     else if(SW2==0)
  111.                     {
  112.                         while(SW2==0);
  113.                         _Nick();
  114.                         goto ADCMenu;
  115.                     }
  116.                     else if(SW3==0)
  117.                     {
  118.                         while(SW3==0);
  119.                         _Name();
  120.                         goto ADCMenu;
  121.                     }
  122.                     else if(SW4==0)
  123.                     {
  124.                         while(SW4==0);
  125.                         goto ADCMenu;
  126.                     }
  127.                 }
  128.             }
  129.             else if(i60==1)
  130.             {
  131.                 RELAYMenu:
  132.                 _Relay();
  133.                 _Seti20(ir);
  134.                 _On_Off(i20);
  135.                 while(1)
  136.                 {
  137.                     if(SW1==0)
  138.                     {
  139.                         while(SW1==0);
  140.                         goto MainMenu;
  141.                     }
  142.                     else if(SW2==0)
  143.                     {
  144.                         while(SW2==0);
  145.                         ir--;
  146.                         _Seti20(ir);
  147.                         if(i20==0)
  148.                             RELAY=0;
  149.                         else
  150.                             RELAY=1;
  151.                         goto RELAYMenu;
  152.                     }
  153.                     else if(SW3==0)
  154.                     {
  155.                         while(SW3==0);
  156.                         ir++;
  157.                         _Seti20(ir);
  158.                         if(i20==0)
  159.                             RELAY=0;
  160.                         else
  161.                             RELAY=1;
  162.                         goto RELAYMenu;
  163.                     }
  164.                     else if(SW4==0)
  165.                     {
  166.                         while(SW4==0);
  167.                         _Day();
  168.                         goto RELAYMenu;
  169.                     }
  170.                 }
  171.             }
  172.             else if(i60==2)
  173.             {
  174.                 BUZMenu:
  175.                 _Buz();
  176.                 _Seti20(ib);
  177.                 _On_Off(i20);
  178.                 while(1)
  179.                 {
  180.                     if(SW1==0)
  181.                     {
  182.                         while(SW1==0);
  183.                         goto MainMenu;
  184.                     }
  185.                     else if(SW2==0)
  186.                     {
  187.                         while(SW2==0);
  188.                         ib--;
  189.                         _Seti20(ib);
  190.                         if(i20==0)
  191.                             BUZ=0;
  192.                         else
  193.                             BUZ=1;
  194.                         goto BUZMenu;
  195.                     }
  196.                     else if(SW3==0)
  197.                     {
  198.                         while(SW3==0);
  199.                         ib++;
  200.                         _Seti20(ib);
  201.                         if(i20==0)
  202.                             BUZ=0;
  203.                         else
  204.                             BUZ=1;
  205.                         goto BUZMenu;
  206.                     }
  207.                     else if(SW4==0)
  208.                     {
  209.                         _Beap();
  210.                         while(SW4==0)
  211.                             BUZ=1;
  212.                         BUZ=0;
  213.                         goto BUZMenu;
  214.                     }
  215.                 }
  216.             }
  217.             else if(i60==3)
  218.             {
  219.                 MOTORMenu:
  220.                 _SetUpPWM1();
  221.                 _SetUpPWM2();
  222.                 ENABLE=1;
  223.                 _Motor(lrpwm,duty);
  224.                 if(lrpwm==1)
  225.                     _Turn_Right_PWM(duty);
  226.                 else
  227.                     _Turn_Left_PWM(duty);
  228.                 while(1)
  229.                 {
  230.                     if(SW1==0)
  231.                     {
  232.                         while(SW1==0);
  233.                         goto MainMenu;
  234.                     }
  235.                     else if(SW2==0)
  236.                     {
  237.                         while(SW2==0);
  238.                         duty-=20;
  239.                         goto MOTORMenu;
  240.                     }
  241.                     else if(SW3==0)
  242.                     {
  243.                         while(SW3==0);
  244.                         duty+=20;
  245.                         goto MOTORMenu;
  246.                     }
  247.                     else if(SW4==0)
  248.                     {
  249.                         while(SW4==0);
  250.                         if(lrpwm==1)
  251.                             _Turn_Left_PWM(duty);
  252.                         else
  253.                             _Turn_Right_PWM(duty);
  254.                         goto MOTORMenu;
  255.                     }
  256.                 }
  257.             }
  258.             else if(i60==4)
  259.             {
  260.                 LEDMenu:
  261.                 _Led();
  262.                 _Seti30(il);
  263.                 _L_M(i30);
  264.                 while(1)
  265.                 {
  266.                     if(SW1==0)
  267.                     {
  268.                         while(SW1==0);
  269.                         goto MainMenu;
  270.                     }
  271.                     else if(SW2==0)
  272.                     {
  273.                         while(SW2==0);
  274.                         il--;
  275.                         goto LEDMenu;
  276.                     }
  277.                     else if(SW3==0)
  278.                     {
  279.                         while(SW3==0);
  280.                         il++;
  281.                         goto LEDMenu;
  282.                     }
  283.                     else if(SW4==0)
  284.                     {
  285.                         while(SW4==0);
  286.                         _Seti30(il);
  287.                         if(i30==0)
  288.                         {
  289.                             RunMenu:
  290.                             _Run();
  291.                             _Seti20(irl);
  292.                             _Up_Down(i20);
  293.                             while(1)
  294.                             {
  295.                                 if(SW1==0)
  296.                                 {
  297.                                     while(SW1==0);
  298.                                     goto LEDMenu;
  299.                                 }
  300.                                 else if(SW2==0)
  301.                                 {
  302.                                     while(SW2==0);
  303.                                     irl--;
  304.                                     goto RunMenu;
  305.                                 }
  306.                                 else if(SW3==0)
  307.                                 {
  308.                                     while(SW3==0);
  309.                                     irl++;
  310.                                     goto RunMenu;
  311.                                 }
  312.                                 else if(SW4==0)
  313.                                 {
  314.                                     while(SW4==0);
  315.                                     _Seti20(irl);
  316.                                     if(i20==0)
  317.                                     {
  318.                                         RunUp:
  319.                                         _R_U();
  320.                                         _Limit(delay);
  321.                                         while(1)
  322.                                         {
  323.                                             if(SW1==0)
  324.                                             {
  325.                                                 while(SW1==0);
  326.                                                 goto RunMenu;
  327.                                             }
  328.                                             else if(SW2==0)
  329.                                             {
  330.                                                 while(SW2==0);
  331.                                                 delay-=2;
  332.                                                 goto RunUp;
  333.                                             }
  334.                                             else if(SW3==0)
  335.                                             {
  336.                                                 while(SW3==0);
  337.                                                 delay+=2;
  338.                                                 goto RunUp;
  339.                                             }
  340.                                             else if(SW4==0)
  341.                                             {
  342.                                                 while(SW4==0)
  343.                                                     _Run_Up_LED(delay);
  344.                                                 goto RunUp;
  345.                                             }
  346.                                         }
  347.                                     }
  348.                                     else if(i20==1)
  349.                                     {
  350.                                         RunDown:
  351.                                         _R_D();
  352.                                         _Limit(delay);
  353.                                         while(1)
  354.                                         {
  355.                                             if(SW1==0)
  356.                                             {
  357.                                                 while(SW1==0);
  358.                                                 goto RunMenu;
  359.                                             }
  360.                                             else if(SW2==0)
  361.                                             {
  362.                                                 while(SW2==0);
  363.                                                 delay-=2;
  364.                                                 goto RunDown;
  365.                                             }
  366.                                             else if(SW3==0)
  367.                                             {
  368.                                                 while(SW3==0);
  369.                                                 delay+=2;
  370.                                                 goto RunDown;
  371.                                             }
  372.                                             else if(SW4==0)
  373.                                             {
  374.                                                 while(SW4==0)
  375.                                                     _Run_Down_LED(delay);
  376.                                                 goto RunDown;
  377.                                             }
  378.                                         }
  379.                                     }
  380.                                 }
  381.                             }
  382.                         }
  383.                         else if(i30==1)
  384.                         {
  385.                             CatchMenu:
  386.                             _Catch();
  387.                             _Seti20(ic);
  388.                             _Up_Down(i20);
  389.                             while(1)
  390.                             {
  391.                                 if(SW1==0)
  392.                                 {
  393.                                     while(SW1==0);
  394.                                     goto LEDMenu;
  395.                                 }
  396.                                 else if(SW2==0)
  397.                                 {
  398.                                     while(SW2==0);
  399.                                     ic--;
  400.                                     goto CatchMenu;
  401.                                 }
  402.                                 else if(SW3==0)
  403.                                 {
  404.                                     while(SW3==0);
  405.                                     ic++;
  406.                                     goto CatchMenu;
  407.                                 }
  408.                                 else if(SW4==0)
  409.                                 {
  410.                                     while(SW4==0);
  411.                                     _Seti20(ic);
  412.                                     if(i20==0)
  413.                                     {
  414.                                         CatchUp:
  415.                                         _C_U();
  416.                                         _Limit(delay);
  417.                                         while(1)
  418.                                         {
  419.                                             if(SW1==0)
  420.                                             {
  421.                                                 while(SW1==0);
  422.                                                 goto CatchMenu;
  423.                                             }
  424.                                             else if(SW2==0)
  425.                                             {
  426.                                                 while(SW2==0);
  427.                                                 delay-=2;
  428.                                                 goto CatchUp;
  429.                                             }
  430.                                             else if(SW3==0)
  431.                                             {
  432.                                                 while(SW3==0);
  433.                                                 delay+=2;
  434.                                                 goto CatchUp;
  435.                                             }
  436.                                             else if(SW4==0)
  437.                                             {
  438.                                                 while(SW4==0)
  439.                                                     _Catch_Up_LED(delay);
  440.                                                 goto CatchUp;
  441.                                             }
  442.                                         }
  443.                                     }
  444.                                     else if(i20==1)
  445.                                     {
  446.                                         CatchDown:
  447.                                         _C_D();
  448.                                         _Limit(delay);
  449.                                         while(1)
  450.                                         {
  451.                                             if(SW1==0)
  452.                                             {
  453.                                                 while(SW1==0);
  454.                                                 goto CatchMenu;
  455.                                             }
  456.                                             else if(SW2==0)
  457.                                             {
  458.                                                 while(SW2==0);
  459.                                                 delay-=2;
  460.                                                 goto CatchDown;
  461.                                             }
  462.                                             else if(SW3==0)
  463.                                             {
  464.                                                 while(SW3==0);
  465.                                                 delay+=2;
  466.                                                 goto CatchDown;
  467.                                             }
  468.                                             else if(SW4==0)
  469.                                             {
  470.                                                 while(SW4==0)
  471.                                                     _Catch_Down_LED(delay);
  472.                                                 goto CatchDown;
  473.                                             }
  474.                                         }
  475.                                     }
  476.                                 }
  477.                             }
  478.                         }
  479.                         else if(i30==2)
  480.                         {
  481.                             HLMenu:
  482.                             _H_L();
  483.                             _Limit(delay);
  484.                             while(1)
  485.                             {
  486.                                 if(SW1==0)
  487.                                 {
  488.                                     while(SW1==0);
  489.                                     goto LEDMenu;
  490.                                 }
  491.                                 else if(SW2==0)
  492.                                 {
  493.                                     while(SW2==0);
  494.                                     delay-=2;
  495.                                     goto HLMenu;
  496.                                 }
  497.                                 else if(SW3==0)
  498.                                 {
  499.                                     while(SW3==0);
  500.                                     delay+=2;
  501.                                     goto HLMenu;
  502.                                 }
  503.                                 else if(SW4==0)
  504.                                 {
  505.                                     while(SW4==0)
  506.                                         _High_Low(delay);
  507.                                     goto HLMenu;
  508.                                 }
  509.                             }
  510.                         }
  511.                     }
  512.                 }
  513.             }
  514.             else if(i60==5)
  515.             {
  516.                 GameMenu:
  517.                 pp=3;
  518.                 pc=3;
  519.                 _O_T_T();
  520.                 _Seti20(ig);
  521.                 _Level(i20);
  522.                 while(1)
  523.                 {
  524.                     if(SW1==0)
  525.                     {
  526.                         while(SW1==0);
  527.                         goto MainMenu;
  528.                     }
  529.                     else if(SW2==0)
  530.                     {
  531.                         while(SW2==0);
  532.                         ig--;
  533.                         goto GameMenu;
  534.                     }
  535.                     else if(SW3==0)
  536.                     {
  537.                         while(SW3==0);
  538.                         ig++;
  539.                         goto GameMenu;
  540.                     }
  541.                     else if(SW4==0)
  542.                     {
  543.                         while(SW4==0);
  544.                         if(i20==0)
  545.                         {
  546.                             _EASY();
  547.                             EasyMenu:
  548.                             _Seti30(ilv);
  549.                             _One_Two_Three(i30);
  550.                             while(1)
  551.                             {
  552.                                 if(SW1==0)
  553.                                 {
  554.                                     while(SW1==0);
  555.                                     goto GameMenu;
  556.                                 }
  557.                                 else if(SW2==0)
  558.                                 {
  559.                                     while(SW2==0);
  560.                                     ilv--;
  561.                                     goto EasyMenu;
  562.                                 }
  563.                                 else if(SW3==0)
  564.                                 {
  565.                                     while(SW3==0);
  566.                                     ilv++;
  567.                                     goto EasyMenu;
  568.                                 }
  569.                                 else if(SW4==0)
  570.                                 {
  571.                                     while(SW4==0);
  572.                                     _Check_Point(pp,pc);
  573.                                     _Seti30(ilv);
  574.                                     if(i30==0)
  575.                                     {
  576.                                         _One();
  577.                                         switch(count)
  578.                                         {
  579.                                             case 0:
  580.                                             {
  581.                                                 pp--;
  582.                                                 pc--;
  583.                                                 _Rock(pp,pc);
  584.                                                 break;
  585.                                             }
  586.                                             case 1:case 3:
  587.                                             {
  588.                                                 pp++;
  589.                                                 pc--;
  590.                                                 _Scissor(pp,pc);
  591.                                                 break;
  592.                                             }
  593.                                             case 2:
  594.                                             {
  595.                                                 pp--;
  596.                                                 pc++;
  597.                                                 _Paper(pp,pc);
  598.                                                 break;
  599.                                             }
  600.                                         }
  601.                                     }
  602.                                     else if(i30==1)
  603.                                     {
  604.                                         _Two();
  605.                                         switch(count)
  606.                                         {
  607.                                             case 0:
  608.                                             {
  609.                                                 pp--;
  610.                                                 pc--;
  611.                                                 _Paper(pp,pc);
  612.                                                 break;
  613.                                             }
  614.                                             case 1:case 3:
  615.                                             {
  616.                                                 pp++;
  617.                                                 pc--;
  618.                                                 _Rock(pp,pc);
  619.                                                 break;
  620.                                             }
  621.                                             case 2:
  622.                                             {
  623.                                                 pp--;
  624.                                                 pc++;
  625.                                                 _Scissor(pp,pc);
  626.                                                 break;
  627.                                             }
  628.                                         }
  629.                                     }
  630.                                     else if(i30==2)
  631.                                     {
  632.                                         _Three();
  633.                                         switch(count)
  634.                                         {
  635.                                             case 0:
  636.                                             {
  637.                                                 pp--;
  638.                                                 pc--;
  639.                                                 _Scissor(pp,pc);
  640.                                                 break;
  641.                                             }
  642.                                             case 1:case 3:
  643.                                             {
  644.                                                 pp++;
  645.                                                 pc--;
  646.                                                 _Paper(pp,pc);
  647.                                                 break;
  648.                                             }
  649.                                             case 2:
  650.                                             {
  651.                                                 pp--;
  652.                                                 pc++;
  653.                                                 _Rock(pp,pc);
  654.                                                 break;
  655.                                             }
  656.                                         }
  657.                                     }
  658.                                     if(pp==0)
  659.                                     {
  660.                                         if(pc==0)
  661.                                         {
  662.                                             _Draw();
  663.                                             goto GameMenu;
  664.                                         }
  665.                                         else
  666.                                         {
  667.                                             _Close();
  668.                                             goto GameMenu;
  669.                                         }
  670.                                     }
  671.                                     else if(pc==0)
  672.                                     {
  673.                                         _Win();
  674.                                         goto GameMenu;
  675.                                     }
  676.                                     else
  677.                                         goto EasyMenu;
  678.                                 }
  679.                             }
  680.                         }
  681.                         else if(i20==1)
  682.                         {
  683.                             _HARD();
  684.                             HardMenu:
  685.                             _Seti30(ilv);
  686.                             _One_Two_Three(i30);
  687.                             while(1)
  688.                             {
  689.                                 if(SW1==0)
  690.                                 {
  691.                                     while(SW1==0);
  692.                                     goto GameMenu;
  693.                                 }
  694.                                 else if(SW2==0)
  695.                                 {
  696.                                     while(SW2==0);
  697.                                     ilv--;
  698.                                     goto HardMenu;
  699.                                 }
  700.                                 else if(SW3==0)
  701.                                 {
  702.                                     while(SW3==0);
  703.                                     ilv++;
  704.                                     goto HardMenu;
  705.                                 }
  706.                                 else if(SW4==0)
  707.                                 {
  708.                                     while(SW4==0);
  709.                                     _Check_Point(pp,pc);
  710.                                     _Seti30(ilv);
  711.                                     if(i30==0)
  712.                                     {
  713.                                         _One();
  714.                                         switch(count)
  715.                                         {
  716.                                             case 0:
  717.                                             {
  718.                                                 pp--;
  719.                                                 pc--;
  720.                                                 _Rock(pp,pc);
  721.                                                 break;
  722.                                             }
  723.                                             case 1:
  724.                                             {
  725.                                                 pp++;
  726.                                                 pc--;
  727.                                                 _Scissor(pp,pc);
  728.                                                 break;
  729.                                             }
  730.                                             case 2:case 3:
  731.                                             {
  732.                                                 pp--;
  733.                                                 pc++;
  734.                                                 _Paper(pp,pc);
  735.                                                 break;
  736.                                             }
  737.                                         }
  738.                                     }
  739.                                     else if(i30==1)
  740.                                     {
  741.                                         _Two();
  742.                                         switch(count)
  743.                                         {
  744.                                             case 0:
  745.                                             {
  746.                                                 pp--;
  747.                                                 pc--;
  748.                                                 _Paper(pp,pc);
  749.                                                 break;
  750.                                             }
  751.                                             case 1:
  752.                                             {
  753.                                                 pp++;
  754.                                                 pc--;
  755.                                                 _Rock(pp,pc);
  756.                                                 break;
  757.                                             }
  758.                                             case 2:case 3:
  759.                                             {
  760.                                                 pp--;
  761.                                                 pc++;
  762.                                                 _Scissor(pp,pc);
  763.                                                 break;
  764.                                             }
  765.                                         }
  766.                                     }
  767.                                     else if(i30==2)
  768.                                     {
  769.                                         _Three();
  770.                                         switch(count)
  771.                                         {
  772.                                             case 0:
  773.                                             {
  774.                                                 pp--;
  775.                                                 pc--;
  776.                                                 _Scissor(pp,pc);
  777.                                                 break;
  778.                                             }
  779.                                             case 1:
  780.                                             {
  781.                                                 pp++;
  782.                                                 pc--;
  783.                                                 _Paper(pp,pc);
  784.                                                 break;
  785.                                             }
  786.                                             case 2:case 3:
  787.                                             {
  788.                                                 pp--;
  789.                                                 pc++;
  790.                                                 _Rock(pp,pc);
  791.                                                 break;
  792.                                             }
  793.                                         }
  794.                                     }
  795.                                     if(pp==0)
  796.                                     {
  797.                                         if(pc==0)
  798.                                         {
  799.                                             _Draw();
  800.                                             goto GameMenu;
  801.                                         }
  802.                                         else
  803.                                         {
  804.                                             _Close();
  805.                                             goto GameMenu;
  806.                                         }
  807.                                     }
  808.                                     else if(pc==0)
  809.                                     {
  810.                                         _Win();
  811.                                         goto GameMenu;
  812.                                     }
  813.                                     else
  814.                                         goto HardMenu;
  815.                                 }
  816.                             }
  817.                         }
  818.                     }
  819.                 }
  820.             }
  821.         }
  822.     }
  823. }
  824. void _Init_LCD(void)
  825. {
  826.     lcd_init();
  827.     lcd_putc('\f');
  828. }
  829. void _Init_IO(void)
  830. {
  831.     TRISA0=0;
  832.     TRISB0=1;
  833.     TRISB1=1;
  834.     TRISB2=1;
  835.     TRISB3=1;
  836.     TRISC0=0;
  837.     TRISD0=0;
  838.     TRISE=0;
  839.     ENABLE=0;
  840.     RBPU=0;
  841.     D1=D2=D3=0;
  842. }
  843. void _Delay(char time)
  844. {
  845.     char i;
  846.     for(i=0;i<time;i++)
  847.         __delay_ms(100);
  848. }
  849. void _Display_Number(char x,char y,int num)
  850. {
  851.     char i;
  852.     for(i=x;;i--)
  853.     {
  854.         lcd_gotoxy(i-1,y);
  855.         lcd_putc((num%10)+48);
  856.         num/=10;
  857.         if(num<1)
  858.             break;
  859.     }
  860. }
  861. void _Seti60(char im)
  862. {
  863.     if(im<0)
  864.         im+=60;
  865.     i60=im%6;
  866. }
  867. void _Seti20(char ir)
  868. {
  869.     if(ir<0)
  870.         ir+=20;
  871.     i20=ir%2;
  872. }
  873. void _Seti30(char il)
  874. {
  875.     if(il<0)
  876.         il+=30;
  877.     i30=il%3;
  878. }
  879. void _Processing(void)
  880. {
  881.     lcd_gotoxy(0,0);
  882.     lcd_puts("   PROCESSING   ");
  883.     for(i=0;i<16;i++)
  884.     {
  885.         lcd_gotoxy(i,1);
  886.         lcd_putc('.');
  887.         _Delay(3);
  888.     }
  889. }
  890. void _Main_Menu(void)
  891. {
  892.     lcd_gotoxy(0,0);
  893.     lcd_puts("   MAIN MENU    ");
  894. }
  895. void _M_M(char i60)
  896. {
  897.     lcd_gotoxy(0,1);
  898.     switch(i60)
  899.     {
  900.         case 0:
  901.         {
  902.             lcd_puts("<     ADC      >");
  903.             break;
  904.         }
  905.         case 1:
  906.         {
  907.             lcd_puts("<    RELAY     >");
  908.             break;
  909.         }
  910.         case 2:
  911.         {
  912.             lcd_puts("<    BUZZER    >");
  913.             break;
  914.         }
  915.         case 3:
  916.         {
  917.             lcd_puts("<    MOTOR     >");
  918.             break;
  919.         }
  920.         case 4:
  921.         {
  922.             lcd_puts("<     LED      >");
  923.             break;
  924.         }
  925.         case 5:
  926.         {
  927.             lcd_puts("<    GAMES     >");
  928.             break;
  929.         }
  930.     }
  931. }
  932. void _Copyright(void)
  933. {
  934.     lcd_gotoxy(0,0);
  935.     lcd_puts("  COPYRIGHT by  ");
  936.     lcd_gotoxy(0,1);
  937.     lcd_puts("    YAMI AN     ");
  938.     _Delay(10);
  939. }
  940. void _ADC(void)
  941. {
  942.     lcd_gotoxy(0,0);
  943.     lcd_puts("      ADC       ");
  944.     lcd_gotoxy(0,1);
  945.     lcd_puts("Value ADC:      ");
  946.     value_adc=_Read_ADC(3);
  947.     _Display_Number(16,1,value_adc);
  948. }
  949. void _Nick(void)
  950. {
  951.     lcd_gotoxy(0,0);
  952.     lcd_puts("    YAMI AN     ");
  953.     lcd_gotoxy(0,1);
  954.     lcd_puts("    Nephilim    ");
  955.     _Delay(10);
  956. }
  957. void _Name(void)
  958. {
  959.     lcd_gotoxy(0,0);
  960.     lcd_puts("  NGUYEN DANG   ");
  961.     lcd_gotoxy(0,1);
  962.     lcd_puts("   TRUONG AN    ");
  963.     _Delay(10);
  964. }
  965. void _Relay(void)
  966. {
  967.     lcd_gotoxy(0,0);
  968.     lcd_puts("     RELAY      ");
  969. }
  970. void _On_Off(char i20)
  971. {
  972.     lcd_gotoxy(0,1);
  973.     switch(i20)
  974.     {
  975.         case 1:
  976.         {
  977.             lcd_puts("<      ON      >");
  978.             break;
  979.         }
  980.         case 0:
  981.         {
  982.             lcd_puts("<     OFF      >");
  983.             break;
  984.         }
  985.     }
  986. }
  987. void _Day(void)
  988. {
  989.     lcd_gotoxy(0,0);
  990.     lcd_puts(" Date of Birth  ");
  991.     lcd_gotoxy(0,1);
  992.     lcd_puts("   10/07/1993   ");
  993.     _Delay(10);
  994. }
  995. void _Buz(void)
  996. {
  997.     lcd_gotoxy(0,0);
  998.     lcd_puts("     BUZZER     ");
  999. }
  1000. void _Beap(void)
  1001. {
  1002.     lcd_gotoxy(0,1);
  1003.     lcd_puts("      BEAP      ");
  1004. }
  1005. void _Motor(char lrpwm,int dutys)
  1006. {
  1007.     duty=_Check_Limit(60,240,dutys);
  1008.     lcd_gotoxy(0,0);
  1009.     if(lrpwm==1)
  1010.         lcd_puts("     RIGHT      ");
  1011.     else
  1012.         lcd_puts("      LEFT      ");
  1013.     lcd_gotoxy(0,1);
  1014.     if(duty==60||duty==240)
  1015.         lcd_puts("Limit:          ");
  1016.     else
  1017.         lcd_puts("Duty Cycles:    ");
  1018.     _Display_Number(16,1,duty);
  1019. }
  1020. int _Check_Limit(char x,char y,int limit)
  1021. {
  1022.     if(limit<x)
  1023.         limit=x;
  1024.     else if(limit>y)
  1025.         limit=y;
  1026.     return limit;
  1027. }
  1028. void _Turn_Left_PWM(int duty)
  1029. {
  1030.     _SetDutyPWM1(0);
  1031.     _SetDutyPWM2(duty);
  1032.     lrpwm=0;
  1033. }
  1034. void _Turn_Right_PWM(int duty)
  1035. {
  1036.     _SetDutyPWM1(duty);
  1037.     _SetDutyPWM2(0);
  1038.     lrpwm=1;
  1039. }
  1040. void _Up_Down(char i20)
  1041. {
  1042.     lcd_gotoxy(0,1);
  1043.     switch(i20)
  1044.     {
  1045.         case 0:
  1046.         {
  1047.             lcd_puts("<      UP      >");
  1048.             break;
  1049.         }
  1050.         case 1:
  1051.         {
  1052.             lcd_puts("<     DOWN     >");
  1053.             break;
  1054.         }
  1055.     }
  1056. }
  1057. void _Limit(char delays)
  1058. {
  1059.     delay=_Check_Limit(3,9,delays);
  1060.     lcd_gotoxy(0,1);
  1061.     if(delay==3||delay==9)
  1062.         lcd_puts("Limit:          ");
  1063.     else
  1064.         lcd_puts("Delay:          ");
  1065.     _Display_Number(16,1,delay*100);
  1066. }
  1067. void _Led(void)
  1068. {
  1069.     lcd_gotoxy(0,0);
  1070.     lcd_puts("      LED       ");
  1071. }
  1072. void _L_M(char i30)
  1073. {
  1074.     lcd_gotoxy(0,1);
  1075.     switch(i30)
  1076.     {
  1077.         case 0:
  1078.         {
  1079.             lcd_puts("<     RUN      >");
  1080.             break;
  1081.         }
  1082.         case 1:
  1083.         {
  1084.             lcd_puts("<    CATCH     >");
  1085.             break;
  1086.         }
  1087.         case 2:
  1088.         {
  1089.             lcd_puts("<   HIGH-LOW   >");
  1090.             break;
  1091.         }
  1092.     }
  1093. }
  1094. void _Run(void)
  1095. {
  1096.     lcd_gotoxy(0,0);
  1097.     lcd_puts("      RUN       ");
  1098. }
  1099. void _R_U(void)
  1100. {
  1101.     lcd_gotoxy(0,0);
  1102.     lcd_puts("     RUN UP     ");
  1103. }
  1104. void _R_D(void)
  1105. {
  1106.     lcd_gotoxy(0,0);
  1107.     lcd_puts("    RUN DOWN    ");
  1108. }
  1109. void _Catch(void)
  1110. {
  1111.     lcd_gotoxy(0,0);
  1112.     lcd_puts("     CATCH      ");
  1113. }
  1114. void _C_U(void)
  1115. {
  1116.     lcd_gotoxy(0,0);
  1117.     lcd_puts("    CATCH UP    ");
  1118. }
  1119. void _C_D(void)
  1120. {
  1121.     lcd_gotoxy(0,0);
  1122.     lcd_puts("   CATCH DOWN   ");
  1123. }
  1124. void _Run_Up_LED(char delay)
  1125. {
  1126.     D1=D2=D3=0;
  1127.     D1=1;
  1128.     _Delay(delay);
  1129.     D1=0;
  1130.     _Delay(delay);
  1131.     D2=1;
  1132.     _Delay(delay);
  1133.     D2=0;
  1134.     _Delay(delay);
  1135.     D3=1;
  1136.     _Delay(delay);
  1137.     D3=0;
  1138.     _Delay(delay);
  1139. }
  1140. void _Run_Down_LED(char delay)
  1141. {
  1142.     D1=D2=D3=0;
  1143.     D3=1;
  1144.     _Delay(delay);
  1145.     D3=0;
  1146.     _Delay(delay);
  1147.     D2=1;
  1148.     _Delay(delay);
  1149.     D2=0;
  1150.     _Delay(delay);
  1151.     D1=1;
  1152.     _Delay(delay);
  1153.     D1=0;
  1154.     _Delay(delay);
  1155. }
  1156. void _Catch_Up_LED(char delay)
  1157. {
  1158.     D1=D2=D3=0;
  1159.     D1=1;
  1160.     _Delay(delay);
  1161.     D2=1;
  1162.     _Delay(delay);
  1163.     D3=1;
  1164.     _Delay(delay);
  1165.     D1=D2=D3=0;
  1166.     _Delay(delay);
  1167. }
  1168. void _Catch_Down_LED(char delay)
  1169. {
  1170.     D1=D2=D3=0;
  1171.     D3=1;
  1172.     _Delay(delay);
  1173.     D2=1;
  1174.     _Delay(delay);
  1175.     D1=1;
  1176.     _Delay(delay);
  1177.     D1=D2=D3=0;
  1178.     _Delay(delay);
  1179. }
  1180. void _H_L(void)
  1181. {
  1182.     lcd_gotoxy(0,0);
  1183.     lcd_puts("    HIGH-LOW    ");
  1184. }
  1185. void _High_Low(char delay)
  1186. {
  1187.     D1=D2=D3=0;
  1188.     D1=D2=D3=1;
  1189.     _Delay(delay);
  1190.     D1=D2=D3=0;
  1191.     _Delay(delay);
  1192. }
  1193. void _O_T_T(void)
  1194. {
  1195.     lcd_gotoxy(0,0);
  1196.     lcd_puts(" ONE-TWO-THREE  ");
  1197. }
  1198. void _Level(char i20)
  1199. {
  1200.     lcd_gotoxy(0,1);
  1201.     switch(i20)
  1202.     {
  1203.         case 0:
  1204.         {
  1205.             lcd_puts("<     EASY     >");
  1206.             break;
  1207.         }
  1208.         case 1:
  1209.         {
  1210.             lcd_puts("<     HARD     >");
  1211.             break;
  1212.         }
  1213.     }
  1214. }
  1215. void _EASY(void)
  1216. {
  1217.     lcd_gotoxy(0,0);
  1218.     lcd_puts("      EASY      ");
  1219. }
  1220. void _HARD(void)
  1221. {
  1222.     lcd_gotoxy(0,0);
  1223.     lcd_puts("      HARD      ");
  1224. }
  1225. void _One_Two_Three(char i30)
  1226. {
  1227.     lcd_gotoxy(0,1);
  1228.     switch(i30)
  1229.     {
  1230.         case 0:
  1231.         {
  1232.             lcd_puts("ROCK            ");
  1233.             break;
  1234.         }
  1235.         case 1:
  1236.         {
  1237.             lcd_puts("PAPER           ");
  1238.             break;
  1239.         }
  1240.         case 2:
  1241.         {
  1242.             lcd_puts("SCISSOR         ");
  1243.             break;
  1244.         }
  1245.     }
  1246. }
  1247. void _One(void)
  1248. {
  1249.     for(i=3;i>0;i--)
  1250.     {
  1251.         _Display_Number(14,1,i);
  1252.         _Catch_Down_LED(3);
  1253.     }
  1254. }
  1255. void _Two(void)
  1256. {
  1257.     for(i=3;i>0;i--)
  1258.     {
  1259.         _Display_Number(14,1,i);
  1260.         _Catch_Down_LED(3);
  1261.     }
  1262. }
  1263. void _Three(void)
  1264. {
  1265.     for(i=3;i>0;i--)
  1266.     {
  1267.         _Display_Number(14,1,i);
  1268.         _Catch_Down_LED(3);
  1269.     }
  1270. }
  1271. void _Rock(char pp,char pc)
  1272. {
  1273.     lcd_gotoxy(12,1);
  1274.     lcd_puts("ROCK");
  1275.     _Check_Point(pp,pc);
  1276.     _Delay(30);
  1277. }
  1278. void _Paper(char pp,char pc)
  1279. {
  1280.     lcd_gotoxy(11,1);
  1281.     lcd_puts("PAPER");
  1282.     _Check_Point(pp,pc);
  1283.     _Delay(30);
  1284. }
  1285. void _Scissor(char pp,char pc)
  1286. {
  1287.     lcd_gotoxy(9,1);
  1288.     lcd_puts("SCISSOR");
  1289.     _Check_Point(pp,pc);
  1290.     _Delay(30);
  1291. }
  1292. void _Close(void)
  1293. {
  1294.     for(i=0;i<3;i++)
  1295.     {
  1296.         lcd_putc('\f');
  1297.         lcd_gotoxy(0,0);
  1298.         lcd_puts("------YOU-------");
  1299.         lcd_gotoxy(0,1);
  1300.         lcd_puts("-----CLOSE------");
  1301.         BUZ=1;
  1302.         D1=D2=D3=1;
  1303.         _Delay(3);
  1304.         BUZ=0;
  1305.         D1=D2=D3=0;
  1306.         _Delay(3);
  1307.     }
  1308. }
  1309. void _Win(void)
  1310. {
  1311.     for(i=0;i<3;i++)
  1312.     {
  1313.         lcd_putc('\f');
  1314.         lcd_gotoxy(0,0);
  1315.         lcd_puts("------YOU-------");
  1316.         lcd_gotoxy(0,1);
  1317.         lcd_puts("------WIN-------");
  1318.         BUZ=1;
  1319.         D1=D2=D3=1;
  1320.         _Delay(3);
  1321.         BUZ=0;
  1322.         D1=D2=D3=0;
  1323.         _Delay(3);
  1324.     }
  1325. }
  1326. void _Draw(void)
  1327. {
  1328.     for(i=0;i<3;i++)
  1329.     {
  1330.         lcd_putc('\f');
  1331.         lcd_gotoxy(0,0);
  1332.         lcd_puts("------DRAW------");
  1333.         lcd_gotoxy(0,1);
  1334.         lcd_puts("------GAME------");
  1335.         BUZ=1;
  1336.         D1=D2=D3=1;
  1337.         _Delay(3);
  1338.         BUZ=0;
  1339.         D1=D2=D3=0;
  1340.         _Delay(3);
  1341.     }
  1342. }
  1343. void _Check_Point(char pp,char pc)
  1344. {
  1345.     lcd_gotoxy(0,0);
  1346.     lcd_puts("YOU:       COM: ");
  1347.     _Display_Number(5,0,pp);
  1348.     _Display_Number(16,0,pc);
  1349. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement