📄 os_core.lst
字号:
236 00a0 8093 0000 sts OS_TASK_HighPri,r24
237 /* epilogue: frame size=0 */
238 00a4 0895 ret
239 /* epilogue end (size=1) */
240 /* function OSTimeTick size 22 (21) */
245 .global OSSched
247 OSSched:
67:C:/WinAVR/minOS_WinAVR/OS_Core.c **** }
68:C:/WinAVR/minOS_WinAVR/OS_Core.c ****
69:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #if OS_TIME_DLY_EN
70:C:/WinAVR/minOS_WinAVR/OS_Core.c **** //OS Time Delay --- 使任务延时Tdly个时间节拍
71:C:/WinAVR/minOS_WinAVR/OS_Core.c **** void OSTimeDly(INT16U Tdly) /* Delay Tdly clock tick */
72:C:/WinAVR/minOS_WinAVR/OS_Core.c **** {
73:C:/WinAVR/minOS_WinAVR/OS_Core.c **** OSTCB[OS_TASK_CrtPrio].OSTimeDly=Tdly+OS_TASK_TimeOut;
74:C:/WinAVR/minOS_WinAVR/OS_Core.c **** OSTCB[OS_TASK_CrtPrio].OSTaskStatus=OS_TASK_WaitTicks;
75:C:/WinAVR/minOS_WinAVR/OS_Core.c **** OSSched();
76:C:/WinAVR/minOS_WinAVR/OS_Core.c **** }
77:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #endif
78:C:/WinAVR/minOS_WinAVR/OS_Core.c ****
79:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #if OS_TASK_SUSPEND_EN>0
80:C:/WinAVR/minOS_WinAVR/OS_Core.c **** //把正在运行的任务挂起(Suspend a task)。
81:C:/WinAVR/minOS_WinAVR/OS_Core.c **** void OSTaskSuspend(INT8U TaskPrio)
82:C:/WinAVR/minOS_WinAVR/OS_Core.c **** {
83:C:/WinAVR/minOS_WinAVR/OS_Core.c **** OSTCB[OS_TASK_CrtPrio].OSTaskStatus=OS_TASK_Rdy;
84:C:/WinAVR/minOS_WinAVR/OS_Core.c **** OSTCB[TaskPrio].OSTaskStatus=OS_TASK_Suspend;
85:C:/WinAVR/minOS_WinAVR/OS_Core.c **** OSTCB[TaskPrio].OSTimeDly=OS_TASK_TimeOut;
86:C:/WinAVR/minOS_WinAVR/OS_Core.c **** OSSched();
87:C:/WinAVR/minOS_WinAVR/OS_Core.c **** }
88:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #endif
89:C:/WinAVR/minOS_WinAVR/OS_Core.c ****
90:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #if OS_TASK_Resume_EN>0
91:C:/WinAVR/minOS_WinAVR/OS_Core.c **** // 恢复被挂起的任务(resume a task)。
92:C:/WinAVR/minOS_WinAVR/OS_Core.c **** void OSTaskResume(INT8U TaskPrio)
93:C:/WinAVR/minOS_WinAVR/OS_Core.c **** {
94:C:/WinAVR/minOS_WinAVR/OS_Core.c **** OSTCB[TaskPrio].OSTaskStatus=OS_TASK_Rdy;
95:C:/WinAVR/minOS_WinAVR/OS_Core.c **** }
96:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #endif
97:C:/WinAVR/minOS_WinAVR/OS_Core.c ****
98:C:/WinAVR/minOS_WinAVR/OS_Core.c **** //任务调度,把CPU控制权转到优先级最高的处于就绪态的任务。如果没有处于就绪态的任务,就地等待,
99:C:/WinAVR/minOS_WinAVR/OS_Core.c **** void OSSched(void)
100:C:/WinAVR/minOS_WinAVR/OS_Core.c **** {
249 .LM26:
250 /* prologue: frame size=0 */
251 /* prologue end (size=0) */
252 .L29:
101:C:/WinAVR/minOS_WinAVR/OS_Core.c **** do
102:C:/WinAVR/minOS_WinAVR/OS_Core.c **** {
103:C:/WinAVR/minOS_WinAVR/OS_Core.c **** OS_TASK_HighPri=OSPrioHighRdy();
254 .LM27:
255 00a6 C4DF rcall OSPrioHighRdy
256 00a8 8093 0000 sts OS_TASK_HighPri,r24
104:C:/WinAVR/minOS_WinAVR/OS_Core.c **** } while (OS_TASK_HighPri==no_TASK_Rdy);
258 .LM28:
259 00ac 8F3F cpi r24,lo8(-1)
260 00ae D9F3 breq .L29
105:C:/WinAVR/minOS_WinAVR/OS_Core.c **** OSTCB[OS_TASK_HighPri].OSTaskStatus=OS_TASK_Run;
262 .LM29:
263 00b0 9927 clr r25
264 00b2 F92F mov r31,r25
265 00b4 E82F mov r30,r24
266 00b6 EE0F lsl r30
267 00b8 FF1F rol r31
268 00ba EE0F lsl r30
269 00bc FF1F rol r31
270 00be E80F add r30,r24
271 00c0 F91F adc r31,r25
272 00c2 E050 subi r30,lo8(-(OSTCB))
273 00c4 F040 sbci r31,hi8(-(OSTCB))
274 00c6 8BEF ldi r24,lo8(-5)
275 00c8 8283 std Z+2,r24
106:C:/WinAVR/minOS_WinAVR/OS_Core.c **** OS_TASK_INT();
277 .LM30:
278 00ca 00D0 rcall OSCtxSw
279 /* epilogue: frame size=0 */
280 00cc 0895 ret
281 /* epilogue end (size=1) */
282 /* function OSSched size 20 (19) */
286 .global OSTimeDly
288 OSTimeDly:
290 .LM31:
291 /* prologue: frame size=0 */
292 /* prologue end (size=0) */
294 .LM32:
295 00ce 2091 0000 lds r18,OS_TASK_CrtPrio
296 00d2 3327 clr r19
297 00d4 F32F mov r31,r19
298 00d6 E22F mov r30,r18
299 00d8 EE0F lsl r30
300 00da FF1F rol r31
301 00dc EE0F lsl r30
302 00de FF1F rol r31
303 00e0 E20F add r30,r18
304 00e2 F31F adc r31,r19
305 00e4 E050 subi r30,lo8(-(OSTCB))
306 00e6 F040 sbci r31,hi8(-(OSTCB))
307 00e8 8383 std Z+3,r24
308 00ea 9483 std Z+4,r25
310 .LM33:
311 00ec 8AEF ldi r24,lo8(-6)
312 00ee 8283 std Z+2,r24
314 .LM34:
315 00f0 DADF rcall OSSched
316 /* epilogue: frame size=0 */
317 00f2 0895 ret
318 /* epilogue end (size=1) */
319 /* function OSTimeDly size 19 (18) */
323 .global OSTaskSuspend
325 OSTaskSuspend:
327 .LM35:
328 /* prologue: frame size=0 */
329 /* prologue end (size=0) */
331 .LM36:
332 00f4 9091 0000 lds r25,OS_TASK_CrtPrio
333 00f8 292F mov r18,r25
334 00fa 3327 clr r19
335 00fc 40E0 ldi r20,lo8(OSTCB)
336 00fe 50E0 ldi r21,hi8(OSTCB)
337 0100 F32F mov r31,r19
338 0102 E22F mov r30,r18
339 0104 EE0F lsl r30
340 0106 FF1F rol r31
341 0108 EE0F lsl r30
342 010a FF1F rol r31
343 010c E20F add r30,r18
344 010e F31F adc r31,r19
345 0110 E40F add r30,r20
346 0112 F51F adc r31,r21
347 0114 9CEF ldi r25,lo8(-4)
348 0116 9283 std Z+2,r25
350 .LM37:
351 0118 9927 clr r25
352 011a F92F mov r31,r25
353 011c E82F mov r30,r24
354 011e EE0F lsl r30
355 0120 FF1F rol r31
356 0122 EE0F lsl r30
357 0124 FF1F rol r31
358 0126 E80F add r30,r24
359 0128 F91F adc r31,r25
360 012a E40F add r30,r20
361 012c F51F adc r31,r21
362 012e 8DEF ldi r24,lo8(-3)
363 0130 8283 std Z+2,r24
365 .LM38:
366 0132 1382 std Z+3,__zero_reg__
367 0134 1482 std Z+4,__zero_reg__
369 .LM39:
370 0136 B7DF rcall OSSched
371 /* epilogue: frame size=0 */
372 0138 0895 ret
373 /* epilogue end (size=1) */
374 /* function OSTaskSuspend size 35 (34) */
378 .global OSTaskResume
380 OSTaskResume:
382 .LM40:
383 /* prologue: frame size=0 */
384 /* prologue end (size=0) */
386 .LM41:
387 013a 9927 clr r25
388 013c F92F mov r31,r25
389 013e E82F mov r30,r24
390 0140 EE0F lsl r30
391 0142 FF1F rol r31
392 0144 EE0F lsl r30
393 0146 FF1F rol r31
394 0148 E80F add r30,r24
395 014a F91F adc r31,r25
396 014c E050 subi r30,lo8(-(OSTCB))
397 014e F040 sbci r31,hi8(-(OSTCB))
398 0150 8CEF ldi r24,lo8(-4)
399 0152 8283 std Z+2,r24
400 /* epilogue: frame size=0 */
401 0154 0895 ret
402 /* epilogue end (size=1) */
403 /* function OSTaskResume size 14 (13) */
405 .comm OS_TASK_CrtPrio,1,1
406 .comm OS_TASK_HighPri,1,1
407 .comm OSTCB,25,1
408 .comm TASK_main_PrioStk,64,1
413 .text
415 Letext:
416 /* File "C:/WinAVR/minOS_WinAVR/OS_Core.c": code 171 = 0x00ab ( 163), prologues 0, epilogues 8
DEFINED SYMBOLS
*ABS*:00000000 OS_Core.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\WINDOWS\TEMP/ccx8Tigb.s:66 .text:00000000 OSInit
*COM*:00000019 OSTCB
C:\WINDOWS\TEMP/ccx8Tigb.s:105 .text:0000001c OSStart
*COM*:00000001 OS_TASK_CrtPrio
*COM*:00000001 OS_TASK_HighPri
C:\WINDOWS\TEMP/ccx8Tigb.s:133 .text:00000030 OSPrioHighRdy
C:\WINDOWS\TEMP/ccx8Tigb.s:200 .text:0000007a OSTimeTick
C:\WINDOWS\TEMP/ccx8Tigb.s:247 .text:000000a6 OSSched
C:\WINDOWS\TEMP/ccx8Tigb.s:288 .text:000000ce OSTimeDly
C:\WINDOWS\TEMP/ccx8Tigb.s:325 .text:000000f4 OSTaskSuspend
C:\WINDOWS\TEMP/ccx8Tigb.s:380 .text:0000013a OSTaskResume
*COM*:00000040 TASK_main_PrioStk
C:\WINDOWS\TEMP/ccx8Tigb.s:415 .text:00000156 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
InitOSTimer
OSCtxSw
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -