Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**********************************************************************************/
- /* Program symulatora SP-841/AVR w wersji do zadań z przebiegów czestotliwoscowych */
- /**********************************************************************************/
- #include "WorkPrzebieg.h" // Definicje zmiennych i prototypy funkcji SP
- #include "Zadania.h" // Zadania użytkownika
- #include <Windows.h>
- #include <process.h>
- enum GLOWNY_GRAF
- {
- G1, G2, G3, G4, G5, G6, G7, G8, G9, G10
- };
- enum GRAF_WEWNETRZNY
- {
- A0, A1, A2, A3,
- B0, B1, B2, B3,
- C0, C1, C2, C3, C4, C5,
- D0, D1, D2, D3,
- AL0, AL1, AL2,
- AO0, AO1, AO2,
- IW0, IW1, IW2, IW3,
- OK0, OK1, OK2
- };
- enum GRAF_SWIATLA
- {
- };
- char drzwi, swiatla, okna, klakson, dioda_wlaman;
- char OZDrzwi, prevOZDrzwi, OtwOkien, ZamOkien, CzujnikWlamania, AwaryjneOtwDrzwi, WylaczAlarm, SprawdzIleWlaman;
- char W_swiatla, W_klakson, W4_swiatla, W4_klakson, W5_swiatla, W5_klakson, W9_klakson, W10_dioda, W6_okna;
- GLOWNY_GRAF glowny_graf;
- GRAF_WEWNETRZNY graf_wewnetrzny, graf_wewnetrzny2, stan_swiatla_G4, stan_klakson_G4, stan_alarmu_G5, stan_alarmu_G9, stan_wlaman_G10, stan_okien_G6;
- GRAF_SWIATLA stan_swiatla;
- int tim, tim2, czestotliwosc, odchylenie;
- char licz, licz_wlaman;
- unsigned int flaga ,flaga1, flaga2, G2_start, G4_start, G5_start, G9_start, G10_start, G6_start, flaga_okna;
- void inicjuj(void) // Inicjowanie programu (jednorazowo przy starcie)
- {
- glowny_graf = G1;
- graf_wewnetrzny = A0;
- graf_wewnetrzny2 = B0;
- stan_swiatla_G4 = D0;
- stan_klakson_G4 = C0;
- stan_alarmu_G5 = AL0;
- stan_alarmu_G9 = AO0;
- stan_wlaman_G10 = IW0;
- stan_okien_G6 = OK0;
- odchylenie = 0;
- flaga = 0;
- }
- void oblicz(void) // Kod użytkownika - wykonywany co wCykl [ms]
- {
- //L1 = aK1; // Zaświeć L1 jeśli naciśnięty K1
- //L2 = aK2; // Zaświeć L2 jeśli naciśnięty K2
- //L3 = aK3; // Zaświeć L3 jeśli naciśnięty K3
- //L4 = aK4; // Zaświeć L4 jeśli naciśnięty K4
- //zadanie1(); // Funkcja z pliku "Zadania.h"
- //sprintf(buf,"a=%db=%dc=%dd=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
- //LCD_xy(1,1); LCD_puts(buf);
- //sprintf(buf,"G1=%dG2=%dG3=%dW=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
- //LCD_xy(1,2); LCD_puts(buf);
- OZDrzwi = aK1;
- OtwOkien = aK2;
- ZamOkien = aK3;
- CzujnikWlamania = aK4;
- AwaryjneOtwDrzwi = aK5;
- WylaczAlarm = aK6;
- SprawdzIleWlaman = aK7;
- prevOZDrzwi = pK1;
- switch (glowny_graf){
- case G1:
- drzwi = 0;
- swiatla = 0;
- klakson = 0;
- dioda_wlaman = 0;
- okna = 0;
- if (OZDrzwi && !prevOZDrzwi) {glowny_graf = G2; G2_start = 1;}
- else
- if (CzujnikWlamania) {glowny_graf = G5; tim = 5000; G5_start = 1;}
- else
- if (AwaryjneOtwDrzwi) {glowny_graf = G9; czestotliwosc = 200; G9_start = 1;}
- break;
- case G2:
- drzwi = 1;
- swiatla = W_swiatla;
- klakson = W_klakson;
- dioda_wlaman = 0;
- okna = 0;
- if (flaga1 && flaga2) {glowny_graf = G3; G2_start = 0;}
- else
- if (OZDrzwi && !prevOZDrzwi) {glowny_graf = G4; G4_start = 1;}
- break;
- case G3:
- drzwi = 1;
- swiatla = 0;
- klakson = 0;
- dioda_wlaman = 0;
- okna = 0;
- if (OtwOkien) {glowny_graf = G6; G6_start = 1;}
- else
- if (OZDrzwi && !prevOZDrzwi) {glowny_graf = G4; G4_start = 1;}
- else
- if (SprawdzIleWlaman) {glowny_graf = G10; G10_start = 1;}
- break;
- case G4:
- drzwi = 0;
- swiatla = W4_swiatla;
- klakson = W4_klakson;
- dioda_wlaman = 0;
- okna = 0;
- if (OZDrzwi && !prevOZDrzwi) {glowny_graf = G2; G2_start = 1;}
- else
- if (flaga1 && flaga2) {glowny_graf = G1; G4_start = 0;}
- break;
- case G5:
- //alarm
- drzwi = 0;
- swiatla = W5_swiatla;
- klakson = W5_klakson;
- dioda_wlaman = 0;
- okna = 0;
- if (!tim) {licz_wlaman++; glowny_graf = G1; G5_start = 0;}
- else
- if (OZDrzwi && !prevOZDrzwi) {glowny_graf = G1; G5_start = 0; tim = 0;}
- break;
- case G6:
- drzwi = 1;
- swiatla = 0;
- klakson = 0;
- dioda_wlaman = 0;
- okna = W6_okna;
- if (OtwOkien || (odchylenie == 200)) {glowny_graf = G7;}
- else
- if (ZamOkien) {glowny_graf = G8;}
- else
- if (OZDrzwi) {glowny_graf = G8, flaga_okna = 1;}
- break;
- case G7:
- drzwi = 1;
- swiatla = 0;
- klakson = 0;
- dioda_wlaman = 0;
- okna = W6_okna;
- if (OtwOkien && (odchylenie != 200)) {glowny_graf = G6;}
- else
- if (ZamOkien) {glowny_graf = G8;}
- else
- if (OZDrzwi) {glowny_graf = G8, flaga_okna = 1;}
- else
- if (SprawdzIleWlaman) {glowny_graf = G10; G10_start = 1; flaga = 1;}
- break;
- case G8:
- drzwi = 1;
- swiatla = 0;
- klakson = 0;
- dioda_wlaman = 0;
- okna = W6_okna;
- if (!odchylenie && !flaga_okna) {glowny_graf = G3; flaga_okna = 0; G6_start = 0;}
- else
- if (OtwOkien) {glowny_graf = G6;}
- else
- if (ZamOkien) {glowny_graf = G7;}
- else
- if (!odchylenie && flaga_okna) {glowny_graf = G4, flaga_okna = 0; G4_start = 1; G6_start = 0;}
- break;
- case G9:
- drzwi = 0;
- swiatla = 0;
- klakson = W9_klakson;
- dioda_wlaman = 0;
- okna = 0;
- if (!czestotliwosc) {glowny_graf = G5; tim = 5000; G5_start = 1;}
- else
- if (WylaczAlarm) {glowny_graf = G2; G2_start = 1;}
- break;
- case G10:
- drzwi = 1;
- swiatla = 0;
- klakson = 0;
- dioda_wlaman = W10_dioda;
- okna = W6_okna;
- if (flaga1 && !flaga) {glowny_graf = G3; G10_start = 0;}
- else
- if (flaga1 && flaga) {glowny_graf = G7; G10_start = 0; flaga = 0;}
- break;
- }
- //sterowanie otwarciem swiatla i klakson
- switch (graf_wewnetrzny){
- case A0:
- W_swiatla = 0;
- if(G2_start && glowny_graf == G2) {graf_wewnetrzny = A1; tim = 200; flaga1 = 0; licz = 1;}
- else
- if(glowny_graf != G2) {graf_wewnetrzny = A0;}
- break;
- case A1:
- W_swiatla = 1;
- if(!tim && glowny_graf == G2) {tim = 200; graf_wewnetrzny = A2;}
- else
- if(glowny_graf != G2) {graf_wewnetrzny = A0;}
- break;
- case A2:
- if(licz == 3 && glowny_graf == G2) {graf_wewnetrzny = A3; flaga1 = 1;}
- else
- if(!tim && glowny_graf == G2) {tim = 200; graf_wewnetrzny = A1; licz++;}
- else
- if(glowny_graf != G2) {graf_wewnetrzny = A0;}
- W_swiatla = 0;
- break;
- case A3:
- W_swiatla = 0;
- if(!G2_start)graf_wewnetrzny = A0;
- break;
- }
- switch (graf_wewnetrzny2){
- case B0:
- W_klakson = 0;
- if(G2_start && glowny_graf == G2) {graf_wewnetrzny2 = B1; tim2 = 200; flaga2 = 0;}
- else
- if(glowny_graf != G2) {graf_wewnetrzny2 = B0;}
- break;
- case B1:
- W_klakson = 0;
- if(!tim2 && glowny_graf == G2) {tim2 = 200; graf_wewnetrzny2 = B2;}
- else
- if(glowny_graf != G2) {graf_wewnetrzny2 = B0;}
- break;
- case B2:
- W_klakson = 1;
- if(!tim2 && glowny_graf == G2) {graf_wewnetrzny2 = B3; flaga2 = 1;}
- else
- if(glowny_graf != G2) {graf_wewnetrzny2 = B0;}
- break;
- case B3:
- W_klakson = 0;
- if(!G2_start)graf_wewnetrzny2 = B0;
- break;
- }
- // sterowanie swiatla i klakson dla zamkniecia drzwi
- switch (stan_swiatla_G4){
- case D0:
- W4_swiatla = 0;
- if(G4_start && glowny_graf == G4) {stan_swiatla_G4 = D1; tim = 200; flaga1 = 0; licz = 1;}
- else
- if(glowny_graf != G4) {stan_swiatla_G4 = D0;}
- break;
- case D1:
- W4_swiatla = 1;
- if(!tim && glowny_graf == G4) {tim = 200; stan_swiatla_G4 = D2;}
- else
- if(glowny_graf != G4) {stan_swiatla_G4 = D0;}
- break;
- case D2:
- if(licz == 3 && glowny_graf == G4) {stan_swiatla_G4 = D3; flaga1 = 1;}
- else
- if(!tim && glowny_graf == G4) {tim = 200; stan_swiatla_G4 = D1; licz++;}
- else
- if(glowny_graf != G4) {stan_swiatla_G4 = D0;}
- W4_swiatla = 0;
- break;
- case D3:
- W4_swiatla = 0;
- if(!G4_start)stan_swiatla_G4 = D0;
- break;
- }
- switch (stan_klakson_G4){
- case C0:
- W4_klakson = 0;
- if(G4_start && glowny_graf == G4) {stan_klakson_G4 = C1; tim2 = 200; flaga2 = 0;}
- else
- if(glowny_graf != G4) {stan_klakson_G4 = C0;}
- break;
- case C1:
- W4_klakson = 0;
- if(!tim2 && glowny_graf == G4) {tim2 = 200; stan_klakson_G4 = C2;}
- else
- if(glowny_graf != G4) {stan_klakson_G4 = C0;}
- break;
- case C2:
- W4_klakson = 1;
- if(!tim2 && glowny_graf == G4) {tim2 = 200; stan_klakson_G4 = C3;}
- else
- if(glowny_graf != G4) {stan_klakson_G4 = C0;}
- break;
- case C3:
- W4_klakson = 0;
- if(!tim2 && glowny_graf == G4) {tim2 = 200; stan_klakson_G4 = C4;}
- else
- if(glowny_graf != G4) {stan_klakson_G4 = C0;}
- break;
- case C4:
- W4_klakson = 1;
- if(!tim2 && glowny_graf == G4) {stan_klakson_G4 = C5; flaga2 = 1;}
- else
- if(glowny_graf != G4) {stan_klakson_G4 = C0;}
- break;
- case C5:
- W4_klakson = 0;
- if(!G4_start)stan_klakson_G4 = C0;
- break;
- }
- //graf odpowiedzialny za sterowanie alarmem
- switch (stan_alarmu_G5)
- {
- case AL0:
- W5_swiatla = 0;
- W5_klakson = 0;
- if(G5_start && glowny_graf == G5) {stan_alarmu_G5 = AL1; tim2 = 300;}
- break;
- case AL1:
- W5_swiatla = 1;
- W5_klakson = 1;
- if (!tim2 && glowny_graf == G5) {tim2 = 200; stan_alarmu_G5 = AL2;}
- else
- if (glowny_graf != G5) {stan_alarmu_G5 = AL0;}
- break;
- case AL2:
- W5_swiatla = 0;
- W5_klakson = 0;
- if (!tim2 && glowny_graf == G5) {tim2 = 300; stan_alarmu_G5 = AL1;}
- else
- if (glowny_graf != G5) {stan_alarmu_G5 = AL0;}
- break;
- }
- //graf do sterowania alarmem przy otwieraniu awaryjnym
- switch (stan_alarmu_G9)
- {
- case AO0:
- W9_klakson = 0;
- if(G9_start && glowny_graf == G9) {stan_alarmu_G9 = AO1; tim = czestotliwosc;}
- break;
- case AO1:
- W9_klakson = 1;
- if (!tim && glowny_graf == G9) {tim = czestotliwosc; stan_alarmu_G9 = AO2;}
- else
- if (glowny_graf != G9) {stan_alarmu_G9 = AO0;}
- else
- if (!czestotliwosc) {stan_alarmu_G9 = AO0;}
- break;
- case AO2:
- W9_klakson = 0;
- if (!tim && glowny_graf == G9) {tim = czestotliwosc; stan_alarmu_G9 = AO1; czestotliwosc -= 10;}
- else
- if (glowny_graf != G9) {stan_alarmu_G9 = AO0;}
- break;
- }
- //sprawdzenie ile jest wlaman
- switch (stan_wlaman_G10)
- {
- case IW0:
- W10_dioda = 0;
- if(G10_start && licz_wlaman) {stan_wlaman_G10 = IW1; tim = 100; flaga1 = 0;}
- break;
- case IW1:
- W10_dioda = 1;
- if (!tim) {tim = 100; stan_wlaman_G10 = IW2; licz_wlaman --;}
- break;
- case IW2:
- W10_dioda = 0;
- if (!licz_wlaman) {stan_wlaman_G10 = IW3; flaga1 = 1;}
- else
- if (!tim && licz_wlaman) {tim = 100; stan_wlaman_G10 = IW1;}
- break;
- case IW3:
- W10_dioda = 0;
- if(!G10_start) stan_wlaman_G10 = IW0;
- break;
- }
- //sterowanie oknami
- //otwieranie okien
- switch (stan_okien_G6)
- {
- case OK0:
- W6_okna = 0;
- if(G6_start) {stan_okien_G6 = OK1; tim = odchylenie;}
- break;
- case OK1:
- W6_okna = 1;
- if ((odchylenie == 200) && (glowny_graf == G7)) {stan_okien_G6 = OK1;}
- else
- if (!tim) {tim = odchylenie; stan_okien_G6 = OK2;}
- break;
- case OK2:
- W6_okna = 0;
- if (!tim && glowny_graf == G6) {tim = odchylenie; stan_okien_G6 = OK1; odchylenie += 10;}
- else
- if (!tim && glowny_graf == G7) {tim = odchylenie; stan_okien_G6 = OK1;}
- else
- if (!tim && glowny_graf == G8) {tim = odchylenie; stan_okien_G6 = OK1; odchylenie -= 10;}
- break;
- }
- L1 = drzwi;
- L2 = swiatla;
- L3 = okna;
- L4 = klakson;
- L5 = dioda_wlaman;
- }
- void int_T0(void) // Przerwanie od T0/T1/T2 wywoływane tIntr [ms]
- {
- if(tim) --tim;
- if(tim1) --tim1;
- if(tim2) --tim2;
- }
- void WykresyPC() // Opisy/wartości wykresów i zmiennych pomocniczych
- {
- //aNazwa[0]="licz1"; aWykres[0]= (float)licz1;
- //bNazwa[8]="tim1!=0"; bWykres[8]= tim1!=0;
- bNazwa[0]="DRZWI"; bWykres[0] = drzwi;
- bNazwa[1]="ŚWIATŁA"; bWykres[1] = swiatla;
- bNazwa[2]="OKNA"; bWykres[2] = okna;
- bNazwa[3]="KLAKSON"; bWykres[3] = klakson;
- bNazwa[4]="DIODA WLAMAŃ"; bWykres[4] = dioda_wlaman;
- //iNazwa[0]="Moja zmienna"; iZmienna[0]=licz;
- iNazwa[2]="tim"; iZmienna[2]= tim;
- iNazwa[3]="czestotliwosc"; iZmienna[3]= czestotliwosc;
- iNazwa[4]="odchylenie"; iZmienna[4]= odchylenie;
- iNazwa[5]="W9_klakson"; iZmienna[5]= W9_klakson;
- iNazwa[6]="stan"; iZmienna[6]= glowny_graf +1;
- iNazwa[7]="wlamania"; iZmienna[7]= licz_wlaman;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement