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

📄 os_cpu_c.src

📁 本文面向首次接触uC/OS-II的程序员
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; ;	B
; ;	ACC								
; ;	HARDWARE STACK CONTENT(NOT INCLUDE REGISTERS)			2+SmltStkSize 						
; ;	HARDWARE STACK SIZE(INCLUDE REGISTERS)					1+SmltStkSize  		
; ;	SIMULATED STACK CONTENT									1				
; ;	?C_IBP													0
; 			
; *********************************************************************************************************
; */
; OS_STK  *OSTaskStkInit (void (*task)(void *pd) reentrant, void *os_pdata, OS_STK *ptos, INT16U opt) reentrant

	RSEG  ?PR?_?OSTaskStkInit?OS_CPU_C
_?OSTaskStkInit:
	USING	0
			; SOURCE LINE # 179
	MOV  	DPTR,#0FFFDH
	LCALL	?C?ADDXBP
	LCALL	?C?PSTXDATA
	MOV  	DPTR,#0FFFDH
	LCALL	?C?ADDXBP
; {
; 	OS_STK *stk;
; 
;     os_pdata = os_pdata;
			; SOURCE LINE # 183
	MOV  	DPTR,#06H
	LCALL	?C?XBPOFF
	LCALL	?C?PLDXDATA
	MOV  	DPTR,#06H
	LCALL	?C?XBPOFF
	LCALL	?C?PSTXDATA
;     opt    = opt;                               //opt没被用到,保留此语句防止告警产生
			; SOURCE LINE # 184
	MOV  	DPTR,#0CH
	LCALL	?C?XBPOFF
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#0CH
	LCALL	?C?XBPOFF
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
;     
;     stk    = (OS_STK *)ptos;                    //用户堆栈最低有效地址
			; SOURCE LINE # 186
	MOV  	DPTR,#09H
	LCALL	?C?XBPOFF
	LCALL	?C?PLDXDATA
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	LCALL	?C?PSTXDATA
; 
; 	*stk++ = 2 + 13;							/* tow bytes of return address and 13 byte registers */
			; SOURCE LINE # 188
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#0FH
	LCALL	?C?CSTPTR
;     *stk++ = (INT16U)task & 0xFF;               /* low byte of return address	*/
			; SOURCE LINE # 189
	MOV  	DPTR,#03H
	LCALL	?C?XBPOFF
	LCALL	?C?PLDXDATA
	MOV  	R7,AR1
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,R7
	LCALL	?C?CSTPTR
; 	*stk++ = (INT16U)task >> 8;           	    /* high byte of return address	*/
			; SOURCE LINE # 190
	MOV  	DPTR,#03H
	LCALL	?C?XBPOFF
	LCALL	?C?PLDXDATA
	MOV  	A,R2
	MOV  	R7,A
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,R7
	LCALL	?C?CSTPTR
;     *stk++ = 0x0A;                              /* ACC		*/
			; SOURCE LINE # 191
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#0AH
	LCALL	?C?CSTPTR
;     *stk++ = 0x0B;                              /* B		*/
			; SOURCE LINE # 192
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#0BH
	LCALL	?C?CSTPTR
;     *stk++ = 0xD1;                              /* DPH		*/
			; SOURCE LINE # 193
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#0D1H
	LCALL	?C?CSTPTR
;     *stk++ = 0xD0;                              /* DPL		*/
			; SOURCE LINE # 194
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#0D0H
	LCALL	?C?CSTPTR
; 	*stk++ = 0x00;                              /* PSW		*/
			; SOURCE LINE # 195
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	CLR  	A
	LCALL	?C?CSTPTR
;     *stk++ = 0x00;                              /* R0		*/
			; SOURCE LINE # 196
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	CLR  	A
	LCALL	?C?CSTPTR
;     *stk++ = 0x01;                              /* R1		*/
			; SOURCE LINE # 197
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#01H
	LCALL	?C?CSTPTR
;     *stk++ = 0x02;                              /* R2		*/
			; SOURCE LINE # 198
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#02H
	LCALL	?C?CSTPTR
;     *stk++ = 0x03;                              /* R3		*/
			; SOURCE LINE # 199
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#03H
	LCALL	?C?CSTPTR
;     *stk++ = 0x04;                              /* R4		*/
			; SOURCE LINE # 200
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#04H
	LCALL	?C?CSTPTR
;     *stk++ = 0x05;                              /* R5		*/
			; SOURCE LINE # 201
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#05H
	LCALL	?C?CSTPTR
;     *stk++ = 0x06;                              /* R6		*/
			; SOURCE LINE # 202
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#06H
	LCALL	?C?CSTPTR
;     *stk++ = 0x07;                              /* R7		*/
			; SOURCE LINE # 203
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIXDATA
	MOV  	A,#07H
	LCALL	?C?CSTPTR
;         
;     return ((void *)ptos);
			; SOURCE LINE # 205
	MOV  	DPTR,#09H
	LCALL	?C?XBPOFF
	LCALL	?C?PLDXDATA
; }
			; SOURCE LINE # 206
?C0007:
	MOV  	DPTR,#0EH
	LJMP 	?C?ADDXBP
; END OF _?OSTaskStkInit

; 
; /*$PAGE*/
; 
; /*
; *********************************************************************************************************
; *                                           TASK SWITCH HOOK
; *
; * Description: This function is called when a task switch is performed.  This allows you to perform other
; *              operations during a context switch.
; *
; * Arguments  : none
; *
; * Note(s)    : 1) Interrupts are disabled during this call.
; *              2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB of the task that
; *                 will be 'switched in' (i.e. the highest priority task) and, 'OSTCBCur' points to the 
; *                 task being switched out (i.e. the preempted task).
; *********************************************************************************************************
; */
; #if OS_CPU_HOOKS_EN > 0 
; void  OSTaskSwHook (void) reentrant

	RSEG  ?PR?_?OSTaskSwHook?OS_CPU_C
_?OSTaskSwHook:
			; SOURCE LINE # 226
; {
; }
			; SOURCE LINE # 228
	RET  	
; END OF _?OSTaskSwHook

; #endif
; 
; /*
; *********************************************************************************************************
; *                                           OSTCBInit() HOOK
; *
; * Description: This function is called by OS_TCBInit() after setting up most of the TCB.
; *
; * Arguments  : ptcb    is a pointer to the TCB of the task being created.
; *
; * Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
; *********************************************************************************************************
; */
; #if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
; void  OSTCBInitHook (OS_TCB *ptcb) reentrant

	RSEG  ?PR?_?OSTCBInitHook?OS_CPU_C
_?OSTCBInitHook:
	USING	0
			; SOURCE LINE # 243
	MOV  	DPTR,#0FFFDH
	LCALL	?C?ADDXBP
	LCALL	?C?PSTXDATA
; {
;     ptcb = ptcb;                                           /* Prevent Compiler warning                 */
			; SOURCE LINE # 245
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	LCALL	?C?PLDXDATA
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	LCALL	?C?PSTXDATA
; }
			; SOURCE LINE # 246
	MOV  	DPTR,#03H
	LJMP 	?C?ADDXBP
; END OF _?OSTCBInitHook

; #endif
; 
; 
; /*
; *********************************************************************************************************
; *                                               TICK HOOK
; *
; * Description: This function is called every tick.
; *
; * Arguments  : none
; *
; * Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
; *********************************************************************************************************
; */
; #if OS_CPU_HOOKS_EN > 0 
; void  OSTimeTickHook (void) reentrant

	RSEG  ?PR?_?OSTimeTickHook?OS_CPU_C
_?OSTimeTickHook:
			; SOURCE LINE # 262
; {
; }
			; SOURCE LINE # 264
	RET  	
; END OF _?OSTimeTickHook

; #endif
; 
; 
; /*
; *********************************************************************************************************
; *												中断服务程序外挂
; *		NOTE  :  注意:所有中断外挂都在临界区之外,用户可以自行控制进/退临界区
; *********************************************************************************************************
; */
; #if OS_ISR_T1_EN > 0
; void	OSISR_T1HOOK (void) reentrant
; {
; 		/* 请在这里输入中断服务程序				*/
; }
; #endif
; 
; #if OS_ISR_INT0_EN > 0
; void	OSISR_INT0HOOK (void) reentrant
; {
; 		/* 请在这里输入中断服务程序				*/
; }
; #endif
; 
; #if OS_ISR_INT1_EN > 0
; void	OSISR_INT1HOOK (void) reentrant
; {
; 		/* 请在这里输入中断服务程序				*/
; }
; #endif
; 
; #if OS_ISR_S0_EN > 0
; void	OSISR_S0HOOK (void) reentrant

	RSEG  ?PR?_?OSISR_S0HOOK?OS_CPU_C
_?OSISR_S0HOOK:
			; SOURCE LINE # 296
; {
; 		/* 请在这里输入中断服务程序				*/
; }
			; SOURCE LINE # 299
	RET  	
; END OF _?OSISR_S0HOOK

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -