os_time.lst
来自「atmega单片机用的ucos系统 占用内存适中 是atmega单片机合适的操作」· LST 代码 · 共 400 行 · 第 1/2 页
LST
400 行
205 0080 90E0 ldi r25,hi8(84)
206 0082 76C0 rjmp .L4
207 .L5:
97:OSsrc/os_time.c **** }
98:OSsrc/os_time.c **** }
99:OSsrc/os_time.c **** }
100:OSsrc/os_time.c **** }
101:OSsrc/os_time.c **** if (minutes > 59) {
209 .LM17:
210 0084 9BE3 ldi r25,lo8(59)
211 0086 9A15 cp r25,r10
212 0088 18F4 brsh .L9
102:OSsrc/os_time.c **** return (OS_TIME_INVALID_MINUTES); /* Validate arguments to be within range
214 .LM18:
215 008a 81E5 ldi r24,lo8(81)
216 008c 90E0 ldi r25,hi8(81)
217 008e 70C0 rjmp .L4
218 .L9:
103:OSsrc/os_time.c **** }
104:OSsrc/os_time.c **** if (seconds > 59) {
220 .LM19:
221 0090 ABE3 ldi r26,lo8(59)
222 0092 AD15 cp r26,r13
223 0094 18F4 brsh .L10
105:OSsrc/os_time.c **** return (OS_TIME_INVALID_SECONDS);
225 .LM20:
226 0096 82E5 ldi r24,lo8(82)
227 0098 90E0 ldi r25,hi8(82)
228 009a 6AC0 rjmp .L4
229 .L10:
106:OSsrc/os_time.c **** }
107:OSsrc/os_time.c **** if (milli > 999) {
231 .LM21:
232 009c B3E0 ldi r27,hi8(1000)
233 009e C83E cpi r28,lo8(1000)
234 00a0 DB07 cpc r29,r27
235 00a2 18F0 brlo .L11
108:OSsrc/os_time.c **** return (OS_TIME_INVALID_MILLI);
237 .LM22:
238 00a4 83E5 ldi r24,lo8(83)
239 00a6 90E0 ldi r25,hi8(83)
240 00a8 63C0 rjmp .L4
241 .L11:
109:OSsrc/os_time.c **** }
110:OSsrc/os_time.c **** #endif
111:OSsrc/os_time.c **** /* Compute the total number of clock ticks require
112:OSsrc/os_time.c **** /* .. (rounded to the nearest tick)
113:OSsrc/os_time.c **** ticks = ((INT32U)hours * 3600L + (INT32U)minutes * 60L + (INT32U)seconds) * OS_TICKS_PER_SEC
243 .LM23:
244 00aa 9927 clr r25
245 00ac AA27 clr r26
246 00ae BB27 clr r27
247 00b0 BC01 movw r22,r24
248 00b2 CD01 movw r24,r26
249 00b4 20E1 ldi r18,lo8(3600)
250 00b6 3EE0 ldi r19,hi8(3600)
251 00b8 40E0 ldi r20,hlo8(3600)
252 00ba 50E0 ldi r21,hhi8(3600)
253 00bc 0E94 0000 call __mulsi3
254 00c0 7B01 movw r14,r22
255 00c2 8C01 movw r16,r24
256 00c4 8A2D mov r24,r10
257 00c6 9927 clr r25
258 00c8 AA27 clr r26
259 00ca BB27 clr r27
260 00cc BC01 movw r22,r24
261 00ce CD01 movw r24,r26
262 00d0 2CE3 ldi r18,lo8(60)
263 00d2 30E0 ldi r19,hi8(60)
264 00d4 40E0 ldi r20,hlo8(60)
265 00d6 50E0 ldi r21,hhi8(60)
266 00d8 0E94 0000 call __mulsi3
267 00dc DC01 movw r26,r24
268 00de CB01 movw r24,r22
269 00e0 E80E add r14,r24
270 00e2 F91E adc r15,r25
271 00e4 0A1F adc r16,r26
272 00e6 1B1F adc r17,r27
273 00e8 ED0C add r14,r13
274 00ea F11C adc r15,__zero_reg__
275 00ec 011D adc r16,__zero_reg__
276 00ee 111D adc r17,__zero_reg__
277 00f0 C801 movw r24,r16
278 00f2 B701 movw r22,r14
279 00f4 24E6 ldi r18,lo8(100)
280 00f6 30E0 ldi r19,hi8(100)
281 00f8 40E0 ldi r20,hlo8(100)
282 00fa 50E0 ldi r21,hhi8(100)
283 00fc 0E94 0000 call __mulsi3
284 0100 7B01 movw r14,r22
285 0102 8C01 movw r16,r24
286 0104 CE01 movw r24,r28
287 0106 AA27 clr r26
288 0108 BB27 clr r27
289 010a BC01 movw r22,r24
290 010c CD01 movw r24,r26
291 010e 0E94 0000 call __mulsi3
292 0112 DC01 movw r26,r24
293 0114 CB01 movw r24,r22
294 0116 8C50 subi r24,lo8(-(500))
295 0118 9E4F sbci r25,hi8(-(500))
296 011a AF4F sbci r26,hlo8(-(500))
297 011c BF4F sbci r27,hhi8(-(500))
298 011e BC01 movw r22,r24
299 0120 CD01 movw r24,r26
300 0122 28EE ldi r18,lo8(1000)
301 0124 33E0 ldi r19,hi8(1000)
302 0126 40E0 ldi r20,hlo8(1000)
303 0128 50E0 ldi r21,hhi8(1000)
304 012a 0E94 0000 call __udivmodsi4
305 012e E20E add r14,r18
306 0130 F31E adc r15,r19
307 0132 041F adc r16,r20
308 0134 151F adc r17,r21
114:OSsrc/os_time.c **** + OS_TICKS_PER_SEC * ((INT32U)milli + 500L / OS_TICKS_PER_SEC) / 1000L;
115:OSsrc/os_time.c **** loops = (INT16U)(ticks / 65536L); /* Compute the integral number of 65536 tick delay
310 .LM24:
311 0136 5801 movw r10,r16
312 0138 CC24 clr r12
313 013a DD24 clr r13
314 013c E501 movw r28,r10
116:OSsrc/os_time.c **** ticks = ticks % 65536L; /* Obtain the fractional number of ticks
316 .LM25:
317 013e 8FEF ldi r24,lo8(65535)
318 0140 9FEF ldi r25,hi8(65535)
319 0142 A0E0 ldi r26,hlo8(65535)
320 0144 B0E0 ldi r27,hhi8(65535)
321 0146 E822 and r14,r24
322 0148 F922 and r15,r25
323 014a 0A23 and r16,r26
324 014c 1B23 and r17,r27
117:OSsrc/os_time.c **** OSTimeDly((INT16U)ticks);
326 .LM26:
327 014e C701 movw r24,r14
328 0150 0E94 0000 call OSTimeDly
118:OSsrc/os_time.c **** while (loops > 0) {
119:OSsrc/os_time.c **** OSTimeDly((INT16U)32768u);
120:OSsrc/os_time.c **** OSTimeDly((INT16U)32768u);
121:OSsrc/os_time.c **** loops--;
330 .LM27:
331 0154 AB28 or r10,r11
332 0156 51F0 breq .L16
333 .L14:
335 .LM28:
336 0158 80E0 ldi r24,lo8(-32768)
337 015a 90E8 ldi r25,hi8(-32768)
338 015c 0E94 0000 call OSTimeDly
340 .LM29:
341 0160 80E0 ldi r24,lo8(-32768)
342 0162 90E8 ldi r25,hi8(-32768)
343 0164 0E94 0000 call OSTimeDly
345 .LM30:
346 0168 2197 sbiw r28,1
347 016a B1F7 brne .L14
348 .L16:
122:OSsrc/os_time.c **** }
123:OSsrc/os_time.c **** return (OS_NO_ERR);
350 .LM31:
351 016c 80E0 ldi r24,lo8(0)
352 016e 90E0 ldi r25,hi8(0)
353 .L4:
354 /* epilogue: frame size=0 */
355 0170 DF91 pop r29
356 0172 CF91 pop r28
357 0174 1F91 pop r17
358 0176 0F91 pop r16
359 0178 FF90 pop r15
360 017a EF90 pop r14
361 017c DF90 pop r13
362 017e CF90 pop r12
363 0180 BF90 pop r11
364 0182 AF90 pop r10
365 0184 0895 ret
366 /* epilogue end (size=11) */
367 /* function OSTimeDlyHMSM size 154 (133) */
373 .Lscope1:
374 .text
376 Letext:
377 /* File "OSsrc/os_time.c": code 201 = 0x00c9 ( 175), prologues 12, epilogues 14 */
DEFINED SYMBOLS
*ABS*:00000000 os_time.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccqIaaaa.s:87 .text:00000000 OSTimeDly
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccqIaaaa.s:168 .text:00000054 OSTimeDlyHMSM
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccqIaaaa.s:376 .text:00000186 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
OSTCBCur
OSRdyTbl
OSRdyGrp
OS_Sched
__mulsi3
__udivmodsi4
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?