📄 os_cpu_c.ls1
字号:
357 ; return ((void *)stk);
358 ; SOURCE LINE # 102
00A6 120000 F 359 LCALL L?0013
00A9 120000 F 360 LCALL ?C?PLDXDATA
361 ; }
362 ; SOURCE LINE # 103
00AC 363 ?C0001:
A51 MACRO ASSEMBLER OS_CPU_C 07/03/2002 08:51:27 PAGE 7
00AC 90000E 364 MOV DPTR,#0EH
00AF 020000 F 365 LJMP ?C?ADDXBP
366 ; END OF _?OSTaskStkInit
367
---- 368 CSEG AT 0000BH
000B 020000 F 369 LJMP _?OSTickISR
370
371 ;
372 ;
373 ;
374 ; void UserTickTimer(void) KCREENTRANT;
375 ;
376 ; /* OSTickISR can be writen in c language now, so it is more easy for user to write code f
or their own */
377 ; void OSTickISR(void) KCREENTRANT interrupt 1
378
---- 379 RSEG ?PR?_?OSTickISR?OS_CPU_C
380 USING 0
0000 381 _?OSTickISR:
0000 C0E0 382 PUSH ACC
0002 C0F0 383 PUSH B
0004 C083 384 PUSH DPH
0006 C082 385 PUSH DPL
0008 C0D0 386 PUSH PSW
000A 75D000 387 MOV PSW,#00H
000D C000 388 PUSH AR0
000F C001 389 PUSH AR1
0011 C002 390 PUSH AR2
0013 C003 391 PUSH AR3
0015 C004 392 PUSH AR4
0017 C005 393 PUSH AR5
0019 C006 394 PUSH AR6
001B C007 395 PUSH AR7
396 USING 0
397 ; SOURCE LINE # 110
398 ; {
399 ;
400 ; #pragma ASM
401 ; PUSH IE
001D C0A8 402 PUSH IE
403 ; #pragma ENDASM
404 ; OSIntEnter();
405 ; SOURCE LINE # 116
001F 120000 F 406 LCALL _?OSIntEnter
407 ; UserTickTimer();
408 ; SOURCE LINE # 117
0022 120000 F 409 LCALL _?UserTickTimer
410 ; OSTimeTick();
411 ; SOURCE LINE # 118
0025 120000 F 412 LCALL _?OSTimeTick
413 ; OSIntExit();
414 ; SOURCE LINE # 119
0028 120000 F 415 LCALL _?OSIntExit
416 ; #pragma ASM
417 ; POP IE
002B D0A8 418 POP IE
419 ; #pragma ENDASM
420 ; }
421 ; SOURCE LINE # 123
002D D007 422 POP AR7
002F D006 423 POP AR6
0031 D005 424 POP AR5
0033 D004 425 POP AR4
0035 D003 426 POP AR3
0037 D002 427 POP AR2
0039 D001 428 POP AR1
A51 MACRO ASSEMBLER OS_CPU_C 07/03/2002 08:51:27 PAGE 8
003B D000 429 POP AR0
003D D0D0 430 POP PSW
003F D082 431 POP DPL
0041 D083 432 POP DPH
0043 D0F0 433 POP B
0045 D0E0 434 POP ACC
0047 32 435 RETI
436 ; END OF _?OSTickISR
437
438 ;
439 ; /* If you want to write ISRs for your own, just do as OSTickISR() */
440 ;
441 ; /*$PAGE*/
442 ; #if OS_CPU_HOOKS_EN
443 ;
444 ;
445 ; /*
446 ; *****************************************************************************************
****************
447 ; * TASK CREATION HOOK
448 ; *
449 ; * Description: This function is called when a task is created.
450 ; *
451 ; * Arguments : ptcb is a pointer to the task control block of the task being created.
452 ; *
453 ; * Note(s) : 1) Interrupts are disabled during this call.
454 ; *****************************************************************************************
****************
455 ; */
456 ; void OSTaskCreateHook (OS_TCB *ptcb) KCREENTRANT
457
---- 458 RSEG ?PR?_?OSTaskCreateHook?OS_CPU_C
0000 459 _?OSTaskCreateHook:
460 USING 0
461 ; SOURCE LINE # 142
0000 120000 F 462 LCALL L?0014
463 ; {
464 ; ptcb = ptcb; /* Prevent compiler warning
*/
465 ; SOURCE LINE # 144
0003 120000 F 466 LCALL L?0013
0006 120000 F 467 LCALL ?C?PLDXDATA
0009 120000 F 468 LCALL L?0013
000C 120000 F 469 LCALL ?C?PSTXDATA
470 ; }
471 ; SOURCE LINE # 145
000F 900003 472 MOV DPTR,#03H
0012 020000 F 473 LJMP ?C?ADDXBP
474 ; END OF _?OSTaskCreateHook
475
476 ;
477 ;
478 ; /*
479 ; *****************************************************************************************
****************
480 ; * TASK DELETION HOOK
481 ; *
482 ; * Description: This function is called when a task is deleted.
483 ; *
484 ; * Arguments : ptcb is a pointer to the task control block of the task being deleted.
485 ; *
486 ; * Note(s) : 1) Interrupts are disabled during this call.
487 ; *****************************************************************************************
****************
488 ; */
489 ; void OSTaskDelHook (OS_TCB *ptcb) KCREENTRANT
A51 MACRO ASSEMBLER OS_CPU_C 07/03/2002 08:51:27 PAGE 9
490
---- 491 RSEG ?PR?_?OSTaskDelHook?OS_CPU_C
0000 492 _?OSTaskDelHook:
493 USING 0
494 ; SOURCE LINE # 159
0000 120000 F 495 LCALL L?0015
496 ; {
497 ; ptcb = ptcb; /* Prevent compiler warning
*/
498 ; SOURCE LINE # 161
0003 120000 F 499 LCALL L?0013
0006 120000 F 500 LCALL ?C?PLDXDATA
0009 120000 F 501 LCALL L?0013
000C 120000 F 502 LCALL ?C?PSTXDATA
503 ; }
504 ; SOURCE LINE # 162
000F 900003 505 MOV DPTR,#03H
0012 020000 F 506 LJMP ?C?ADDXBP
507 ; END OF _?OSTaskDelHook
508
509 ;
510 ; /*
511 ; *****************************************************************************************
****************
512 ; * TASK SWITCH HOOK
513 ; *
514 ; * Description: This function is called when a task switch is performed. This allows you
to perform other
515 ; * operations during a context switch.
516 ; *
517 ; * Arguments : none
518 ; *
519 ; * Note(s) : 1) Interrupts are disabled during this call.
520 ; * 2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB
of the task that
521 ; * will be 'switched in' (i.e. the highest priority task) and, 'OSTCBCur'
points to the
522 ; * task being switched out (i.e. the preempted task).
523 ; *****************************************************************************************
****************
524 ; */
525 ; void OSTaskSwHook (void) KCREENTRANT
526
---- 527 RSEG ?PR?_?OSTaskSwHook?OS_CPU_C
0000 528 _?OSTaskSwHook:
529 ; SOURCE LINE # 179
530 ; {
531 ; }
532 ; SOURCE LINE # 181
0000 22 533 RET
534 ; END OF _?OSTaskSwHook
535
536 ;
537 ; /*
538 ; *****************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -