SHOW:
|
|
- or go back to the newest paste.
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 | #include <conio.h> | |
7 | ||
8 | // --- Makrodefinicje dla obiektu X --- | |
9 | #define T X8 | |
10 | #define Z1 Y1 | |
11 | #define Z2 Y2 | |
12 | #define Z3 Y3 | |
13 | #define Z4 Y4 | |
14 | #define Z5 Y5 | |
15 | #define M Y6 | |
16 | #define G1 Y7 | |
17 | ||
18 | // --- Zmienne użytkownika --- | |
19 | int timsec = 0; | |
20 | int licz=0; // Licznik przerwań | |
21 | ||
22 | //TIMERY | |
23 | char counterBeeps, counterTimer = 0; | |
24 | int timTime = 3000; | |
25 | ||
26 | //ZMIENNE ODPOWIEDZIALNE ZA OTWARCIE/ZAMKNIECIE DRZWICZEK | |
27 | char door = 0, workMode = 1, pause = 0; | |
28 | char work = 0; | |
29 | ||
30 | //ZMIENNE ODPOWIEDZIALNE ZA CZAS I TRYBY | |
31 | char helpmodevar = 1; | |
32 | char chosenMode = 1; | |
33 | char viewingChosenMode = 1; | |
34 | char counterViewingChosenMode; | |
35 | char timeMode = 1; | |
36 | char timeViewMode = 1; | |
37 | char viewingTime = 1; | |
38 | char timeShowingMode = 1; | |
39 | char counterTimerBeeps; | |
40 | ||
41 | //ZMIENNE ODP ZA WYSWIETLANIE NAPISOW | |
42 | const char *text0 = "DOOR"; | |
43 | const char *text1 = "FROZEN"; | |
44 | const char *text2 = "WARMING"; | |
45 | const char *text3 = "GRILL"; | |
46 | const char *text4 = "BOILING"; | |
47 | const char *text5 = "SERVICE"; | |
48 | const char *text; | |
49 | const char *p = "NO"; | |
50 | ||
51 | ||
52 | //ZMIENNE ODPOWIEDZIALNE ZA STEROWANIE MOCA | |
53 | int powerMode = 1; | |
54 | char timPower, power1, power0; | |
55 | int power = 0; | |
56 | char powerAdjusting = 1; | |
57 | ||
58 | char timeshowing2 = 1; | |
59 | ||
60 | void prolog(void) | |
61 | { | |
62 | L1=L2=L3=L4=L5=0; | |
63 | } | |
64 | ||
65 | void oblicz(void) | |
66 | { | |
67 | ||
68 | pK1=aK1; pK2=aK2; pK3=aK3; pK4=aK4; | |
69 | pK5=aK5; pK6=aK6; pK7=aK7; pK8=aK8; | |
70 | ||
71 | power1 = (int)(power*25)/1000; | |
72 | power0 = 5 - power1/1000; | |
73 | ||
74 | ||
75 | //OTWARCIE/ZAMKNIECIE DRZWICZEK | |
76 | if(!work && !door && pK1) {door = 1; L1=1; | |
77 | viewingChosenMode=0; timeMode=0; workMode = 0;} | |
78 | else if(!work && door && pK1 && L1 == 1) {door = 0; L1=0; | |
79 | viewingChosenMode=1; timeMode=1; powerMode=1; workMode = helpmodevar; } | |
80 | ||
81 | ||
82 | //TRYB PRACY MIKROFALOWKI | |
83 | //ODMRAZANIE | |
84 | //GRZANIE | |
85 | //GRILLOWANIE | |
86 | //GOTOWANIE | |
87 | //CZYSZCZENIE SPRZĘTU | |
88 | if(!work) | |
89 | { | |
90 | switch(chosenMode) | |
91 | { | |
92 | case 1: | |
93 | { | |
94 | if(pK2 && door == 0 && workMode >=1 && workMode <=5) chosenMode = 2; | |
95 | } | |
96 | break; | |
97 | case 2: | |
98 | { | |
99 | if(!pK2 && door == 0 && workMode <=5) | |
100 | { | |
101 | chosenMode = 1; | |
102 | workMode++; | |
103 | helpmodevar = workMode; | |
104 | if(workMode > 5) {workMode = 1; helpmodevar = 1;} | |
105 | } | |
106 | ||
107 | } | |
108 | break; | |
109 | } | |
110 | } | |
111 | ||
112 | //NAPISY | |
113 | if(workMode == 0)text = text0; | |
114 | else if(workMode == 1)text = text1; | |
115 | else if (workMode == 2)text = text2; | |
116 | else if (workMode == 3)text = text3; | |
117 | else if (workMode == 4)text = text4; | |
118 | else if (workMode == 5)text = text5; | |
119 | ||
120 | //WYSWIETLANIE WYBRANEGO TRYBU PRACY MIKROFALOWKI | |
121 | switch(viewingChosenMode) | |
122 | { | |
123 | case 0: L2=0; | |
124 | break; | |
125 | case 1: | |
126 | { | |
127 | L2 = 0; | |
128 | counterViewingChosenMode = workMode; | |
129 | if(counterViewingChosenMode) | |
130 | { | |
131 | counterBeeps = 2; | |
132 | viewingChosenMode = 2; | |
133 | } | |
134 | else L2 = 1; | |
135 | } | |
136 | break; | |
137 | case 2: | |
138 | { | |
139 | L2 = 1; | |
140 | if(!counterBeeps && counterViewingChosenMode > 1) | |
141 | {viewingChosenMode = 3; counterBeeps = 2; | |
142 | counterViewingChosenMode--;} | |
143 | else if(!counterBeeps && counterViewingChosenMode == 1) | |
144 | {viewingChosenMode = 3; counterBeeps = 15; | |
145 | counterViewingChosenMode--;} | |
146 | } | |
147 | break; | |
148 | case 3: | |
149 | { | |
150 | L2 = 0; | |
151 | if(!counterBeeps && counterViewingChosenMode) | |
152 | {viewingChosenMode = 2; counterBeeps = 2;} | |
153 | else if(!counterBeeps && !counterViewingChosenMode) | |
154 | viewingChosenMode = 1; | |
155 | } | |
156 | break; | |
157 | } | |
158 | ||
159 | //USTAWIENIA CZASU | |
160 | switch(timeMode) | |
161 | { | |
162 | case 1: | |
163 | if(aK6 && timTime>0) {timTime=timTime-10;} | |
164 | else if(aK6 && timTime==0); | |
165 | else if(aK7 && timTime<3000) {timTime=timTime+10;} | |
166 | else if(aK7 && timTime==3000); | |
167 | break; | |
168 | } | |
169 | ||
170 | //USTAWIENIE SYGNALIZACJI DIOD DLA CZASU | |
171 | switch(timeViewMode) | |
172 | { | |
173 | case 1: | |
174 | { | |
175 | if(pK6 && door == 0) {timeViewMode = 2; L6=1;} | |
176 | else if(pK7 && door == 0) {timeViewMode = 3; L7=1;} | |
177 | } | |
178 | break; | |
179 | case 2: | |
180 | { | |
181 | if(!pK6 && work == 0) | |
182 | { | |
183 | timeViewMode = 1; | |
184 | L6=0; | |
185 | } | |
186 | else if(work == 1) L6=1; | |
187 | } | |
188 | break; | |
189 | case 3: | |
190 | { | |
191 | if(!pK7 && work == 0) | |
192 | { | |
193 | timeViewMode = 1; | |
194 | L7=0; | |
195 | } | |
196 | else if(work == 1) L7=1; | |
197 | } | |
198 | break; | |
199 | } | |
200 | ||
201 | ||
202 | //ZMIANA MOCY MIKROFALOWKI | |
203 | ||
204 | switch(powerAdjusting) | |
205 | { | |
206 | case 1: | |
207 | { | |
208 | if(pK4) powerAdjusting = 2; | |
209 | else if(pK3) powerAdjusting = 3; | |
210 | } | |
211 | break; | |
212 | case 2: | |
213 | { | |
214 | if(!pK4 && L5 == 0) | |
215 | { | |
216 | powerAdjusting = 1; | |
217 | power+=100.00; | |
218 | if(power>1000) power = 0; | |
219 | } | |
220 | } | |
221 | break; | |
222 | case 3: | |
223 | { | |
224 | if(!pK3 && L5 == 0) | |
225 | { | |
226 | powerAdjusting = 1; | |
227 | power-=100.00; | |
228 | if(power<0) power = 0; | |
229 | } | |
230 | } | |
231 | break; | |
232 | } | |
233 | ||
234 | // USTAWIENIE MOCY | |
235 | // WSPOLCZYNNIK WYPELNIENIA | |
236 | switch(powerMode) | |
237 | { | |
238 | case 1: | |
239 | { | |
240 | L4 = 0; L3=0; | |
241 | timPower = power1; | |
242 | if(power) powerMode = 2; | |
243 | else powerMode = 4; | |
244 | } | |
245 | break; | |
246 | case 2: | |
247 | { | |
248 | L4 = 1; L3 = 1; | |
249 | if(!timPower && power < 1000.00) | |
250 | {powerMode = 3; timPower = power0;} | |
251 | else if(!power) powerMode = 4; | |
252 | } | |
253 | break; | |
254 | case 3: | |
255 | { | |
256 | L4 = 0; L3 = 0; | |
257 | if(!timPower && power > 0) | |
258 | {powerMode = 2; timPower = power1;} | |
259 | else if(!power) powerMode = 5; | |
260 | } | |
261 | break; | |
262 | case 4: | |
263 | { | |
264 | L4 = 0; L3 = 0; | |
265 | if(power) {powerMode = 3; timPower = power0;} | |
266 | else powerMode = 5; | |
267 | } | |
268 | break; | |
269 | case 5: | |
270 | { | |
271 | L4 = 1; L3 = 1; | |
272 | if(power) {powerMode = 3; timPower = power0;} | |
273 | else powerMode = 4; | |
274 | } | |
275 | break; | |
276 | } | |
277 | ||
278 | //PRACA MIKROFALOWKI | |
279 | if(door == 0 && pK5 && work==0 && timTime > 0 && power != 0) | |
280 | {work=1; door = 0; | |
281 | timeMode=0; p="ON"; L5=1; L6=1; L7=1;} | |
282 | else if( pK5 && work==1) | |
283 | {L5 = 0; work=0; viewingChosenMode=1; timeMode=1; | |
284 | powerMode=1; p="P"; L6=0; L7=0;} | |
285 | else if( timTime == 0 && work==1) | |
286 | {L5 = 0; work=0; viewingChosenMode=1; timeMode=1; | |
287 | powerMode=1; power=0; workMode=1; p="NO"; L6=0; L7=0;} | |
288 | ||
289 | ||
290 | if(counterBeeps) --counterBeeps; | |
291 | if(timTime && work) --timTime; | |
292 | if(timPower) --timPower; | |
293 | ||
294 | sprintf(buf,"Time:%d Power:%d ", | |
295 | (int)timTime/10, (int)power); | |
296 | LCD_xy(1,1); LCD_puts(buf); | |
297 | sprintf(buf,"Mode:0%d %s %s ", | |
298 | (int)workMode, text, p); | |
299 | LCD_xy(1,2); LCD_puts(buf); | |
300 | ||
301 | } | |
302 | ||
303 | ||
304 | void przerwanie(void) | |
305 | { | |
306 | } | |
307 | ||
308 | void komunikacja(void) | |
309 | {} | |
310 | ||
311 | #ifdef Symulator_PC | |
312 | void wykres(void) | |
313 | { | |
314 | aTab[0] = (int)(AI[0]/10.0); | |
315 | aTab[1] = (int)(AI[1]/5.0); | |
316 | aTab[2] = AI[7]; | |
317 | aTab[3] = (int)(licz/100.0); | |
318 | aTab[4] = AO[0]; | |
319 | aTab[5] = AO[7]; | |
320 | aTab[6] = -120; | |
321 | aTab[7] = 120; | |
322 | bTab[0] = (int)aK1; | |
323 | bTab[1] = (int)aK2; | |
324 | bTab[2] = (int)aK3; | |
325 | bTab[3] = (int)aK4; | |
326 | bTab[4] = (int)L1; | |
327 | bTab[5] = (int)L2; | |
328 | bTab[6] = (int)L3; | |
329 | bTab[7] = (int)L4; | |
330 | bTab[8] = (int)L5; | |
331 | bTab[9] = (int)L6; | |
332 | bTab[10] = (int)L7; | |
333 | //bTab[11] = 11; | |
334 | bTab[12] = 12; | |
335 | bTab[13] = 13; | |
336 | bTab[14] = 14; | |
337 | bTab[15] = 15; | |
338 | } | |
339 | #endif |