Advertisement
Guest User

Untitled

a guest
Apr 26th, 2015
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.22 KB | None | 0 0
  1. ////////////////////////////////////////////////////////////////////////////////////
  2. // Uwaga! Przed kompilacj№ programu dopasowaж doі№czany plik #inlude "Schemat?.h" //
  3. ////////////////////////////////////////////////////////////////////////////////////
  4.  
  5. // Program testowy do obiektu "SchematA"
  6. /*
  7. void test_A(void)
  8. {
  9. Z1 = aK1 ? 1 : 0; // Otwуrz Z1 jeњli naciњniкty K1
  10. Z2 = aK2 ? 1 : 0; // Otwуrz Z2 jeњli naciњniкty K2
  11. Z3 = aK3 ? 1 : 0; // Otwуrz Z3 jeњli naciњniкty K3
  12. Z4 = aK4 ? 1 : 0; // Otwуrz Z4 jeњli naciњniкty K4
  13. Z5 = 0x1 ? 1 : 0; // Otwуrz Z5
  14. M = 0x1 ? 1 : 0; // Wі№cz M (mieszanie)
  15. G = 0x0 ? 1 : 0; // Wyі№cz G (grzanie)
  16.  
  17. sprintf(buf,"K1=%dK2=%dK3=%dK4=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
  18. LCD_xy(1,1); LCD_puts(buf);
  19. sprintf(buf,"L1=%dL2=%dL3=%dL4=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
  20. LCD_xy(1,2); LCD_puts(buf);
  21. }
  22. */
  23. ////////////////////////////////////////////////////////////////////////////////////
  24. /*
  25. // Program testowy do obiektu "SchematB"
  26. void test_B(void)
  27. {
  28. Z1 = aK1 ? 1 : 0; // Otwуrz Z1 jeњli naciњniкty K1
  29. Z2 = aK2 ? 1 : 0; // Otwуrz Z2 jeњli naciњniкty K2
  30. Z3 = aK3 ? 1 : 0; // Otwуrz Z3 jeњli naciњniкty K3
  31. Z4 = aK4 ? 1 : 0; // Otwуrz Z4 jeњli naciњniкty K4
  32. Z5 = 0x1 ? 1 : 0; // Otwуrz Z5
  33. Z6 = 0x1 ? 1 : 0; // Otwуrz Z6
  34. Z7 = 0x1 ? 1 : 0; // Otwуrz Z7
  35. Z8 = 0x1 ? 1 : 0; // Otwуrz Z8
  36.  
  37. sprintf(buf,"K1=%dK2=%dK3=%dK4=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
  38. LCD_xy(1,1); LCD_puts(buf);
  39. sprintf(buf,"L1=%dL2=%dL3=%dL4=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
  40. LCD_xy(1,2); LCD_puts(buf);
  41. }
  42. */
  43. ////////////////////////////////////////////////////////////////////////////////////
  44. /*
  45. // Program testowy do obiektu "SchematC"
  46. void test_C(void)
  47. {
  48. Z1 = aK1 ? 1 : 0; // Otwуrz Z1 jeњli naciњniкty K1
  49. Z2 = aK2 ? 1 : 0; // Otwуrz Z2 jeњli naciњniкty K2
  50. Z3 = aK3 ? 1 : 0; // Otwуrz Z3 jeњli naciњniкty K3
  51. Z4 = aK4 ? 1 : 0; // Otwуrz Z4 jeњli naciњniкty K4
  52. Z5 = 0x1 ? 1 : 0; // Otwуrz Z5
  53. M = 0x1 ? 1 : 0; // Wі№cz M (mieszanie)
  54. G = 0x0 ? 1 : 0; // Wyі№cz G (grzanie)
  55.  
  56. sprintf(buf,"K1=%dK2=%dK3=%dK4=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
  57. LCD_xy(1,1); LCD_puts(buf);
  58. sprintf(buf,"L1=%dL2=%dL3=%dL4=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
  59. LCD_xy(1,2); LCD_puts(buf);
  60. }
  61. */
  62. //////////////////////////////////////////////////////////////////////////////////
  63.  
  64. // Tryby pracy
  65.  
  66. enum TRYB_PRACY{ Czasowy, Zliczajacy, Przyciskowy };
  67. TRYB_PRACY tryb = Czasowy;
  68. TRYB_PRACY nowyTryb = Czasowy;
  69.  
  70. // Tryb czasowy ---------------
  71.  
  72. int T1 = 100;
  73. int T2 = 200;
  74. int TPrze = 40;
  75. int TPrzeLCD = TPrze; // używamy do zmiany czasu Tprze przy obsludze LCD
  76.  
  77. int const Twait = 130;
  78.  
  79. int tim1 = T1;
  80. int tim2 = TPrze;
  81.  
  82. char stanCzasowy = 1;
  83.  
  84. // Tryb zliczający ----------------
  85.  
  86. char stanZliczajacy = 1;
  87. char lauta = 3;
  88. char pauta = 5;
  89.  
  90. char licznik, i;
  91.  
  92. int timZliczajacy;
  93.  
  94. char pX1, pX2, pX3, pX4;
  95.  
  96. // Tryb przyciskowy -------------
  97.  
  98. char KL1, KL2, stanPrzyciskowy = 1;
  99.  
  100. int timPrzyciskowy;
  101.  
  102. // Zmienne LCD
  103.  
  104. char _pK1, _pK2, _pK3, _pK4;
  105. char stanLCD = 1, pracuje;
  106.  
  107. // Funckje
  108.  
  109. bool Zmieniony()
  110. {
  111. return tryb == nowyTryb;
  112. }
  113.  
  114. void mogeZmienic()
  115. {
  116. if (!Zmieniony())
  117. tryb = nowyTryb;
  118. }
  119.  
  120. void TrybCzasowy()
  121. {
  122. switch (stanCzasowy)
  123. {
  124. case 1:
  125. Z1 = 1; Z2 = 0;
  126.  
  127. if (X2) { TPrze = TPrzeLCD; tim2 = TPrze; }
  128.  
  129. if (!tim1) { tim1 = Twait; stanCzasowy = 2; }
  130. else if (!tim2) { tim1 = Twait - TPrze; stanCzasowy = 2; }
  131. break;
  132. case 2:
  133. Z1 = 0; Z2 = 0;
  134. if (!tim1) { tim1 = T2; tim2 = TPrze; mogeZmienic(), stanCzasowy = 3; }
  135. break;
  136. case 3:
  137. Z1 = 0; Z2 = 1;
  138.  
  139. if (X1) { TPrze = TPrzeLCD; tim2 = TPrze; }
  140.  
  141. if (!tim1) { tim1 = Twait; stanCzasowy = 4; }
  142. else if (!tim2) { tim1 = Twait - TPrze; stanCzasowy = 4; }
  143. break;
  144. case 4:
  145. Z1 = 0; Z2 = 0;
  146. if (!tim1) { tim1 = T1; tim2 = TPrze; mogeZmienic(), stanCzasowy = 1; }
  147. break;
  148. }
  149.  
  150. if (tim1) --tim1;
  151. if (tim2) --tim2;
  152. }
  153.  
  154. void trybPrzyciskowy(void)
  155. {
  156. switch (stanPrzyciskowy)
  157. {
  158. case 1:
  159. mogeZmienic();
  160.  
  161. Z1 = 0; Z2 = 0;
  162. if (KL1) stanPrzyciskowy = 2;
  163. else if (KL2) stanPrzyciskowy = 4;
  164. break;
  165. case 2:
  166. Z1 = 1; Z2 = 0;
  167. if (!KL1 && !X2) { timPrzyciskowy = 150; stanPrzyciskowy = 3; }
  168. else if (!KL1 && X2) { stanPrzyciskowy = 6; }
  169. break;
  170. case 3:
  171. Z1 = 0; Z2 = 0;
  172.  
  173. if (KL1) stanPrzyciskowy = 2;
  174. else if (!timPrzyciskowy) stanPrzyciskowy = 1;
  175. break;
  176. case 4:
  177. Z1 = 0; Z2 = 1;
  178. if (!KL2 && !X1) { timPrzyciskowy = 150; stanPrzyciskowy = 5; }
  179. else if (!KL2 && X1) { stanPrzyciskowy = 7; }
  180. break;
  181. case 5:
  182. Z1 = 0; Z2 = 0;
  183.  
  184. if (KL2) stanPrzyciskowy = 4;
  185. else if (!timPrzyciskowy) stanPrzyciskowy = 1;
  186. break;
  187. case 6:
  188. Z1 = 1; Z2 = 0;
  189. if (!X2) { timPrzyciskowy = 150; stanPrzyciskowy = 3; }
  190. break;
  191. case 7:
  192. Z1 = 0; Z2 = 1;
  193. if (!X1) { timPrzyciskowy = 150; stanPrzyciskowy = 5; }
  194. break;
  195. }
  196.  
  197. if (timPrzyciskowy) --timPrzyciskowy;
  198. }
  199.  
  200. void trybZliczajacy(void)
  201. {
  202. switch (stanZliczajacy)
  203. {
  204. case 1:
  205. Z1 = 1; Z2 = 0;
  206. if (!X2 && pX2) ++licznik, ++i;
  207. if (!X4 && pX4) --licznik;
  208.  
  209. if (i == lauta)
  210. {
  211. i = 0; stanZliczajacy = 2;
  212. }
  213. break;
  214. case 2:
  215. Z1 = 0; Z2 = 0;
  216. if (!X4 && pX4) --licznik;
  217.  
  218. if (!licznik) { timZliczajacy = 40; stanZliczajacy = 3; }
  219. break;
  220. case 3:
  221. Z1 = 0; Z2 = 0;
  222. if (!timZliczajacy) mogeZmienic(), stanZliczajacy = 4;
  223. break;
  224. case 4:
  225. Z1 = 0; Z2 = 1;
  226. if (!X1 && pX1) ++licznik, ++i;
  227. if (!X3 && pX3) --licznik;
  228.  
  229. if (i == pauta)
  230. {
  231. i = 0; stanZliczajacy = 5;
  232. }
  233. break;
  234. case 5:
  235. Z1 = 0; Z2 = 0;
  236. if (!X3 && pX3) --licznik;
  237.  
  238. if (!licznik) { timZliczajacy = 40; stanZliczajacy = 6; }
  239. break;
  240. case 6:
  241. Z1 = 0; Z2 = 0;
  242. if (!timZliczajacy) mogeZmienic(), stanZliczajacy = 1;
  243. break;
  244. }
  245.  
  246. if (timZliczajacy) --timZliczajacy;
  247.  
  248. pX1 = X1;
  249. pX2 = X2;
  250. pX3 = X3;
  251. pX4 = X4;
  252. }
  253.  
  254. void test_D(void)
  255. {
  256. if (tryb == Czasowy)
  257. {
  258. TrybCzasowy();
  259. }
  260. else if (tryb == Zliczajacy)
  261. {
  262. trybZliczajacy();
  263. }
  264. else if (tryb == Przyciskowy)
  265. {
  266. trybPrzyciskowy();
  267. }
  268.  
  269. pracuje = Zmieniony() ? ' ' : '*';
  270.  
  271. switch (stanLCD)
  272. {
  273. case 1:
  274. sprintf(buf, "Tryb 1(czas.)-1%c", pracuje);
  275. LCD_xy(1, 1); LCD_puts(buf);
  276. sprintf(buf, "T1=%.0fs ", (float)(T1/10));
  277. LCD_xy(1, 2); LCD_puts(buf);
  278.  
  279. if (aK1) ++T1; if (T1 > 500) T1 = 500;
  280. if (aK2) --T1; if (T1 < 50) T1 = 50;
  281.  
  282. if (aK3 && !_pK3) stanLCD = 2;
  283. if (aK4 && !_pK4) { stanLCD = 4; nowyTryb = Zliczajacy; }
  284. break;
  285. case 2:
  286. sprintf(buf, "Tryb 1(czas.)-2%c", pracuje);
  287. LCD_xy(1, 1); LCD_puts(buf);
  288. sprintf(buf, "T2=%.0fs ", (float)(T2/10));
  289. LCD_xy(1, 2); LCD_puts(buf);
  290.  
  291. if (aK1) ++T2; if (T2 > 500) T2 = 500;
  292. if (aK2) --T2; if (T2 < 50) T2 = 50;
  293.  
  294. if (aK3 && !_pK3) stanLCD = 3;
  295. if (aK4 && !_pK4) { stanLCD = 4; nowyTryb = Zliczajacy; }
  296. break;
  297. case 3:
  298. sprintf(buf, "Tryb 1(czas.)-3%c", pracuje);
  299. LCD_xy(1, 1); LCD_puts(buf);
  300. sprintf(buf, "TPrze=%.0fs ", (float)(TPrzeLCD / 10));
  301. LCD_xy(1, 2); LCD_puts(buf);
  302.  
  303. if (aK1) ++TPrzeLCD; if (TPrzeLCD > 100) TPrzeLCD = 100;
  304. if (aK2) --TPrzeLCD; if (TPrzeLCD < 20) TPrzeLCD = 20;
  305.  
  306. if (aK3 && !_pK3) stanLCD = 1;
  307. if (aK4 && !_pK4) { stanLCD = 4; nowyTryb = Zliczajacy; }
  308. break;
  309.  
  310. case 4:
  311. sprintf(buf, "Tryb 2(zli.)-1 %c", pracuje);
  312. LCD_xy(1, 1); LCD_puts(buf);
  313. sprintf(buf, "LA=%d ", (int)lauta);
  314. LCD_xy(1, 2); LCD_puts(buf);
  315.  
  316. if (aK1) ++lauta; if (lauta > 10) lauta = 10;
  317. if (aK2) --lauta; if (lauta < 1) lauta = 1;
  318.  
  319. if (aK3 && !_pK3) stanLCD = 5;
  320. if (aK4 && !_pK4) { stanLCD = 6; nowyTryb = Przyciskowy; }
  321. break;
  322. case 5:
  323. sprintf(buf, "Tryb 2(zli.)-2 %c", pracuje);
  324. LCD_xy(1, 1); LCD_puts(buf);
  325. sprintf(buf, "PA=%d ", (int)pauta);
  326. LCD_xy(1, 2); LCD_puts(buf);
  327.  
  328. if (aK1) ++pauta; if (pauta > 10) pauta = 10;
  329. if (aK2) --pauta; if (pauta < 1) pauta = 1;
  330.  
  331. if (aK3 && !_pK3) stanLCD = 4;
  332. if (aK4 && !_pK4) { stanLCD = 6; nowyTryb = Przyciskowy; }
  333. break;
  334. case 6:
  335. sprintf(buf, "Tryb 3(przy.)-1%c", pracuje);
  336. LCD_xy(1, 1); LCD_puts(buf);
  337. sprintf(buf, " SL=%d SP=%d ", (int)Z1, (int)Z2);
  338. LCD_xy(1, 2); LCD_puts(buf);
  339.  
  340. KL1 = aK1;
  341. KL2 = aK2;
  342.  
  343. if (aK4 && !_pK4) { stanLCD = 1; nowyTryb = Czasowy; }
  344. break;
  345. }
  346.  
  347. _pK1 = aK1;
  348. _pK2 = aK2;
  349. _pK3 = aK3;
  350. _pK4 = aK4;
  351. }
  352.  
  353.  
  354. ////////////////////////////////////////////////////////////////////////////////////
  355. /*
  356. // Program testowy do obiektu "SchematE"
  357. void test_E(void)
  358. {
  359. Z1 = aK1 ? 1 : 0; // Otwуrz Z1 jeњli naciњniкty K1
  360. Z2 = aK2 ? 1 : 0; // Otwуrz Z2 jeњli naciњniкty K2
  361.  
  362. sprintf(buf,"K1=%dK2=%dK3=%dK4=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
  363. LCD_xy(1,1); LCD_puts(buf);
  364. sprintf(buf,"L1=%dL2=%dL3=%dL4=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
  365. LCD_xy(1,2); LCD_puts(buf);
  366. }
  367. */
  368. ////////////////////////////////////////////////////////////////////////////////////
  369. /*
  370. // Program testowy do obiektu "SchematF"
  371. char tryb = 1; // Stan sterownika (AUTO=1/MAN=0)
  372. double r=0.0, u=0.0, y=0.0, e=0.0, um=0;
  373.  
  374. void test_F(void)
  375. {
  376. y=(float)Y4/32767; // Odczyt przetwornika A/C
  377.  
  378. if(aK1&&!pK1) u=u>0?0:0.5; // Przeі№czanie trybu pracy regulatora
  379.  
  380. U1 = (int)(u*32767); // Wysіanie na przetwornik C/A
  381. R = (int)(r*32767); // Wysіanie na przetwornik C/A
  382.  
  383. sprintf(buf,"r=%4.2fu=%4.2fy=%4.2f ",r,u,y);
  384. LCD_xy(1,1); LCD_puts(buf);
  385. sprintf(buf,"%c: ",tryb?'A':'M');
  386. LCD_xy(1,2); LCD_puts(buf);
  387. }
  388. */
  389. ////////////////////////////////////////////////////////////////////////////////////
  390. /*
  391. // Program testowy do obiektu "SchematG"
  392. void test_G(void)
  393. {
  394. Z1 = Z2 = aK1 ? 1 : 0; // Wі№cz Z1 i Z2 jeњli naciњniкty K1
  395. Z3 = Z4 = aK2 ? 1 : 0; // Wі№cz Z3 i Z4 jeњli naciњniкty K2
  396. Z5 = Z6 = aK3 ? 1 : 0; // Wі№cz Z5 i Z6 jeњli naciњniкty K3
  397. Z7 = Z8 = aK4 ? 1 : 0; // Wі№cz Z7 i Z8 jeњli naciњniкty K4
  398.  
  399. sprintf(buf,"K1=%dK2=%dK3=%dK4=%d ",(int)aK1,(int)aK2,(int)aK3,(int)aK4);
  400. LCD_xy(1,1); LCD_puts(buf);
  401. sprintf(buf,"L1=%dL2=%dL3=%dL4=%d ",(int)L1,(int)L2,(int)L3,(int)L4);
  402. LCD_xy(1,2); LCD_puts(buf);
  403. }
  404. */
  405. ////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement