www.pudn.com > F2812-UCOS.rar > OS_TickISR.asm


.page 
.text 
_OSTickISR: 
	.ref _OSTimeTick 
	.ref _OSIntEnter 
    .ref _OSTCBCur 
    .ref _OSIntExit 
    .ref _OSIntCtxFlag 
    .ref _OSIntCtxSwExe 
  	.global _OSTickISR	 
     
 
	PUSH	XAR7 
	PUSH	XAR6 
    PUSH	XAR5 
	PUSH	XAR4 
	PUSH	XAR3 
	PUSH	XAR2 
	PUSH	AR1H:AR0H 
	PUSH  	XT  
	PUSH    RPC 
 
    MOV       AL,  #0X01 
	MOV       *(0:0xce1), @AL       ;手动清除中断应答寄存器中标志位 
	 
	;MOVW      DP,#_OSIntNesting     ;提示uc/OS-II 进入中断 
    ;INC       @_OSIntNesting        ;      
     
    LCR _OSIntEnter 
    LCR _OSTimeTick     
    LCR _OSIntExit 
     
                                     ;判断是否有抢占发生,有则进行任务切换 
    CMP @_OSIntCtxFlag, #1		     ;并保存本次任务的现场 
    SB  BACK, NEQ 
     
    MOVW     DP,#_OSTCBCur	          ; OSTCBCur->OSTCBStkPtr = SP 
    MOVL     XAR4,@_OSTCBCur          ;  
    MOV      AL,SP      
    MOV      *+XAR4[0],AL             ; SAVE the context 
     
    SUB @_OSIntCtxFlag, #1            ;CLEAR THE _OSIntCtxFlag 
    LC       _OSIntCtxSwExe 
 ;  NASP 
 
     
BACK:   
    POP  RPC    
    POP	XT 
    POP AR1H:AR0H 
    POP	XAR2 
    POP	XAR3 
    POP	XAR4 
    POP	XAR5 
    POP	XAR6 
    POP	XAR7 
    IRET 
	.end