www.pudn.com > F2812-UCOS.rar > OS_CPU_A.ASM


;                   INT  SVC system 
* Copyright (c) 2007,南京因泰莱电器股份有限公司开发部 
* All rights reserved. 
*  
* 文件名称:OS_CPU_A.asm 
* 摘    要:实现F2812操作系统UCOS-II的中断任务切换 
*  
* 当前版本:0.9 
* 作    者:洪远洋  
* 完成日期:2006年1月5日 
* 
* 取代版本:0.1 
* 原作者  :洪远洋 
* 完成日期:2007年1月4日 
* 
* 
* 
* 
.page 
.text 
 
_OSIntCtxSwExe: 
	.ref _OSTCBHighRdy 
	.ref _OSTCBCur 
	.ref _OSPrioHighRdy 
	.ref _OSPrioCur 
	.ref _OSIntCtxFlag 
	.global _OSIntCtxSwExe 
	 
	 MOVW ACC, #0               ; 清零_OSIntCtxFlag,保证下一次切换进行 
	 MOVW @_OSIntCtxFlag, ACC 
	     	  
	 MOVW DP,#_OSTCBHighRdy	 	; OSTCBCur = OSTCBHighRdy 
     MOVL ACC,@_OSTCBHighRdy     
     MOVW DP,#_OSTCBCur 
     MOVL @_OSTCBCur,ACC         
	 
	 
     MOVW DP,#_OSPrioHighRdy    	;OSPrioCur = OSPrioHighRdy 
     MOV  AL,@_OSPrioHighRdy     
     MOVW DP,#_OSPrioCur 
     MOV  @_OSPrioCur,AL         
;=================================================================================	      
	 
	 
	 MOVW    DP,#_OSTCBHighRdy	 ;SP = OSTCBhighRdy->OSTCBStkPtr	 
     MOVL    XAR4,@_OSTCBHighRdy    
     MOV     AL,*+XAR4[0]  
     MOV     @SP,AL 
      
      
     POP    RPC                  ;取出新任务堆栈中的CONTEXT 
     POP	XT 
     POP    AR1H:AR0H 
     POP	XAR2 
     POP	XAR3 
     POP	XAR4 
     POP	XAR5 
     POP	XAR6 
     POP	XAR7 
     IRET 
	.end