Advertisement
Hubert_M

Untitled

Apr 10th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.32 KB | None | 0 0
  1. /*************************************************************************/
  2. /* Program testowy dla obiektu X oprogamowania SPSym */
  3. /*************************************************************************/
  4. #include "spsym.h" // Pomocnicze funkcje i deklaracje
  5. #include <stdio.h> // Stadnardowe I/O
  6.  
  7. // --- Zmienne użytkownika ---
  8. int tim1 = 0,tim2 = 0, tim3 = 0, tim4 = 0, tim5 = 0,tim6 = 0, tim7 = 0,tim8 = 0, tim9 = 0, tim10 = 0; //Timery
  9.  
  10. int timeHigh, timeHighTemp; //Wypelnienie Glosnosc
  11.  
  12. int obecnyUtwor = 3;
  13. int licznik_1 = 1; //Licznik przy obecnym utworze
  14.  
  15. int miganieBazowa = 5; //Miganie przy przewijaniu
  16. int miganieBazowa2 = 10; //Miganie przy przewijaniu
  17.  
  18. char stan1=1, stan2 = 1, stan3 = 1, stan4 = 1, stan5 = 1, stan6 = 0;
  19.  
  20. int wlacznik = 0; //Sprawdzenie czy urzadzenie jest obecnie uruchomione
  21.  
  22. void prolog(void) // Inicjowanie programu (jednorazowo przy starcie)
  23. {
  24. L1=L2=L3=L4=L5=L6=L7=L8=0; // Zgaszenie L1..L4
  25. pK1=aK1; pK2=aK2; pK3=aK3;
  26. }
  27.  
  28. void oblicz(void) // Kod użytkownika wykonywany cyklicznie
  29. {
  30. //Wlacznik
  31. switch(stan1) {
  32. case 1:
  33. L1=L2=L3=0;
  34. if(aK1)stan1 = 2;
  35. break;
  36.  
  37. case 2:
  38. L1=L2=L3=0;
  39. wlacznik = 1;
  40. if(!aK1) {
  41. tim1 = 10;
  42. stan1 = 3;
  43. }
  44. break;
  45.  
  46. case 3:
  47. L1 = 1;
  48. if(aK1){
  49. L1 = 0;
  50. stan1 = 7;
  51. }
  52. if(!tim1){
  53. tim1 = 10;
  54. stan1 = 4;
  55. }
  56.  
  57. break;
  58.  
  59. case 4:
  60. L1 = 0;
  61. if(aK1){
  62. L1 = 0;
  63. stan1 = 7;
  64. }
  65. if(!tim1){
  66. tim1 = 10;
  67. stan1 = 5;
  68. }
  69. break;
  70.  
  71. case 5:
  72. L1 = 1;
  73. if(aK1){
  74. L1 = 0;
  75. stan1 = 7;
  76. }
  77. if(!tim1) stan1 = 6;
  78. break;
  79.  
  80. case 6:
  81. L1 = 0;
  82. if(aK1) stan1 = 7;
  83. break;
  84.  
  85. case 7:
  86. wlacznik = 0;
  87. //Zatrzymanie pracy urządzenia
  88. stan2=stan3=stan4=stan5=stan6=1;
  89. L2=L3=L4=L5=L6=L7=L8=0;
  90. if(!aK1){
  91. tim1 = 10;
  92. stan1 = 8;
  93. }
  94. break;
  95.  
  96. case 8:
  97. L1 = 1;
  98. if(!tim1) stan1 = 1;
  99. if(aK1) stan1 = 2;
  100. break;
  101. }
  102. //Warunek
  103. if(wlacznik){
  104.  
  105. //PLAY/STOP
  106. switch(stan2){
  107. case 1:
  108. L2 = 0;
  109. if(aK2){
  110. stan2 = 2;
  111. }
  112. break;
  113.  
  114. case 2:
  115. if(!tim2) {
  116. if (!L2) tim2=10;
  117. else tim2=20;
  118. L2=!L2;
  119. }
  120. if(aK2 && !pK2) stan2 = 1;
  121. break;
  122. }
  123.  
  124.  
  125. //Obecny utwor
  126. switch(stan3){
  127.  
  128. case 1:
  129. L5 = 0;
  130. if(licznik_1 <= obecnyUtwor){
  131. tim3 = 5;
  132. stan3 = 2;
  133. }
  134. else{
  135. tim3 = 30;
  136. stan3 = 3;
  137. }
  138. break;
  139.  
  140. case 2:
  141. L5 = 1;
  142. if(!tim3) {
  143. stan3 = 1;
  144. licznik_1 ++;
  145. }
  146. break;
  147.  
  148. case 3:
  149. L5 = 0;
  150. if(!tim3) {
  151. licznik_1 = 1;
  152. stan3 = 1;
  153. }
  154. }
  155.  
  156. //Poprzedni/Przewijanie
  157. if(!aK4){
  158. switch(stan4) {
  159. case 1:
  160. L3 = 0;
  161. miganieBazowa = 10;
  162. if(aK3){
  163. tim4 = 30;
  164. stan4 = 2;
  165. }
  166. break;
  167.  
  168. case 2:
  169. L3 = 1;
  170. if(!aK3) {
  171. if(obecnyUtwor == 1){
  172. obecnyUtwor = 5;
  173. }
  174. else if(obecnyUtwor > 1){
  175. obecnyUtwor--;
  176. }
  177. stan4 = 1;
  178.  
  179. }
  180.  
  181. if(!tim4) {
  182. stan4 = 3;
  183. tim6=miganieBazowa/2;
  184. }
  185. break;
  186.  
  187. case 3:
  188. L3 = 0;
  189. if(!aK3) stan4 = 1;
  190.  
  191. //Zmniejszanie czestotliwosci
  192. if(!tim6){
  193. tim7 = miganieBazowa;
  194. stan4 = 4;
  195. }
  196. break;
  197.  
  198. case 4:
  199. L3 = 1;
  200. if(!aK3) stan4 = 1;
  201. if(!tim7){
  202. if(miganieBazowa <= 20 ) miganieBazowa = miganieBazowa + 2;
  203. tim6 = miganieBazowa/2;
  204. stan4 = 3;
  205. }
  206. break;
  207. }
  208. }
  209.  
  210. //Pominiecie/Przewijanie
  211. if(!aK3){
  212. switch(stan5){
  213. case 1:
  214. L4 = 0;
  215. if(aK4){
  216. tim5 = 30;
  217. stan5 = 2;
  218. }
  219. break;
  220.  
  221. case 2:
  222. L4 = 1;
  223. if(!aK4){
  224. if(obecnyUtwor == 5)
  225. obecnyUtwor = 1;
  226.  
  227. else if(obecnyUtwor < 5)
  228. obecnyUtwor++;
  229.  
  230. stan5 = 1;
  231. }
  232. if(!tim5) {
  233. stan5 = 3;
  234. tim8 = miganieBazowa2/2;
  235. }
  236. break;
  237.  
  238. case 3:
  239. L4 = 0;
  240. if(!aK4) stan5 = 1;
  241. if(!tim8){
  242. tim9 = miganieBazowa2;
  243. stan5 = 4;
  244. }
  245. //Zwiekszanie czestotliwosci
  246. break;
  247.  
  248. case 4:
  249. L4 = 1;
  250. if(!aK4) stan5 = 1;
  251. if(!tim9){
  252. if(miganieBazowa2 >= 4 ) miganieBazowa2 = miganieBazowa2 - 2;
  253. if(miganieBazowa2 <4) miganieBazowa2 =4;
  254. //else miganie
  255. tim8 = miganieBazowa2/2;
  256. stan5 = 3;
  257. }
  258. break;
  259. }
  260. }
  261.  
  262.  
  263.  
  264. //Podgłaśnianie
  265.  
  266. switch(stan6){
  267. case 0:
  268. stan6=1; tim10=50; timeHigh=25; timeHighTemp=0;
  269. case 1:
  270. L6=1;
  271. timeHighTemp++;
  272. L7=0;
  273. if(timeHigh) --timeHigh;
  274. if(!aK5&&!timeHigh){ stan6=2;timeHigh=timeHighTemp;timeHighTemp=0;}
  275. if(aK5&&!tim10&&!timeHigh){ stan6=4; tim10=10; timeHigh=timeHighTemp;timeHighTemp=0;}
  276. break;
  277. case 2:
  278. L6=0;
  279. L7=0;
  280. if(!tim10){ stan6=3; tim10=20;}
  281. if(aK5){ stan6=1; tim10=50; timeHigh=0; timeHighTemp=0;}
  282. break;
  283. case 3:
  284. L6=0;
  285. L7=1;
  286. if(!tim10){ stan6=1; tim10=50;}
  287. if(aK5){ stan6=1; tim10=50; timeHigh=0; timeHighTemp=0;}
  288. break;
  289. case 4:
  290. L6=0;
  291. L7=0;
  292. if(!aK5) stan6=1;
  293. }
  294.  
  295.  
  296.  
  297.  
  298. }//Urzadzenie wlaczone
  299.  
  300. if(tim1)--tim1;
  301. if(tim2) --tim2;
  302. if(tim3) --tim3;
  303. if(tim4) --tim4;
  304. if(tim5) --tim5;
  305. if(tim6) --tim6;
  306. if(tim7) --tim7;
  307.  
  308. if(tim8) --tim8;
  309. if(tim9) --tim9;
  310.  
  311. if(tim10) --tim10;
  312.  
  313.  
  314.  
  315.  
  316. sprintf(buf,"K1=%dK2=%dK3=%dK4=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
  317. LCD_xy(1,1); LCD_puts(buf);
  318. sprintf(buf,"L1=%dL2=%dL3=%dL4=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
  319. LCD_xy(1,2); LCD_puts(buf);
  320.  
  321. pK1=aK1; pK2=aK2; pK3=aK3; pK4=aK4;
  322. pK5=aK5; pK6=aK6; pK7=aK7; pK8=aK8;
  323.  
  324. }
  325.  
  326. void przerwanie(void) // Obsługs przerwania od układu czasowo-licznikowego
  327. {}
  328.  
  329. void komunikacja(void) // Obsługa komunikacji szeregowej
  330. {}
  331.  
  332. #ifdef Symulator_PC
  333. void wykres(void) // Dane do tabeli i wykresu (dot. symulacji obiektu)
  334. {
  335. bTab[0] = (int)L1;
  336. bTab[1] = (int)L2;
  337. bTab[2] = (int)L3;
  338. bTab[3] = (int)L4;
  339. bTab[4] = (int)L5;
  340.  
  341. bTab[5] = (int)L6;
  342. bTab[6] = (int)L7;
  343. bTab[7] = (int)aK1;
  344. bTab[8] = (int)aK2;
  345. bTab[9] = (int)aK3; // LAMPA
  346. bTab[10] = (int)aK4;
  347. bTab[11] = (int)aK5;
  348. }
  349. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement