2023-03-23 17:00:05 +08:00

420 lines
15 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

C51 COMPILER V9.60.0.0 COMMON 03/23/2023 16:31:25 PAGE 1
C51 COMPILER V9.60.0.0, COMPILATION OF MODULE COMMON
OBJECT MODULE PLACED IN .\Objects\common.obj
COMPILER INVOKED BY: d:\Keil_v5\C51\BIN\C51.EXE mycode\common.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXT
-END PRINT(.\Listings\common.lst) TABS(2) OBJECT(.\Objects\common.obj)
line level source
1 #include "common.h"
2 #include "GPIO.h"
3 #include "tm1650.h"
4 #include "STDIO.H"
5 #include "EEPROM.h"
6 #include "timer.h"
7 u8 keyflag = 0;
8 u8 sunmode = 1;
9 u8 pog = 4;
10 u16 keytime = 0;
11 u8 keyloog = 0;
12 u8 speedmode1 = speedstart, speedmode2 = speedstart, speedmode3 = speedstart, speedmode4 = speedstart, sub
-division1 = substart, subdivision2 = substart, subdivision3 = substart, subdivision4 = substart;
13 u8 num[9] = 0;
14 static void key_add(u8 *speedmode, u8 *subdivision)
15 {
16 1 u8 key__time = 0;
17 1 if (keyloog)
18 1 key__time = 100;
19 1 else
20 1 key__time = 500;
21 1 switch (pog)
22 1 {
23 2 case 1:
24 2 break;
25 2 case 2:
26 2 if (keyflag == 0)
27 2 {
28 3 *speedmode += 1;
29 3 if (*speedmode >= speedmax)
30 3 *speedmode = speedmax;
31 3 keyflag = 1;
32 3 }
33 2 if (keytime > key__time)
34 2 {
35 3 *speedmode += 1;
36 3 keytime = 0;
37 3 keyloog = 1;
38 3 if (*speedmode >= speedmax)
39 3 *speedmode = speedmax;
40 3 }
41 2 break;
42 2 case 3:
43 2 if (keyflag == 0)
44 2 {
45 3 *subdivision += 1;
46 3 if (*subdivision >= subdivisionmax)
47 3 *subdivision = subdivisionmax;
48 3 keyflag = 1;
49 3 }
50 2 if (keytime > key__time)
51 2 {
52 3 *subdivision += 1;
53 3 keytime = 0;
C51 COMPILER V9.60.0.0 COMMON 03/23/2023 16:31:25 PAGE 2
54 3 keyloog = 1;
55 3 if (*subdivision >= subdivisionmax)
56 3 *subdivision = subdivisionmax;
57 3 }
58 2 break;
59 2 }
60 1 }
61
62 static void key_Redu(u8 *speedmode, u8 *subdivision)
63 {
64 1 u8 key__time = 0;
65 1 if (keyloog)
66 1 key__time = 100;
67 1 else
68 1 key__time = 500;
69 1 switch (pog)
70 1 {
71 2 case 1:
72 2 break;
73 2 case 2:
74 2 if (keyflag == 0)
75 2 {
76 3 *speedmode -= 1;
77 3 if (*speedmode <= speedmin)
78 3 *speedmode = speedmin;
79 3 keyflag = 1;
80 3 }
81 2 if (keytime > key__time)
82 2 {
83 3 *speedmode -= 1;
84 3 keytime = 0;
85 3 keyloog = 1;
86 3 if (*speedmode <= speedmin)
87 3 *speedmode = speedmin;
88 3 }
89 2 break;
90 2 case 3:
91 2 if (keyflag == 0)
92 2 {
93 3 if (*subdivision <= subdivisionmin)
94 3 *subdivision = subdivisionmin;
95 3 else
96 3 *subdivision -= 1;
97 3 keyflag = 1;
98 3 }
99 2 if (keytime > key__time)
100 2 {
101 3 keytime = 0;
102 3 keyloog = 1;
103 3 if (*subdivision <= subdivisionmin)
104 3 *subdivision = subdivisionmin;
105 3 else
106 3 *subdivision -= 1;
107 3 }
108 2 break;
109 2 }
110 1 }
111 void keyscan()
112 {
113 1 if (k1 == 0)
114 1 if (keyflag == 0)
115 1 {
C51 COMPILER V9.60.0.0 COMMON 03/23/2023 16:31:25 PAGE 3
116 2 timex = 400 * subdivision1;
117 2 DIR = 1;
118 2 sunmode = 1;
119 2 keyflag = 1;
120 2 setconfig();
121 2 }
122 1 if (k2 == 0)
123 1 if (keyflag == 0)
124 1 {
125 2 timex = 400 * subdivision2;
126 2 DIR = 0;
127 2 sunmode = 2;
128 2 keyflag = 1;
129 2 setconfig();
130 2 }
131 1 if (k3 == 0)
132 1 if (keyflag == 0)
133 1 {
134 2 timex = 800 <<subdivision3;
135 2 DIR = 1;
136 2 sunmode = 3;
137 2 keyflag = 1;
138 2 setconfig();
139 2 }
140 1 if (k4 == 0)
141 1 if (keyflag == 0)
142 1 {
143 2 timex = 0;
144 2 sunmode = 4;
145 2 keyflag = 1;
146 2 setconfig();
147 2 }
148 1 if (k5 == 0)
149 1 {
150 2 if (keyflag == 0)
151 2 {
152 3 switch (pog)
153 3 {
154 4 case 1:
155 4 pog = 2;
156 4 break;
157 4 case 2:
158 4 pog = 3;
159 4 break;
160 4 case 3:
161 4 pog = 4;
162 4 setconfig();
163 4 break;
164 4 case 4:
165 4 pog = 2;
166 4 break;
167 4 }
168 3 keyflag = 1;
169 3 }
170 2 }
171 1 if (k6 == 0)
172 1 {
173 2 switch (sunmode)
174 2 {
175 3 case 1:
176 3 key_add(&speedmode1, &subdivision1);
177 3 break;
C51 COMPILER V9.60.0.0 COMMON 03/23/2023 16:31:25 PAGE 4
178 3 case 2:
179 3 key_add(&speedmode2, &subdivision2);
180 3 break;
181 3 case 3:
182 3 key_add(&speedmode3, &subdivision3);
183 3 break;
184 3 case 4:
185 3 key_add(&speedmode4, &subdivision4);
186 3 break;
187 3 }
188 2 }
189 1 if (k7 == 0)
190 1 {
191 2 switch (sunmode)
192 2 {
193 3 case 1:
194 3 key_Redu(&speedmode1, &subdivision1);
195 3 break;
196 3 case 2:
197 3 key_Redu(&speedmode2, &subdivision2);
198 3 break;
199 3 case 3:
200 3 key_Redu(&speedmode3, &subdivision3);
201 3 break;
202 3 case 4:
203 3 key_Redu(&speedmode4, &subdivision4);
204 3 break;
205 3 }
206 2 }
207 1 if (k8 == 0)
208 1 {
209 2 if (keyflag == 0)
210 2 {
211 3 if (pog != 1)
212 3 pog = 1;
213 3 else
214 3 pog = 4;
215 3 setconfig();
216 3 keyflag = 1;
217 3 switch (sunmode)
218 3 {
219 4 case 1:
220 4 timex = 400 << subdivision1;
221 4 DIR = 1;
222 4 break;
223 4 case 2:
224 4 timex = 400 << subdivision2;
225 4 DIR = 0;
226 4 break;
227 4 case 3:
228 4 timex = 800 << subdivision3;
229 4 DIR = 1;
230 4 break;
231 4 case 4:
232 4 break;
233 4 }
234 3 }
235 2 }
236 1 if (k1 != 0 & k2 != 0 & k3 != 0 & k4 != 0 & k5 != 0 & k6 != 0 & k7 != 0 & k8 != 0)
237 1 {
238 2 keyflag = 0;
239 2 keyloog = 0;
C51 COMPILER V9.60.0.0 COMMON 03/23/2023 16:31:25 PAGE 5
240 2 }
241 1 }
242 static void dislittleplay(u8 speedmode, u16 subdivision)
243 {
244 1 switch (pog)
245 1 {
246 2 case 1:
247 2 TM1650_printpogrun(sunmode, displaydata);
248 2 break;
249 2 case 2:
250 2 TM1650_print_SMG1(speedmode);
251 2 break;
252 2 case 3:
253 2 TM1650_print_SMG2(subdivision);
254 2 break;
255 2 case 4:
256 2 TM1650_printpogstop(sunmode);
257 2 break;
258 2 }
259 1 }
260 void display()
261 {
262 1 switch (sunmode)
263 1 {
264 2 case 1:
265 2 dislittleplay(speedmode1, (u16)(1 << subdivision1));
266 2 break;
267 2 case 2:
268 2 dislittleplay(speedmode2, (u16)(1 << subdivision2));
269 2 break;
270 2 case 3:
271 2 dislittleplay(speedmode3, (u16)(1 << subdivision3));
272 2 break;
273 2 case 4:
274 2 dislittleplay(speedmode4, (u16)(1 << subdivision4));
275 2 break;
276 2 }
277 1 }
278 void shuju()
279 {
280 1
281 1 switch (sunmode)
282 1 {
283 2 case 1:
284 2 if (((u16)(speedmode1 * 20 * (1 << subdivision1) / 3)) < 400)
285 2 {
286 3 Timer0_12T();
287 3 T0_Load(65536UL - (MAIN_Fosc / ((u32)speedmode1 * 80 * (1 << subdivision1))));
288 3 }
289 2 else
290 2 {
291 3 Timer0_1T();
292 3 T0_Load(65536UL - (MAIN_Fosc / ((u32)speedmode1 * 20 * (1 << subdivision1) / 3)));
293 3 }
294 2 break;
295 2 case 2:
296 2 if ((u16)(speedmode2 * 20 * (1 << subdivision2) / 3) < 400)
297 2 {
298 3 Timer0_12T();
299 3 T0_Load(65536UL - (MAIN_Fosc / (u32)(speedmode2 * 80 * (1 << subdivision2))));
300 3 }
301 2 else
C51 COMPILER V9.60.0.0 COMMON 03/23/2023 16:31:25 PAGE 6
302 2 {
303 3 Timer0_1T();
304 3 T0_Load(65536UL - (MAIN_Fosc / (u32)(speedmode2 * 20 * (1 << subdivision2) / 3)));
305 3 }
306 2 break;
307 2 case 3:
308 2 if ((u16)(speedmode3 * 20 * (1 << subdivision3) / 3) < 400)
309 2 {
310 3 Timer0_12T();
311 3 T0_Load(65536UL - (MAIN_Fosc / (u32)(speedmode3 * 80 * (1 << subdivision3))));
312 3 }
313 2 else
314 2 {
315 3 Timer0_1T();
316 3 T0_Load(65536UL - (MAIN_Fosc / (u32)(speedmode3 * 20 * (1 << subdivision3) / 3)));
317 3 }
318 2 break;
319 2 case 4:
320 2 if ((u16)(speedmode4 * 20 * (1 << subdivision4) / 3) < 400)
321 2 {
322 3 Timer0_12T();
323 3 T0_Load(65536UL - (MAIN_Fosc / (u32)(speedmode4 * 80 * (1 << subdivision4))));
324 3 }
325 2 else
326 2 {
327 3 Timer0_1T();
328 3 T0_Load(65536UL - (MAIN_Fosc / (u32)(speedmode4 * 20 * (1 << subdivision4) / 3)));
329 3 }
330 2 break;
331 2 }
332 1 }
333 void run()
334 {
335 1 switch (pog)
336 1 {
337 2 case 1:
338 2 if (timex == 0)
339 2 pog = 4;
340 2 EN = 0;
341 2 break;
342 2 case 2:
343 2 EN = 1;
344 2 break;
345 2 case 3:
346 2 EN = 1;
347 2 break;
348 2 case 4:
349 2 EN = 1;
350 2 break;
351 2 }
352 1 }
353 void getconfig()
354 {
355 1 EEPROM_read_n(MYaddress, num, 9);
356 1 if (num[0] != 255)
357 1 {
358 2 speedmode1 = num[0];
359 2 speedmode2 = num[1];
360 2 speedmode3 = num[2];
361 2 speedmode4 = num[3];
362 2 subdivision1 = num[4];
363 2 subdivision2 = num[5];
C51 COMPILER V9.60.0.0 COMMON 03/23/2023 16:31:25 PAGE 7
364 2 subdivision3 = num[6];
365 2 subdivision4 = num[7];
366 2 sunmode = num[8];
367 2 }
368 1 }
369 void setconfig()
370 {
371 1 EEPROM_SectorErase(MYaddress);
372 1 num[0] = speedmode1;
373 1 num[1] = speedmode2;
374 1 num[2] = speedmode3;
375 1 num[3] = speedmode4;
376 1 num[4] = subdivision1;
377 1 num[5] = subdivision2;
378 1 num[6] = subdivision3;
379 1 num[7] = subdivision4;
380 1 num[8] = sunmode;
381 1 EEPROM_write_n(MYaddress, num, 9);
382 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2668 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 23 15
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)