Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**********************************************************************************/
- /* Program symulatora SP-841/AVR w wersji do zadań z Symulatorem Obiektów */
- /**********************************************************************************/
- #include "WorkObiekt.h" // Definicje zmiennych i prototypy funkcji SPAVR
- #include "SchematA.h" // Definicje wejść i wyjść obiektu A
- #define T1s 1000/wCykl // Liczba cykli na 1 sekundę (1000/500 => 2) // Zadania użytkownika
- int t1=20, t2=20, t3=10, t4=10, t5a=10, t5b=20;
- char tim1a=20, tim1b=100, stan1=1;
- char tim2=0, stan2=1;
- char tim3=0, stan3=1;
- char timLCD=30, stanLCD=1;
- void inicjuj(void) // Inicjowanie programu (jednorazowo przy starcie)
- {
- }
- void oblicz(void) // Kod użytkownika - wykonywany co wCykl [ms]
- {
- switch(stanLCD){
- case 1:
- LCD_xy(0,1);
- LCD_puts("STEROWANIE ");
- LCD_xy(0,2);
- LCD_puts("ZBIORNIKAMI ");
- if(!timLCD) {stanLCD=2; timLCD=20;}
- break;
- case 2:
- LCD_xy(0,1);
- LCD_puts("WLACZONY TRYB ");
- LCD_xy(0,2);
- LCD_puts("AUTOMATYCZNY ");
- if(!timLCD) stanLCD=3;
- break;
- case 3:
- LCD_xy(0,1);
- LCD_puts("K1- TRYB RECZNY ");
- LCD_xy(0,2);
- LCD_puts(" ");
- if(!pK1&&aK1) {
- stanLCD=4;
- timLCD=20;
- stan1=4;
- stan2=5;
- stan3=9;
- }
- if(!pK2&&aK2) {stanLCD=6; timLCD=50;}
- break;
- case 4:
- LCD_xy(0,1);
- LCD_puts("WLACZONY TRYB ");
- LCD_xy(0,2);
- LCD_puts("RECZNY ");
- if(!timLCD) {stanLCD=5; timLCD=50;}
- break;
- case 5:
- LCD_xy(0,1);
- LCD_puts("Z1-Z5:K1-K5;M-K6");
- LCD_xy(0,2);
- LCD_puts("G-K7 POWROT:K8 ");
- if(!pK8&&aK8){
- timLCD=20;
- stanLCD=2;
- stan1=1;
- stan2=1;
- stan3=1;
- }
- }
- //Zbiornik 1
- switch(stan1){
- case 1:
- Z1= 1;
- if(!tim1a) {
- stan1=2;
- tim1a=10;
- }
- else if(!tim1b||X1) stan1=3;
- break;
- case 2:
- Z1= 0;
- if(!tim1a&&!X1) {
- stan1=1;
- tim1a=20;
- }
- break;
- case 3:
- Z1= 0;
- if(!X1){
- stan1=1; tim1a=20; tim1b=100;
- }
- break;
- case 4:
- if(!pK1&&aK1) timLCD=50;
- if((!pK1&&aK1)&&!Z1&&!X1) {Z1=1; timLCD=50;}
- else if((!pK1&&aK1)&&Z1) {Z1=0; timLCD=50;}
- if(X1) Z1=0;
- break;
- }
- //Zbiornik 2
- switch(stan2){
- case 1:
- Z2=1;
- if(X4) {tim2=200; stan2=2;}
- break;
- case 2:
- Z2=1;
- if(!tim2||X3) stan2=3;
- break;
- case 3:
- Z2=0;
- if(!X4) stan2=1;
- break;
- case 5:
- if(!pK2&&aK2) timLCD=50;
- if((!pK2&&aK2)&&!Z2&&!X3) {Z2=1; timLCD=50;}
- else if((!pK2&&aK2)&&Z2) {Z2=0; timLCD=50;}
- if(X3) Z2=0;
- break;
- }
- //Zbiornik 3.1
- switch(stan3) {
- case 1:
- Z3=1; Z4=1; Z5=0; M=0; G=0;
- if(X5) {stan3=2; tim3=20;}
- break;
- case 2:
- Z3=1; Z4=0; Z5=0; M=0; G=0;
- if(!tim3) {stan3=3 tim3=20;}
- else if (X5) {stan3=4; tim3=100;}
- break;
- case 3:
- Z3=0; Z4=1; Z5=0; M=0; G=0;
- if(!tim3){stan3=2; tim3=20;}
- else if (X5) {stan3=4; tim3=100;}
- break;
- case 4:
- Z3=0; Z4=0; Z5=0; M=0; G=1;
- if(!tim3&&!T) {stan3=5; tim3=200;}
- else if(!tim3&&T) {stan3=6; tim3=50;}
- break;
- case 5:
- Z3=0; Z4=0; Z5=0; M=0; G=1;
- if(!tim3||T){stan3=6; tim3=50;}
- break;
- case 6:
- Z3=0; Z4=0; Z5=1; M=1; G=0;
- if(!tim3&&!X7) stan3=1;
- else if(!tim3&&X7) stan3=7;
- break;
- case 7:
- Z3=0; Z4=0; Z5=1; M=0; G=0;
- if(!X7) stan3=1;
- break;
- case 9:
- if(!pK3&&aK3) timLCD=50;
- if((!pK3&&aK3)&&!Z3&&!X5) {Z3=1; timLCD=50;}
- else if((!pK3&&aK3)&&Z3) {Z3=0; timLCD=50;}
- if(X5) Z3=0;
- if(!pK4&&aK4) timLCD=50;
- if((!pK4&&aK4)&&!Z4&&!X5) {Z4=1; timLCD=50;}
- else if((!pK4&&aK4)&&Z4) {Z4=0; timLCD=50;}
- if(X5) Z4=0;
- if((!pK5&&aK5)&&!Z5) {Z5=1; timLCD=50;}
- else if((!pK5&&aK5)&&Z5) {Z5=0;timLCD=50;}
- if(!pK6&&aK6) timLCD=50;
- if((!pK6&&aK6)&&!M&&X7) {M=1; timLCD=50;}
- else if((!pK6&&aK6)&&M) {M=0; timLCD=50;}
- if(!X7) M=0;
- if(!pK7&&aK7) timLCD=50;
- if((!pK7&&aK7)&&!G) {G=1; timLCD=50;}
- else if((!pK7&&aK7)&&G) {G=0; timLCD=50;}
- if(!X7) G=0;
- break;
- }
- if(tim1a) --tim1a;
- if(tim1b) --tim1b;
- if(tim2) --tim2;
- if(tim3) --tim3;
- if(timLCD) --timLCD; // Test obiektu "SchematA" (z pliku Zadania.h)
- }
- void int_T0(void) // Przerwanie od T0/T1/T2 wywoływane tIntr [ms]
- {
- }
- void WykresyPC() // Opisy/wartości wykresów i zmiennych pomocniczych
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement