Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.34 KB | None | 0 0
  1. /**********************************************************************************/
  2. /*     Program symulatora SP-841/AVR w wersji do zadań z Symulatorem Obiektów     */
  3. /**********************************************************************************/
  4. #include "WorkObiekt.h"             // Definicje zmiennych i prototypy funkcji SPAVR
  5. #include "SchematA.h"               // Definicje wejść i wyjść obiektu A
  6.  
  7. #define T1s     1000/wCykl          // Liczba cykli na 1 sekundę (1000/500 => 2)           // Zadania użytkownika
  8.  
  9.     int t1=20, t2=20, t3=10, t4=10, t5a=10, t5b=20;
  10.     char tim1a=20, tim1b=100, stan1=1;
  11.     char tim2=0, stan2=1;
  12.     char tim3=0, stan3=1;
  13.     char timLCD=30, stanLCD=1;
  14. void inicjuj(void)                  // Inicjowanie programu (jednorazowo przy starcie)
  15. {
  16. }
  17.  
  18. void oblicz(void)                   // Kod użytkownika - wykonywany co wCykl [ms]
  19. {
  20.         switch(stanLCD){
  21.     case 1:
  22.         LCD_xy(0,1);
  23.         LCD_puts("STEROWANIE      ");
  24.         LCD_xy(0,2);
  25.         LCD_puts("ZBIORNIKAMI     ");
  26.         if(!timLCD) {stanLCD=2; timLCD=20;}
  27.         break;
  28.     case 2:
  29.         LCD_xy(0,1);
  30.         LCD_puts("WLACZONY TRYB   ");
  31.         LCD_xy(0,2);
  32.         LCD_puts("AUTOMATYCZNY    ");
  33.         if(!timLCD) stanLCD=3;
  34.         break;
  35.     case 3:
  36.         LCD_xy(0,1);
  37.         LCD_puts("K1- TRYB RECZNY ");
  38.         LCD_xy(0,2);
  39.         LCD_puts("                  ");
  40.         if(!pK1&&aK1) {
  41.             stanLCD=4;
  42.             timLCD=20;
  43.             stan1=4;
  44.             stan2=5;
  45.             stan3=9;
  46.         }
  47.         if(!pK2&&aK2) {stanLCD=6; timLCD=50;}
  48.         break;
  49.     case 4:
  50.         LCD_xy(0,1);
  51.         LCD_puts("WLACZONY TRYB   ");
  52.         LCD_xy(0,2);
  53.         LCD_puts("RECZNY          ");
  54.         if(!timLCD) {stanLCD=5; timLCD=50;}
  55.         break;
  56.     case 5:
  57.         LCD_xy(0,1);
  58.         LCD_puts("Z1-Z5:K1-K5;M-K6");
  59.         LCD_xy(0,2);
  60.         LCD_puts("G-K7 POWROT:K8  ");
  61.         if(!pK8&&aK8){
  62.             timLCD=20;
  63.             stanLCD=2;
  64.             stan1=1;
  65.             stan2=1;
  66.             stan3=1;
  67.  
  68.         }
  69.     }
  70.     //Zbiornik 1
  71.     switch(stan1){
  72.         case 1:
  73.             Z1= 1;
  74.             if(!tim1a) {
  75.                 stan1=2;
  76.                 tim1a=10;
  77.             }
  78.             else if(!tim1b||X1) stan1=3;
  79.             break;
  80.         case 2:
  81.             Z1= 0;
  82.             if(!tim1a&&!X1) {
  83.                 stan1=1;
  84.                 tim1a=20;
  85.             }
  86.             break;
  87.         case 3:
  88.             Z1= 0;
  89.             if(!X1){
  90.                 stan1=1; tim1a=20; tim1b=100;
  91.             }
  92.             break;
  93.         case 4:
  94.             if(!pK1&&aK1) timLCD=50;
  95.             if((!pK1&&aK1)&&!Z1&&!X1) {Z1=1; timLCD=50;}
  96.             else if((!pK1&&aK1)&&Z1) {Z1=0; timLCD=50;}
  97.             if(X1) Z1=0;
  98.             break;
  99.     }
  100.     //Zbiornik 2
  101.     switch(stan2){
  102.         case 1:
  103.             Z2=1;
  104.             if(X4) {tim2=200; stan2=2;}
  105.             break;
  106.         case 2:
  107.             Z2=1;
  108.             if(!tim2||X3) stan2=3;
  109.             break;
  110.         case 3:
  111.             Z2=0;
  112.             if(!X4) stan2=1;
  113.             break;
  114.         case 5:
  115.             if(!pK2&&aK2) timLCD=50;
  116.             if((!pK2&&aK2)&&!Z2&&!X3) {Z2=1; timLCD=50;}
  117.             else if((!pK2&&aK2)&&Z2) {Z2=0; timLCD=50;}
  118.             if(X3) Z2=0;
  119.             break;
  120.     }
  121.     //Zbiornik 3.1
  122.     switch(stan3) {
  123.         case 1:
  124.             Z3=1; Z4=1; Z5=0; M=0; G=0;
  125.             if(X5) {stan3=2; tim3=20;}
  126.             break;
  127.         case 2:
  128.             Z3=1; Z4=0; Z5=0; M=0; G=0;
  129.             if(!tim3) {stan3=3 tim3=20;}
  130.             else if (X5) {stan3=4; tim3=100;}
  131.             break;
  132.         case 3:
  133.             Z3=0; Z4=1; Z5=0; M=0; G=0;
  134.             if(!tim3){stan3=2; tim3=20;}
  135.             else if (X5) {stan3=4; tim3=100;}
  136.             break;
  137.         case 4:
  138.             Z3=0; Z4=0; Z5=0; M=0; G=1;
  139.             if(!tim3&&!T) {stan3=5; tim3=200;}
  140.             else if(!tim3&&T) {stan3=6; tim3=50;}
  141.             break;
  142.         case 5:
  143.             Z3=0; Z4=0; Z5=0; M=0; G=1;
  144.             if(!tim3||T){stan3=6; tim3=50;}
  145.             break;
  146.         case 6:
  147.             Z3=0; Z4=0; Z5=1; M=1; G=0;
  148.             if(!tim3&&!X7) stan3=1;
  149.             else if(!tim3&&X7) stan3=7;
  150.             break;
  151.         case 7:
  152.             Z3=0; Z4=0; Z5=1; M=0; G=0;
  153.             if(!X7) stan3=1;
  154.             break;
  155.         case 9:
  156.             if(!pK3&&aK3) timLCD=50;
  157.             if((!pK3&&aK3)&&!Z3&&!X5) {Z3=1; timLCD=50;}
  158.             else if((!pK3&&aK3)&&Z3) {Z3=0; timLCD=50;}
  159.             if(X5) Z3=0;
  160.            
  161.             if(!pK4&&aK4) timLCD=50;
  162.             if((!pK4&&aK4)&&!Z4&&!X5) {Z4=1; timLCD=50;}
  163.             else if((!pK4&&aK4)&&Z4) {Z4=0; timLCD=50;}
  164.             if(X5) Z4=0;
  165.        
  166.             if((!pK5&&aK5)&&!Z5) {Z5=1; timLCD=50;}
  167.             else if((!pK5&&aK5)&&Z5) {Z5=0;timLCD=50;}
  168.            
  169.             if(!pK6&&aK6) timLCD=50;
  170.             if((!pK6&&aK6)&&!M&&X7) {M=1; timLCD=50;}
  171.             else if((!pK6&&aK6)&&M) {M=0; timLCD=50;}
  172.             if(!X7) M=0;
  173.  
  174.             if(!pK7&&aK7) timLCD=50;
  175.             if((!pK7&&aK7)&&!G) {G=1; timLCD=50;}
  176.             else if((!pK7&&aK7)&&G) {G=0; timLCD=50;}
  177.             if(!X7) G=0;
  178.             break;
  179.     }
  180.     if(tim1a) --tim1a;
  181.     if(tim1b) --tim1b;
  182.     if(tim2) --tim2;
  183.     if(tim3) --tim3;
  184.     if(timLCD) --timLCD;                    // Test obiektu "SchematA" (z pliku Zadania.h)
  185. }
  186.  
  187. void int_T0(void)                   // Przerwanie od T0/T1/T2 wywoływane tIntr [ms]
  188. {
  189. }
  190.  
  191. void WykresyPC()                    // Opisy/wartości wykresów i zmiennych pomocniczych
  192. {
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement