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 czasowych */
- /**********************************************************************************/
- #include "WorkPrzebieg.h" // Definicje zmiennych i prototypy funkcji SP
- #include "Zadania.h" // Zadania użytkownika
- void inicjuj(void) // Inicjowanie programu (jednorazowo przy starcie)
- {
- }
- int licz=0;
- char stan=1;
- // stan alarmu
- char kl_aktywacji, stan_a=1,STAN_ALARMU;
- // glosnosc
- char kl_glosnosc_dol, kl_glosnosc_gora, stan_g = 1, stan_g2 = 1, GLOSNOSC, STAN_GLOSNOSCI;
- int tim_g1, tim_g2, tim_g3, tim_g4;
- // stan systemu
- char kl_czujnik, kl_test, SWIATLA,DZWIEK, stan_a2 =1;
- int tim_a;
- void oblicz(void) // Kod użytkownika - wykonywany co wCykl [ms]
- {
- // stanu alarmu
- kl_aktywacji = aK1;
- switch (stan_a) {
- case 1: STAN_ALARMU = 0;
- if (kl_aktywacji) { stan_a = 2; }
- break;
- case 2: STAN_ALARMU = 1;
- if (!kl_aktywacji) { stan_a = 3; }
- break;
- case 3: STAN_ALARMU = 1;
- if (kl_aktywacji) { stan_a = 4; }
- break;
- case 4: STAN_ALARMU = 0;
- if (!kl_aktywacji) { stan_a = 1; }
- break;
- }
- L1 = STAN_ALARMU;
- // zmiana glosnosci
- kl_glosnosc_dol = aK2;
- kl_glosnosc_gora = aK3;
- switch(stan_g) {
- case 1: GLOSNOSC = 0;
- if(kl_glosnosc_gora) { tim_g1 = 3*sek; stan_g = 2; }
- break;
- case 2: GLOSNOSC = 0;
- if(!kl_glosnosc_gora) { stan_g = 3; }
- else if (!tim_g1 && kl_glosnosc_gora) { stan_g =9;}
- break;
- case 3: GLOSNOSC = 3;
- if(kl_glosnosc_gora) { tim_g1 = 3*sek; stan_g = 5; }
- else if (kl_glosnosc_dol) {tim_g2 = 3* sek; stan_g =4; }
- break;
- case 4: GLOSNOSC = 3;
- if(!kl_glosnosc_gora && (!tim_g2 || !kl_glosnosc_dol) ) { stan_g = 1; }
- break;
- case 5: GLOSNOSC = 3;
- if(!kl_glosnosc_gora) { stan_g = 6; }
- else if (!tim_g1 && kl_glosnosc_gora) { stan_g =9;}
- break;
- case 6: GLOSNOSC = 7;
- if(kl_glosnosc_gora) { tim_g1 = 3*sek; stan_g = 8; }
- else if(kl_glosnosc_dol) { tim_g2 = 3*sek; stan_g =7;}
- break;
- case 7: GLOSNOSC = 7;
- if(!kl_glosnosc_dol) { stan_g = 3; }
- else if (!tim_g2 && kl_glosnosc_dol) {stan_g=1;}
- break;
- case 8: GLOSNOSC = 7;
- if(!kl_glosnosc_gora || !tim_g1) { stan_g = 9; }
- break;
- case 9: GLOSNOSC = 10;
- if(kl_glosnosc_dol) { stan_g = 10; tim_g2=3*sek; }
- break;
- case 10: GLOSNOSC = 10;
- if(!kl_glosnosc_dol) { stan_g =6; }
- else if (!tim_g2 && kl_glosnosc_dol) {stan_g=1;}
- break;
- }
- switch(stan_g2) {
- case 1: STAN_GLOSNOSCI = 1;
- if(!tim_g3) { stan_g2 = 2; tim_g4= sek*(GLOSNOSC*0.2); }
- break;
- case 2: STAN_GLOSNOSCI = 0;
- if(!tim_g4) {stan_g2 = 1; tim_g3 = sek*(2-(GLOSNOSC*0.2)); }
- break;
- }
- L2 = STAN_GLOSNOSCI;
- kl_czujnik = aK4;
- kl_test = aK5;
- switch(stan_a2) {
- case 1: SWIATLA=0; DZWIEK=0;
- if(kl_czujnik && !(stan_a >0 && stan_a <3) ) { tim_a = 1; stan_a2 = 2; }
- else if(kl_test&&(stan_a >0 && stan_a <3)) { tim_a = 1; stan_a2 = 3; }
- break;
- case 2: SWIATLA=0; DZWIEK=1;
- if (stan_a >0 && stan_a <3) {stan_a2 = 1;}
- else if(!tim_a) {tim_a=0.5*sek; stan_a2=14;}
- break;
- case 3: SWIATLA=1; DZWIEK=0;
- if(!tim_a) {tim_a=1*sek; stan_a2=4;}
- break;
- case 4: SWIATLA=0; DZWIEK=0;
- if(!tim_a) {tim_a=2*sek; stan_a2=5;}
- break;
- case 5: SWIATLA=1; DZWIEK=0;
- if(!tim_a) {tim_a=1*sek; stan_a2=6;}
- break;
- case 6: SWIATLA=0; DZWIEK=0;
- if(!tim_a) {tim_a=1*sek; stan_a2=7;}
- break;
- case 7: SWIATLA=1; DZWIEK=0;
- if(!tim_a) {tim_a=1*sek; stan_a2=8;}
- break;
- case 8: SWIATLA=0; DZWIEK=0;
- if(!tim_a) {tim_a=1*sek; stan_a2=9;}
- break;
- case 9: SWIATLA=0; DZWIEK=1;
- if(!tim_a) {tim_a=1*sek; stan_a2=10;}
- break;
- case 10: SWIATLA=0; DZWIEK=0;
- if(!tim_a) {tim_a=2*sek; stan_a2=11;}
- break;
- case 11: SWIATLA=0; DZWIEK=1;
- if(!tim_a) {tim_a=1*sek; stan_a2=12;}
- break;
- case 12: SWIATLA=0; DZWIEK=0;
- if(!tim_a) {tim_a=3*sek; stan_a2=13;}
- break;
- case 13: SWIATLA=0; DZWIEK=1;
- if(!tim_a) {stan_a2=1;}
- break;
- case 14: SWIATLA=1; DZWIEK=1;
- if(!stan_a) {stan_a2=1;}
- else if (!tim_a){ tim_a=sek; stan_a2 = 15;}
- break;
- case 15: SWIATLA=0; DZWIEK=1;
- if(!stan_a) {stan_a2=1;}
- else if (!tim_a){ tim_a=0.5*sek; stan_a2 = 16;}
- break;
- case 16: SWIATLA=0; DZWIEK=0;
- if(!stan_a) {stan_a2=1;}
- else if (!tim_a){ tim_a=sek; stan_a2 = 2;}
- break;
- }
- L3 = SWIATLA;
- L4 = DZWIEK;
- sprintf(buf,"a=%db=%dc=%dd=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
- LCD_xy(1,1); LCD_puts(buf);
- sprintf(buf,"A=%dG=%dG3=%dW=%d ",(int)L1,(int)GLOSNOSC,(int)L3,(int)L4);
- LCD_xy(1,2); LCD_puts(buf);
- }
- void int_T0(void) // Przerwanie od T0/T1/T2 wywoływane tIntr [ms]
- {
- if(tim_a) --tim_a;
- if(tim_g1) --tim_g1;
- if(tim_g2) --tim_g2;
- if(tim_g3) --tim_g3;
- if(tim_g4) --tim_g4;
- }
- 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]="a";
- bNazwa[1]="b";bNazwa[2]="c";bNazwa[3]="d";
- bNazwa[4]="G1";
- bNazwa[5]="G2";
- bNazwa[6]="G3";
- bNazwa[7]="W";
- iNazwa[0]="stan_g"; iZmienna[0]=stan_g;
- iNazwa[1]="tim_g1"; iZmienna[1]= tim_g1;
- iNazwa[2]="tim_g2"; iZmienna[2]= tim_g2;
- iNazwa[3]="tim_g3"; iZmienna[3]= tim_g3;
- iNazwa[4]="tim_g4"; iZmienna[4]= tim_g4;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement