📄 os_core.src
字号:
; #endif
;
; #if OS_EVENT_TBL_SIZE > 6
; *ptbl++ = 0x00;
; #endif
;
; #if OS_EVENT_TBL_SIZE > 7
; *ptbl = 0x00;
; #endif
; }
; SOURCE LINE # 597
MOV DPTR,#06H
LJMP ?C?ADDXBP
; END OF _?OS_EventWaitListInit
; #endif
; /*$PAGE*/
; /*
; *********************************************************************************************************
; * INITIALIZATION
; * INITIALIZE THE FREE LIST OF EVENT CONTROL BLOCKS
; *
; * Description: This function is called by OSInit() to initialize the free list of event control blocks.
; *
; * Arguments : none
; *
; * Returns : none
; *********************************************************************************************************
; */
;
; static void OS_InitEventList (void) LG_REENTRANT
RSEG ?PR?_?OS_InitEventList?OS_CORE
_?OS_InitEventList:
USING 0
; SOURCE LINE # 613
MOV DPTR,#0FFF8H
LCALL ?C?ADDXBP
; {
; #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
; #if (OS_MAX_EVENTS > 1)
; INT16U i;
; OS_EVENT *pevent1;
; OS_EVENT *pevent2;
;
;
; pevent1 = &OSEventTbl[0];
; SOURCE LINE # 622
MOV R3,#01H
MOV R2,#HIGH (OSEventTbl)
MOV R1,#LOW (OSEventTbl)
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
LCALL ?C?PSTXDATA
; pevent2 = &OSEventTbl[1];
; SOURCE LINE # 623
MOV R2,#HIGH (OSEventTbl+09H)
MOV R1,#LOW (OSEventTbl+09H)
MOV DPTR,#05H
LCALL ?C?XBPOFF
LCALL ?C?PSTXDATA
; for (i = 0; i < (OS_MAX_EVENTS - 1); i++) { /* Init. list of free EVENT control blocks */
; SOURCE LINE # 624
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0029:
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
CLR C
SUBB A,#01H
MOV A,R6
SUBB A,#00H
JNC ?C0030
; pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
; SOURCE LINE # 625
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
LCALL ?C?PLDXDATA
CLR A
LCALL ?C?CSTPTR
; pevent1->OSEventPtr = pevent2;
; SOURCE LINE # 626
MOV DPTR,#05H
LCALL ?C?XBPOFF
LCALL ?C?PLDXDATA
PUSH AR3
PUSH AR2
PUSH AR1
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
LCALL ?C?PLDXDATA
MOV DPTR,#04H
LCALL ?C?PSTOPTR
; pevent1++;
; SOURCE LINE # 627
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
INC DPTR
CLR A
MOV B,#09H
LCALL ?C?IILDX
; pevent2++;
; SOURCE LINE # 628
MOV DPTR,#05H
LCALL ?C?XBPOFF
INC DPTR
CLR A
MOV B,#09H
LCALL ?C?IILDX
; }
; SOURCE LINE # 629
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
CLR A
MOV B,#01H
LCALL ?C?IILDX
SJMP ?C0029
?C0030:
; pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
; SOURCE LINE # 630
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
LCALL ?C?PLDXDATA
CLR A
LCALL ?C?CSTPTR
; pevent1->OSEventPtr = (OS_EVENT *)0;
; SOURCE LINE # 631
MOV R3,A
MOV R2,A
MOV R1,A
PUSH AR3
PUSH AR2
PUSH AR1
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
LCALL ?C?PLDXDATA
MOV DPTR,#04H
LCALL ?C?PSTOPTR
; OSEventFreeList = &OSEventTbl[0];
; SOURCE LINE # 632
MOV R3,#01H
MOV R2,#HIGH (OSEventTbl)
MOV R1,#LOW (OSEventTbl)
MOV DPTR,#OSEventFreeList
LCALL ?C?PSTXDATA
; #else
; OSEventFreeList = &OSEventTbl[0]; /* Only have ONE event control block */
; OSEventFreeList->OSEventType = OS_EVENT_TYPE_UNUSED;
; OSEventFreeList->OSEventPtr = (OS_EVENT *)0;
; #endif
; #endif
; }
; SOURCE LINE # 639
MOV DPTR,#08H
LJMP ?C?ADDXBP
; END OF _?OS_InitEventList
; /*$PAGE*/
; /*
; *********************************************************************************************************
; * INITIALIZATION
; * INITIALIZE MISCELLANEOUS VARIABLES
; *
; * Description: This function is called by OSInit() to initialize miscellaneous variables.
; *
; * Arguments : none
; *
; * Returns : none
; *********************************************************************************************************
; */
;
; static void OS_InitMisc (void) LG_REENTRANT
RSEG ?PR?_?OS_InitMisc?OS_CORE
_?OS_InitMisc:
USING 0
; SOURCE LINE # 654
; {
; #if OS_TIME_GET_SET_EN > 0
; OSTime = 0L; /* Clear the 32-bit system clock */
; #endif
;
; OSIntNesting = 0; /* Clear the interrupt nesting counter */
; SOURCE LINE # 660
CLR A
MOV DPTR,#OSIntNesting
MOVX @DPTR,A
; OSLockNesting = 0; /* Clear the scheduling lock counter */
; SOURCE LINE # 661
MOV DPTR,#OSLockNesting
MOVX @DPTR,A
;
; OSTaskCtr = 0; /* Clear the number of tasks */
; SOURCE LINE # 663
MOV DPTR,#OSTaskCtr
MOVX @DPTR,A
;
; OSRunning = FALSE; /* Indicate that multitasking not started */
; SOURCE LINE # 665
CLR OSRunning
;
; OSCtxSwCtr = 0; /* Clear the context switch counter */
; SOURCE LINE # 667
MOV DPTR,#OSCtxSwCtr
LCALL ?C?LSTKXDATA
DB 00H
DB 00H
DB 00H
DB 00H
; OSIdleCtr = 0L; /* Clear the 32-bit idle counter */
; SOURCE LINE # 668
MOV DPTR,#OSIdleCtr
LCALL ?C?LSTKXDATA
DB 00H
DB 00H
DB 00H
DB 00H
;
; #if (OS_TASK_STAT_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
; OSIdleCtrRun = 0L;
; OSIdleCtrMax = 0L;
; OSStatRdy = FALSE; /* Statistic task is not ready */
; #endif
; }
; SOURCE LINE # 675
RET
; END OF _?OS_InitMisc
; /*$PAGE*/
; /*
; *********************************************************************************************************
; * INITIALIZATION
; * INITIALIZE THE READY LIST
; *
; * Description: This function is called by OSInit() to initialize the Ready List.
; *
; * Arguments : none
; *
; * Returns : none
; *********************************************************************************************************
; */
;
; static void OS_InitRdyList (void) LG_REENTRANT
RSEG ?PR?_?OS_InitRdyList?OS_CORE
_?OS_InitRdyList:
USING 0
; SOURCE LINE # 690
MOV DPTR,#0FFFBH
LCALL ?C?ADDXBP
; {
; INT16U i;
; INT8U *prdytbl;
;
;
; OSRdyGrp = 0x00; /* Clear the ready list */
; SOURCE LINE # 696
CLR A
MOV DPTR,#OSRdyGrp
MOVX @DPTR,A
; prdytbl = &OSRdyTbl[0];
; SOURCE LINE # 697
MOV R3,#01H
MOV R2,#HIGH (OSRdyTbl)
MOV R1,#LOW (OSRdyTbl)
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
LCALL ?C?PSTXDATA
; for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
; SOURCE LINE # 698
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0034:
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
CLR C
SUBB A,#02H
MOV A,R6
SUBB A,#00H
JNC ?C0035
; *prdytbl++ = 0x00;
; SOURCE LINE # 699
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?PLDIXDATA
CLR A
LCALL ?C?CSTPTR
; }
; SOURCE LINE # 700
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOV B,#01H
LCALL ?C?IILDX
SJMP ?C0034
?C0035:
;
; OSPrioCur = 0;
; SOURCE LINE # 702
CLR A
MOV DPTR,#OSPrioCur
MOVX @DPTR,A
; OSPrioHighRdy = 0;
; SOURCE LINE # 703
MOV DPTR,#OSPrioHighRdy
MOVX @DPTR,A
;
; OSTCBHighRdy = (OS_TCB *)0;
; SOURCE LINE # 705
MOV R3,A
MOV R2,A
MOV R1,A
MOV DPTR,#OSTCBHighRdy
LCALL ?C?PSTXDATA
; OSTCBCur = (OS_TCB *)0;
; SOURCE LINE # 706
MOV DPTR,#OSTCBCur
LCALL ?C?PSTXDATA
; }
; SOURCE LINE # 707
MOV DPTR,#05H
LJMP ?C?ADDXBP
; END OF _?OS_InitRdyList
;
; /*$PAGE*/
; /*
; *********************************************************************************************************
; * INITIALIZATION
; * CREATING THE IDLE TASK
; *
; * Description: This function creates the Idle Task.
; *
; * Arguments : none
; *
; * Returns : none
; *********************************************************************************************************
; */
;
; static void OS_InitTaskIdle (void) LG_REENTRANT
RSEG ?PR?_?OS_InitTaskIdle?OS_CORE
_?OS_InitTaskIdle:
USING 0
; SOURCE LINE # 723
; {
; #if OS_TASK_CREATE_EXT_EN > 0
; #if OS_STK_GROWTH == 1
; (void)OSTaskCreateExt(OS_TaskIdle,
; (void *)0, /* No arguments passed to OS_TaskIdle() */
; &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack */
; OS_IDLE_PRIO, /* Lowest priority level */
; OS_TASK_IDLE_ID,
; &OSTaskIdleStk[0], /* Set Bottom-Of-Stack */
; OS_TASK_IDLE_STK_SIZE,
; (void *)0, /* No TCB extension */
; OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack */
; #else
; (void)OSTaskCreateExt(OS_TaskIdle,
; (void *)0, /* No arguments passed to OS_TaskIdle() */
; &OSTaskIdleStk[0], /* Set Top-Of-Stack */
; OS_IDLE_PRIO, /* Lowest priority level */
; OS_TASK_IDLE_ID,
; &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack */
; OS_TASK_IDLE_STK_SIZE,
; (void *)0, /* No TCB extension */
; OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack */
; #endif
; #else
; #if OS_STK_GROWTH == 1
; (void)OSTaskCreate(OS_TaskIdle,
; (void *)0,//恢复了x1122,//改了,
; SOURCE LINE # 750
MOV DPTR,#0FFFFH
LCALL ?C?ADDXBP
MOV A,#09H
MOVX @DPTR,A
MOV R3,#01H
MOV R2,#HIGH (OSTaskIdleStk+01FFH)
MOV R1,#LOW (OSTaskIdleStk+01FFH)
MOV DPTR,#0FFFDH
LCALL ?C?ADDXBP
LCALL ?C?PSTXDATA
MOV R3,#00H
MOV R2,#00H
MOV R1,#00H
MOV DPTR,#0FFFDH
LCALL ?C?ADDXBP
LCALL ?C?PSTXDATA
MOV R3,#0FFH
MOV R2,#HIGH (_?OS_TaskIdle)
MOV R1,#LOW (_?OS_TaskIdle)
LJMP _?OSTaskCreate
; END OF _?OS_InitTaskIdle
; &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
; OS_IDLE_PRIO);
; #else
; (void)OSTaskCreate(OS_TaskIdle,
; (void *)0,
; &OSTaskIdleStk[0],
; OS_IDLE_PRIO);
; #endif
; #endif
; }
; /*$PAGE*/
; /*
; *********************************************************************************************************
; * INITIALIZATION
; * CREATING THE STATISTIC TASK
; *
; * Description: This function creates the Statistic Task.
; *
; * Arguments : none
; *
; * Returns : none
; *********************************************************************************************************
; */
;
; #if OS_TASK_STAT_EN > 0
; static void OS_InitTaskStat (void) LG_REENTRANT
; {
; #if OS_TASK_CREATE_EXT_EN > 0
; #if OS_STK_GROWTH == 1
; (void)OSTaskCreateExt(OS_TaskStat,
; (void *)0, /* No args passed to OS_TaskStat()*/
; &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1], /* Set Top-Of-Stack */
; OS_STAT_PRIO, /* One higher than the idle task */
; OS_TASK_STAT_ID,
; &OSTaskStatStk[0], /* Set Bottom-Of-Stack */
; OS_TASK_STAT_STK_SIZE,
; (void *)0, /* No TCB extension */
; OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* Enable stack checking + clear */
; #else
; (void)OSTaskCreateExt(OS_TaskStat,
; (void *)0, /* No args passed to OS_TaskStat()*/
; &OSTaskStatStk[0], /* Set Top-Of-Stack */
; OS_STAT_PRIO, /* One higher than the idle task */
; OS_TASK_STAT_ID,
; &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1], /* Set Bottom-Of-Stack */
; OS_TASK_STAT_STK_SIZE,
; (void *)0, /* No TCB extension */
; OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* Enable stack checking + clear */
; #endif
; #else
; #if OS_STK_GROWTH == 1
; (void)OSTaskCreate(OS_TaskStat,
; (void *)0, /* No args passed to OS_TaskStat()*/
; &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1], /* Set Top-Of-Stack */
; OS_STAT_PRIO); /* One higher than the idle task */
; #else
; (void)OSTaskCreate(OS_TaskStat,
; (void *)0, /* No args passed to OS_TaskStat()*/
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -