Advertisement
pabloducato

kwsm_mikro

Apr 17th, 2019
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.68 KB | None | 0 0
  1. /*************************************************************************/
  2. /*  Program testowy dla obiektu X oprogamowania SPSym                    */
  3. /*************************************************************************/
  4. #include "spsym.h"          // Pomocnicze funkcje i deklaracje
  5. #include <stdio.h>          // Stadnardowe I/O
  6. #include <conio.h>
  7.  
  8. // --- Makrodefinicje dla obiektu X ---
  9. #define T  X8
  10.  
  11. #define Z1 Y1
  12. #define Z2 Y2
  13. #define Z3 Y3
  14. #define Z4 Y4
  15. #define Z5 Y5
  16. #define M  Y6
  17. #define G1 Y7
  18.  
  19. // --- Zmienne użytkownika ---
  20. int licz=0;                 // Licznik przerwań
  21.  
  22. //TIMERY
  23. char counterBeeps, counterTimer = 0, TSP;
  24. int timTime = 0;
  25.  
  26. //ZMIENNE ODPOWIEDZIALNE ZA OTWARCIE/ZAMKNIECIE DRZWICZEK
  27.  
  28. char door = 0, workMode = 1, pause = 0;
  29. char work = 0;
  30.  
  31.  
  32. char chosenMode = 1;
  33. char viewingChosenMode = 1;
  34. char counterViewingChosenMode;
  35. char timeMode = 1;
  36. char viewingTime = 1;
  37. char timeShowingMode = 1;
  38. char counterTimerBeeps;
  39. unsigned char tmpMiuntes;
  40. unsigned char tmpSecondsD;
  41. unsigned char tmpSecondsJ;
  42. const char *text0 = "DOOR";
  43. const char *text1 = "FROZEN";
  44. const char *text2 = "WARMING";
  45. const char *text3 = "GRILL";
  46. const char *text4 = "BOILING";
  47. const char *text5 = "SERVICE";
  48. const char *text;
  49. const char *p = "NO";
  50.  
  51.  
  52. //ZMIENNE ODPOWIEDZIALNE ZA STEROWANIE MOCA
  53. int powerMode = 1;
  54. char timPower, power1, power0;
  55. int power = 0;
  56. char powerAdjusting = 1;
  57.  
  58. char timeshowing2 = 1;
  59.  
  60. void prolog(void)           // Inicjowanie programu (jednorazowo przy starcie)
  61. {
  62.     L1=L2=L3=L4=0;          // Zgaszenie LED-ów
  63. }
  64.  
  65. void oblicz(void)           // Kod użytkownika wykonywany cyklicznie
  66. {
  67.    
  68. pK1=aK1; pK2=aK2; pK3=aK3; pK4=aK4;
  69. pK5=aK5; pK6=aK6; pK7=aK7; pK8=aK8;
  70.  
  71. power1 = (int)(power*20);
  72. power0 = 20 - power1;
  73.  
  74.  
  75. //OTWARCIE/ZAMKNIECIE DRZWICZEK
  76. if(!work && !door && pK1) {door = 1; L1=1; viewingChosenMode=0; timeMode=0; powerMode=0; workMode = 0; }
  77. else if(!work && door && pK1) {door = 0; L1=0; viewingChosenMode=1; timeMode=1; powerMode=1; workMode = 1;}
  78.  
  79.  
  80. //TRYB PRACY MIKROFALOWKI
  81. //ODMRAZANIE
  82. //GRZANIE
  83. //GRILLOWANIE
  84. //GOTOWANIE
  85. //CZYSZCZENIE SPRZĘTU
  86.  
  87. if(!work)
  88. {
  89.     switch(chosenMode)
  90.     {
  91.         case 1:
  92.         {
  93.             if(pK2) chosenMode = 2;
  94.         }
  95.         break;
  96.         case 2:
  97.         {
  98.             if(!pK2)
  99.             {
  100.                 chosenMode = 1;
  101.                 workMode++;
  102.                 if(workMode > 5) workMode = 1;
  103.             }
  104.            
  105.         }
  106.         break;
  107.     }
  108. }
  109.  
  110. if(workMode == 0)
  111. text = text0;
  112. else if(workMode == 1)
  113. text = text1;
  114. else if (workMode == 2)
  115. text = text2;
  116. else if (workMode == 3)
  117. text = text3;
  118. else if (workMode == 4)
  119. text = text4;
  120. else if (workMode == 5)
  121. text = text5;
  122.  
  123.  
  124. //WYSWIETLANIE WYBRANEGO TRYBU PRACY MIKROFALOWKI
  125.  
  126. switch(viewingChosenMode)
  127.     {
  128.     case 0: L2=0;
  129.     break;
  130.     case 1:
  131.     {
  132.         L2 = 0;
  133.         counterViewingChosenMode = workMode;
  134.         if(counterViewingChosenMode)
  135.         {
  136.             counterBeeps = 2;
  137.             viewingChosenMode = 2;
  138.         }
  139.         else L2 = 1;
  140.     }
  141.         break;
  142.     case 2:
  143.     {
  144.         L2 = 1;
  145.         if(!counterBeeps && counterViewingChosenMode > 1) {viewingChosenMode = 3; counterBeeps = 2; counterViewingChosenMode--;}
  146.         else if(!counterBeeps && counterViewingChosenMode == 1) {viewingChosenMode = 3; counterBeeps = 15; counterViewingChosenMode--;}
  147.     }
  148.         break;
  149.     case 3:
  150.     {
  151.         L2 = 0;
  152.         if(!counterBeeps && counterViewingChosenMode) {viewingChosenMode = 2; counterBeeps = 2;}
  153.         else if(!counterBeeps && !counterViewingChosenMode) viewingChosenMode = 1;
  154.     }
  155.         break;
  156.  }
  157.    
  158. //USTAWIENIA CZASU
  159.  
  160. switch(timeMode)
  161. {
  162.         case 1:
  163.             if(aK6 && timTime>0) {timTime=timTime-10;}
  164.             else if(aK6 && timTime==0);
  165.             else if(aK7 && timTime<3000) {timTime=timTime+10;}
  166.             else if(aK7 && timTime==3000);
  167.             break;
  168. }
  169.  
  170.  //ZMIANA MOCY MIKROFALOWKI
  171.  
  172.  switch(powerAdjusting)
  173.     {
  174.         case 1:
  175.         {
  176.             if(pK4) powerAdjusting = 2;
  177.             else if(pK3) powerAdjusting = 3;
  178.         }
  179.         break;
  180.         case 2:
  181.         {
  182.             if(!pK4 && L5 == 0)
  183.             {
  184.                 powerAdjusting = 1;
  185.                 power+=100.00;
  186.                 if(power>1000) power = 0;
  187.             }      
  188.         }
  189.         break;
  190.         case 3:
  191.         {
  192.             if(!pK3 && L5 == 0)
  193.             {
  194.                 powerAdjusting = 1;
  195.                 power-=100.00;
  196.                 if(power<0) power = 0;
  197.             }
  198.         }
  199.         break;
  200.     }
  201.  
  202.  // USTAWIENIE MOCY
  203.  // WSPOLCZYNNIK WYPELNIENIA
  204.  
  205.  switch(powerMode)
  206.     {
  207.     case 0: L4=0; L3=0;
  208.     break;
  209.     case 1:
  210.     {
  211.         L4 = 0; L3=0;
  212.         timPower = power1;
  213.         if(power) powerMode = 2;
  214.         else powerMode = 4;
  215.     }
  216.         break;
  217.     case 2:
  218.     {
  219.         L4 = 1; L3 = 1;
  220.         if(!timPower && power < 1) {powerMode = 3; timPower = power0;}
  221.         else if(!power) powerMode = 4;
  222.     }
  223.         break;
  224.     case 3:
  225.     {
  226.         L4 = 0; L3 = 0;
  227.         if(!timPower && power > 0) {powerMode = 2; timPower = power1;}
  228.         else if(!power) powerMode = 5;
  229.     }
  230.         break;
  231.     case 4:
  232.     {
  233.         L4 = 0; L3 = 0;
  234.         if(power) {powerMode = 3; timPower = power0;}
  235.         else powerMode = 5;
  236.     }
  237.     break;
  238.     case 5:
  239.     {
  240.         L4 = 1; L3 = 1;
  241.         if(power) {powerMode = 3; timPower = power0;}
  242.         else powerMode = 4;
  243.     }
  244.     break;
  245.     }
  246.  
  247. if(door == 0 && pK5 && work==0 && timTime > 0 && power != 0)
  248. {L5 = 1; work=1; door = 0; viewingChosenMode=0; timeMode=0; powerMode=0; p="ON";}
  249. else if(L5 == 1 && timTime%206)
  250. {L5 = 0;}
  251. else if( pK5 && work==1)
  252. {L5 = 0; work=0; viewingChosenMode=1; timeMode=1; powerMode=1; p="P";}
  253. else if( timTime == 0 && work==1)
  254. {L5 = 0; work=0; viewingChosenMode=1; timeMode=1; powerMode=1; power=0; p="NO";}
  255.  
  256.    
  257.     if(counterBeeps) --counterBeeps;
  258.     if(timTime && work) --timTime;
  259.     if(timPower) --timPower; //USTAWIENIE MOCY - WSPOLCZYNNIK WYPELNIENIA
  260.    
  261.     sprintf(buf,"Time:%d   Power:%d               ",(int)timTime/9, (int)power);
  262.     LCD_xy(1,1); LCD_puts(buf);
  263.     sprintf(buf,"Mode:0%d   %s %s  ", (int)workMode, text, p);
  264.     LCD_xy(1,2); LCD_puts(buf);
  265.    
  266. }
  267.  
  268.  
  269. void przerwanie(void)       // Obsługs przerwania od układu czasowo-licznikowego
  270. {
  271. }
  272.  
  273. void komunikacja(void)      // Obsługa komunikacji szeregowej
  274. {}
  275.  
  276. #ifdef Symulator_PC
  277. void wykres(void)           // Dane do tabeli i wykresu (dot. symulacji obiektu)
  278. {
  279.     aTab[0] = (int)(AI[0]/10.0);
  280.     aTab[1] = (int)(AI[1]/5.0);
  281.     aTab[2] = AI[7];
  282.     aTab[3] = (int)(licz/100.0);
  283.     aTab[4] = AO[0];
  284.     aTab[5] = AO[7];
  285.     aTab[6] = -120;
  286.     aTab[7] =  120;
  287.  
  288.     bTab[0] = (int)aK1;
  289.     bTab[1] = (int)aK2;
  290.     bTab[2] = (int)aK3;
  291.     bTab[3] = (int)aK4;
  292.     bTab[4] = (int)L1;
  293.     bTab[5] = (int)L2;
  294.     bTab[6] = (int)L3;
  295.     bTab[7] = (int)L4;
  296.     bTab[8] = (int)L5;
  297.     bTab[9] = G1;
  298.     bTab[10] = M;
  299.     bTab[11] = 11;
  300.     bTab[12] = 12;
  301.     bTab[13] = 13;
  302.     bTab[14] = 14;
  303.     bTab[15] = 15;
  304. }
  305. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement