Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.48 KB | None | 0 0
  1. /**********************************************************************************/
  2. /* Program symulatora SP-841/AVR w wersji do zadań z przebiegów czasowych */
  3. /**********************************************************************************/
  4. #include "WorkPrzebieg.h" // Definicje zmiennych i prototypy funkcji SP
  5. #include "Zadania.h" // Zadania użytkownika
  6.  
  7. void inicjuj(void) // Inicjowanie programu (jednorazowo przy starcie)
  8. {
  9. }
  10. int licz=0;
  11. char stan=1;
  12.  
  13. // stan alarmu
  14. char kl_aktywacji, stan_a=1,STAN_ALARMU;
  15.  
  16. // glosnosc
  17. char kl_glosnosc_dol, kl_glosnosc_gora, stan_g = 1, stan_g2 = 1, GLOSNOSC, STAN_GLOSNOSCI;
  18. int tim_g1, tim_g2, tim_g3, tim_g4;
  19.  
  20. // stan systemu
  21. char kl_czujnik, kl_test, SWIATLA,DZWIEK, stan_a2 =1;
  22. int tim_a;
  23.  
  24. void oblicz(void) // Kod użytkownika - wykonywany co wCykl [ms]
  25. {
  26. // stanu alarmu
  27.  
  28. kl_aktywacji = aK1;
  29.  
  30. switch (stan_a) {
  31. case 1: STAN_ALARMU = 0;
  32. if (kl_aktywacji) { stan_a = 2; }
  33. break;
  34. case 2: STAN_ALARMU = 1;
  35. if (!kl_aktywacji) { stan_a = 3; }
  36. break;
  37. case 3: STAN_ALARMU = 1;
  38. if (kl_aktywacji) { stan_a = 4; }
  39. break;
  40.  
  41. case 4: STAN_ALARMU = 0;
  42. if (!kl_aktywacji) { stan_a = 1; }
  43. break;
  44. }
  45.  
  46. L1 = STAN_ALARMU;
  47.  
  48. // zmiana glosnosci
  49.  
  50. kl_glosnosc_dol = aK2;
  51. kl_glosnosc_gora = aK3;
  52.  
  53. switch(stan_g) {
  54. case 1: GLOSNOSC = 0;
  55. if(kl_glosnosc_gora) { tim_g1 = 3*sek; stan_g = 2; }
  56. break;
  57. case 2: GLOSNOSC = 0;
  58. if(!kl_glosnosc_gora) { stan_g = 3; }
  59. else if (!tim_g1 && kl_glosnosc_gora) { stan_g =9;}
  60. break;
  61. case 3: GLOSNOSC = 3;
  62. if(kl_glosnosc_gora) { tim_g1 = 3*sek; stan_g = 5; }
  63. else if (kl_glosnosc_dol) {tim_g2 = 3* sek; stan_g =4; }
  64. break;
  65. case 4: GLOSNOSC = 3;
  66. if(!kl_glosnosc_gora && (!tim_g2 || !kl_glosnosc_dol) ) { stan_g = 1; }
  67. break;
  68. case 5: GLOSNOSC = 3;
  69. if(!kl_glosnosc_gora) { stan_g = 6; }
  70. else if (!tim_g1 && kl_glosnosc_gora) { stan_g =9;}
  71. break;
  72. case 6: GLOSNOSC = 7;
  73. if(kl_glosnosc_gora) { tim_g1 = 3*sek; stan_g = 8; }
  74. else if(kl_glosnosc_dol) { tim_g2 = 3*sek; stan_g =7;}
  75. break;
  76. case 7: GLOSNOSC = 7;
  77. if(!kl_glosnosc_dol) { stan_g = 3; }
  78. else if (!tim_g2 && kl_glosnosc_dol) {stan_g=1;}
  79. break;
  80. case 8: GLOSNOSC = 7;
  81. if(!kl_glosnosc_gora || !tim_g1) { stan_g = 9; }
  82. break;
  83. case 9: GLOSNOSC = 10;
  84. if(kl_glosnosc_dol) { stan_g = 10; tim_g2=3*sek; }
  85. break;
  86. case 10: GLOSNOSC = 10;
  87. if(!kl_glosnosc_dol) { stan_g =6; }
  88. else if (!tim_g2 && kl_glosnosc_dol) {stan_g=1;}
  89. break;
  90.  
  91. }
  92.  
  93. switch(stan_g2) {
  94. case 1: STAN_GLOSNOSCI = 1;
  95. if(!tim_g3) { stan_g2 = 2; tim_g4= sek*(GLOSNOSC*0.2); }
  96. break;
  97. case 2: STAN_GLOSNOSCI = 0;
  98. if(!tim_g4) {stan_g2 = 1; tim_g3 = sek*(2-(GLOSNOSC*0.2)); }
  99. break;
  100. }
  101.  
  102. L2 = STAN_GLOSNOSCI;
  103.  
  104. kl_czujnik = aK4;
  105. kl_test = aK5;
  106.  
  107. switch(stan_a2) {
  108. case 1: SWIATLA=0; DZWIEK=0;
  109. if(kl_czujnik && !(stan_a >0 && stan_a <3) ) { tim_a = 1; stan_a2 = 2; }
  110. else if(kl_test&&(stan_a >0 && stan_a <3)) { tim_a = 1; stan_a2 = 3; }
  111. break;
  112. case 2: SWIATLA=0; DZWIEK=1;
  113. if (stan_a >0 && stan_a <3) {stan_a2 = 1;}
  114. else if(!tim_a) {tim_a=0.5*sek; stan_a2=14;}
  115. break;
  116. case 3: SWIATLA=1; DZWIEK=0;
  117. if(!tim_a) {tim_a=1*sek; stan_a2=4;}
  118.  
  119. break;
  120. case 4: SWIATLA=0; DZWIEK=0;
  121. if(!tim_a) {tim_a=2*sek; stan_a2=5;}
  122.  
  123. break;
  124. case 5: SWIATLA=1; DZWIEK=0;
  125. if(!tim_a) {tim_a=1*sek; stan_a2=6;}
  126.  
  127. break;
  128. case 6: SWIATLA=0; DZWIEK=0;
  129. if(!tim_a) {tim_a=1*sek; stan_a2=7;}
  130.  
  131. break;
  132. case 7: SWIATLA=1; DZWIEK=0;
  133. if(!tim_a) {tim_a=1*sek; stan_a2=8;}
  134.  
  135. break;
  136. case 8: SWIATLA=0; DZWIEK=0;
  137. if(!tim_a) {tim_a=1*sek; stan_a2=9;}
  138.  
  139. break;
  140. case 9: SWIATLA=0; DZWIEK=1;
  141. if(!tim_a) {tim_a=1*sek; stan_a2=10;}
  142.  
  143.  
  144. break;
  145. case 10: SWIATLA=0; DZWIEK=0;
  146. if(!tim_a) {tim_a=2*sek; stan_a2=11;}
  147.  
  148. break;
  149. case 11: SWIATLA=0; DZWIEK=1;
  150. if(!tim_a) {tim_a=1*sek; stan_a2=12;}
  151.  
  152. break;
  153. case 12: SWIATLA=0; DZWIEK=0;
  154. if(!tim_a) {tim_a=3*sek; stan_a2=13;}
  155.  
  156. break;
  157. case 13: SWIATLA=0; DZWIEK=1;
  158. if(!tim_a) {stan_a2=1;}
  159.  
  160. break;
  161. case 14: SWIATLA=1; DZWIEK=1;
  162. if(!stan_a) {stan_a2=1;}
  163. else if (!tim_a){ tim_a=sek; stan_a2 = 15;}
  164. break;
  165. case 15: SWIATLA=0; DZWIEK=1;
  166. if(!stan_a) {stan_a2=1;}
  167. else if (!tim_a){ tim_a=0.5*sek; stan_a2 = 16;}
  168. break;
  169. case 16: SWIATLA=0; DZWIEK=0;
  170. if(!stan_a) {stan_a2=1;}
  171. else if (!tim_a){ tim_a=sek; stan_a2 = 2;}
  172.  
  173. break;
  174. }
  175.  
  176. L3 = SWIATLA;
  177. L4 = DZWIEK;
  178.  
  179. sprintf(buf,"a=%db=%dc=%dd=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
  180. LCD_xy(1,1); LCD_puts(buf);
  181. sprintf(buf,"A=%dG=%dG3=%dW=%d ",(int)L1,(int)GLOSNOSC,(int)L3,(int)L4);
  182. LCD_xy(1,2); LCD_puts(buf);
  183. }
  184.  
  185. void int_T0(void) // Przerwanie od T0/T1/T2 wywoływane tIntr [ms]
  186. {
  187. if(tim_a) --tim_a;
  188. if(tim_g1) --tim_g1;
  189. if(tim_g2) --tim_g2;
  190. if(tim_g3) --tim_g3;
  191. if(tim_g4) --tim_g4;
  192.  
  193. }
  194.  
  195. void WykresyPC() // Opisy/wartości wykresów i zmiennych pomocniczych
  196. {
  197. aNazwa[0]="licz1"; aWykres[0]= (float)licz1;
  198. bNazwa[8]="tim1!=0"; bWykres[8]= tim1!=0;
  199. bNazwa[0]="a";
  200. bNazwa[1]="b";bNazwa[2]="c";bNazwa[3]="d";
  201. bNazwa[4]="G1";
  202. bNazwa[5]="G2";
  203. bNazwa[6]="G3";
  204. bNazwa[7]="W";
  205.  
  206.  
  207. iNazwa[0]="stan_g"; iZmienna[0]=stan_g;
  208. iNazwa[1]="tim_g1"; iZmienna[1]= tim_g1;
  209. iNazwa[2]="tim_g2"; iZmienna[2]= tim_g2;
  210. iNazwa[3]="tim_g3"; iZmienna[3]= tim_g3;
  211. iNazwa[4]="tim_g4"; iZmienna[4]= tim_g4;
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement