📄 os_cpu_c.ls1
字号:
243 ; END OF _?OSTaskCreateHook
244
245 ; #endif
246 ;
247 ;
A51 MACRO ASSEMBLER OS_CPU_C 01/12/2005 13:55:43 PAGE 5
248 ; /*
249 ; *****************************************************************************************
****************
250 ; * TASK DELETION HOOK
251 ; *
252 ; * Description: This function is called when a task is deleted.
253 ; *
254 ; * Arguments : ptcb is a pointer to the task control block of the task being deleted.
255 ; *
256 ; * Note(s) : 1) Interrupts are disabled during this call.
257 ; *****************************************************************************************
****************
258 ; */
259 ; #if OS_CPU_HOOKS_EN > 0
260 ; void OSTaskDelHook (OS_TCB *ptcb) KCREENTRANT
261
---- 262 RSEG ?PR?_?OSTaskDelHook?OS_CPU_C
0000 263 _?OSTaskDelHook:
264 USING 0
265 ; SOURCE LINE # 92
0000 90FFFD 266 MOV DPTR,#0FFFDH
0003 120000 F 267 LCALL ?C?ADDXBP
0006 EB 268 MOV A,R3
0007 F0 269 MOVX @DPTR,A
0008 A3 270 INC DPTR
0009 EA 271 MOV A,R2
000A F0 272 MOVX @DPTR,A
000B A3 273 INC DPTR
000C E9 274 MOV A,R1
000D F0 275 MOVX @DPTR,A
276 ; {
277 ; ptcb = ptcb; /* Prevent compiler warning
*/
278 ; SOURCE LINE # 94
000E 850083 F 279 MOV DPH,?C_XBP
0011 850082 F 280 MOV DPL,?C_XBP+01H
0014 E0 281 MOVX A,@DPTR
0015 F9 282 MOV R1,A
0016 A3 283 INC DPTR
0017 E0 284 MOVX A,@DPTR
0018 FA 285 MOV R2,A
0019 A3 286 INC DPTR
001A E0 287 MOVX A,@DPTR
001B 850083 F 288 MOV DPH,?C_XBP
001E 850082 F 289 MOV DPL,?C_XBP+01H
0021 C9 290 XCH A,R1
0022 F0 291 MOVX @DPTR,A
0023 A3 292 INC DPTR
0024 EA 293 MOV A,R2
0025 F0 294 MOVX @DPTR,A
0026 A3 295 INC DPTR
0027 E9 296 MOV A,R1
0028 F0 297 MOVX @DPTR,A
298 ; }
299 ; SOURCE LINE # 95
0029 900003 300 MOV DPTR,#03H
002C 020000 F 301 LJMP ?C?ADDXBP
302 ; END OF _?OSTaskDelHook
303
304 ; #endif
305 ;
306 ; /*
307 ; *****************************************************************************************
****************
308 ; * IDLE TASK HOOK
309 ; *
A51 MACRO ASSEMBLER OS_CPU_C 01/12/2005 13:55:43 PAGE 6
310 ; * Description: This function is called by the idle task. This hook has been added to all
ow you to do
311 ; * such things as STOP the CPU to conserve power.
312 ; *
313 ; * Arguments : none
314 ; *
315 ; * Note(s) : 1) Interrupts are enabled during this call.
316 ; *****************************************************************************************
****************
317 ; */
318 ; #if OS_CPU_HOOKS_EN > 0 && OS_VERSION >= 251
319 ; void OSTaskIdleHook (void) KCREENTRANT
320
---- 321 RSEG ?PR?_?OSTaskIdleHook?OS_CPU_C
0000 322 _?OSTaskIdleHook:
323 ; SOURCE LINE # 111
324 ; {
325 ; }
326 ; SOURCE LINE # 113
0000 22 327 RET
328 ; END OF _?OSTaskIdleHook
329
330 ; #endif
331 ;
332 ; /*
333 ; *****************************************************************************************
****************
334 ; * STATISTIC TASK HOOK
335 ; *
336 ; * Description: This function is called every second by uC/OS-II's statistics task. This
allows your
337 ; * application to add functionality to the statistics task.
338 ; *
339 ; * Arguments : none
340 ; *****************************************************************************************
****************
341 ; */
342 ;
343 ; #if OS_CPU_HOOKS_EN > 0
344 ; void OSTaskStatHook (void) KCREENTRANT
345
---- 346 RSEG ?PR?_?OSTaskStatHook?OS_CPU_C
0000 347 _?OSTaskStatHook:
348 ; SOURCE LINE # 128
349 ; {
350 ; }
351 ; SOURCE LINE # 130
0000 22 352 RET
353 ; END OF _?OSTaskStatHook
354
355 ; #endif
356 ;
357 ; /*$PAGE*/
358 ; /*
359 ; *****************************************************************************************
****************
360 ; * INITIALIZE A TASK'S STACK
361 ; *
362 ; * Description: This function is called by either OSTaskCreate() or OSTaskCreateExt() to i
nitialize the
363 ; * stack frame of the task being created. This function is highly processor
specific.
364 ; *
365 ; * Arguments : task is a pointer to the task code
366 ; *
367 ; * pdata is a pointer to a user supplied data area that will be passe
A51 MACRO ASSEMBLER OS_CPU_C 01/12/2005 13:55:43 PAGE 7
d to the task
368 ; * when the task first executes.
369 ; *
370 ; * ptos is a pointer to the top of stack. It is assumed that 'ptos'
points to
371 ; * a 'free' entry on the task stack. If OS_STK_GROWTH is set t
o 1 then
372 ; * 'ptos' will contain the HIGHEST valid address of the stack.
Similarly, if
373 ; * OS_STK_GROWTH is set to 0, the 'ptos' will contains the LOWE
ST valid address
374 ; * of the stack.
375 ; *
376 ; * opt specifies options that can be used to alter the behavior of
OSTaskStkInit().
377 ; * (see uCOS_II.H for OS_TASK_OPT_???).
378 ; *
379 ; * Returns : Always returns the location of the new top-of-stack' once the processor re
gisters have
380 ; * been placed on the stack in the proper order.
381 ; *
382 ; * Note(s) : Interrupts are enabled when your task starts executing. You can change thi
s by setting the
383 ; * PSW to 0x0002 instead. In this case, interrupts would be disabled upon ta
sk startup. The
384 ; * application code would be responsible for enabling interrupts at the begin
ning of the task
385 ; * code. You will need to modify OSTaskIdle() and OSTaskStat() so that they
enable
386 ; * interrupts. Failure to do this will make your system crash!
387 ; *****************************************************************************************
****************
388 ; */
389 ;
390 ; OS_STK *OSTaskStkInit (void (*task)(void *pd) KCREENTRANT, void *pdata, OS_STK *ptos, IN
T16U opt) KCREENTRANT
391
---- 392 RSEG ?PR?_?OSTaskStkInit?OS_CPU_C
0000 393 _?OSTaskStkInit:
394 USING 0
395 ; SOURCE LINE # 166
0000 90FFFD 396 MOV DPTR,#0FFFDH
0003 120000 F 397 LCALL ?C?ADDXBP
0006 EB 398 MOV A,R3
0007 F0 399 MOVX @DPTR,A
0008 A3 400 INC DPTR
0009 EA 401 MOV A,R2
000A F0 402 MOVX @DPTR,A
000B A3 403 INC DPTR
000C E9 404 MOV A,R1
000D F0 405 MOVX @DPTR,A
000E 90FFFD 406 MOV DPTR,#0FFFDH
0011 120000 F 407 LCALL ?C?ADDXBP
408 ; {
409 ; INT8U * stk;
410 ;
411 ; opt = opt; /* 'opt' is not used, prevent warning
*/
412 ; SOURCE LINE # 170
0014 90000C 413 MOV DPTR,#0CH
0017 120000 F 414 LCALL ?C?XBPOFF
001A E0 415 MOVX A,@DPTR
001B FE 416 MOV R6,A
001C A3 417 INC DPTR
001D E0 418 MOVX A,@DPTR
001E FF 419 MOV R7,A
A51 MACRO ASSEMBLER OS_CPU_C 01/12/2005 13:55:43 PAGE 8
001F 90000C 420 MOV DPTR,#0CH
0022 120000 F 421 LCALL ?C?XBPOFF
0025 EE 422 MOV A,R6
0026 F0 423 MOVX @DPTR,A
0027 A3 424 INC DPTR
0028 EF 425 MOV A,R7
0029 F0 426 MOVX @DPTR,A
427 ; stk = (INT8U *) ptos; /* Load stack pointer
*/
428 ; SOURCE LINE # 171
002A 900009 429 MOV DPTR,#09H
002D 120000 F 430 LCALL ?C?XBPOFF
0030 E0 431 MOVX A,@DPTR
0031 F9 432 MOV R1,A
0032 A3 433 INC DPTR
0033 E0 434 MOVX A,@DPTR
0034 FA 435 MOV R2,A
0035 A3 436 INC DPTR
0036 E0 437 MOVX A,@DPTR
0037 850083 F 438 MOV DPH,?C_XBP
003A 850082 F 439 MOV DPL,?C_XBP+01H
003D C9 440 XCH A,R1
003E F0 441 MOVX @DPTR,A
003F A3 442 INC DPTR
0040 EA 443 MOV A,R2
0041 F0 444 MOVX @DPTR,A
0042 A3 445 INC DPTR
0043 E9 446 MOV A,R1
0044 F0 447 MOVX @DPTR,A
448 ;
449 ; stk -= sizeof(void *);
450 ; SOURCE LINE # 173
0045 850083 F 451 MOV DPH,?C_XBP
0048 850082 F 452 MOV DPL,?C_XBP+01H
004B A3 453 INC DPTR
004C 74FF 454 MOV A,#0FFH
004E 75F0FD 455 MOV B,#0FDH
0051 120000 F 456 LCALL ?C?IILDX
457 ; *(void**)stk = pdata;
458 ; SOURCE LINE # 174
0054 900006 459 MOV DPTR,#06H
0057 120000 F 460 LCALL ?C?XBPOFF
005A E0 461 MOVX A,@DPTR
005B FB 462 MOV R3,A
005C A3 463 INC DPTR
005D E0 464 MOVX A,@DPTR
005E FA 465 MOV R2,A
005F A3 466 INC DPTR
0060 E0 467 MOVX A,@DPTR
0061 F9 468 MOV R1,A
0062 C003 469 PUSH AR3
0064 C002 470 PUSH AR2
0066 C001 471 PUSH AR1
0068 850083 F 472 MOV DPH,?C_XBP
006B 850082 F 473 MOV DPL,?C_XBP+01H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -