⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_core.src

📁 AT89C55WD上移植的ucos-ii, 非常有用, 串口观看输出与调试。
💻 SRC
📖 第 1 页 / 共 5 页
字号:
; #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 + -