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

📄 os_cpu_a.asm

📁 ucos在F2812上的移植源码 针对2812EVM3开发板
💻 ASM
字号:
.page
.text

_OSIntCtxSw:
	.ref _OSTCBHighRdy
	.ref _OSTCBCur
	.ref _OSPrioHighRdy
	.ref _OSPrioCur
	.global _OSIntCtxSw
	
	 ;模拟返回中断
	 ;保存当前环境
	 
;********************************************************************************
	 MOVW   DP,#_OSTCBCur
     MOVL   XAR4,@_OSTCBCur   		; |165| 
     MOVL   XAR4,*+XAR4[0]        	; |165|      

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;保存被切换的RPC
	 SUBB  SP,#2
	 
	 POP   AL
	 MOVB XAR0,#17     
	 MOV   *+XAR4[AR0],AL
	  
	 POP   AL
	 MOVB XAR0,#16     
	 MOV   *+XAR4[AR0],AL
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          

     POP    ACC			        		
     MOV    *+XAR4[2],AH	    	;保存task addr
     MOV    *+XAR4[3],AL        	
     
      
        
     POP 	ACC
     MOVB  	XAR0,#15     
     MOV   	*+XAR4[AR0],AH			;保存DBGSTAT          
     MOVB  	XAR0,#14     
     MOV  	*+XAR4[AR0],AL			;保存 IER
      
     POP 	ACC  
     MOVB  	XAR0,#13     
     MOV  	*+XAR4[AR0],AH			;保存 DP
     MOVB  	XAR0,#12     
     MOV  	*+XAR4[AR0],AL			;保存 ST1
      
     POP 	ACC
     MOVB  	XAR0,#11     
     MOV  	*+XAR4[AR0],AH			;保存 AR1           
     MOVB  	XAR0,#10     
     MOV  	*+XAR4[AR0],AL			;保存 AR0
      
      
     POP 	ACC
     MOVB  	XAR0,#9     
     MOV  	*+XAR4[AR0],AH			;保存 PH           
     MOVB  	XAR0,#8     
     MOV  	*+XAR4[AR0],AL			;保存 PL
      
     POP 	ACC
     MOVB  	XAR0,#7     
     MOV  	*+XAR4[AR0],AH			;保存 AH           
     MOVB  	XAR0,#6     
     MOV  	*+XAR4[AR0],AL			;保存 AL
      
     POP 	ACC
     MOVB  	XAR0,#5     
     MOV  	*+XAR4[AR0],AH			;保存 T     
     MOVB  	XAR0,#4     
     MOV  	*+XAR4[AR0],AL			;保存 ST0      
     
     POP    AL	
;********************************************************************************     

;=================================================================================	
	 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        
;=================================================================================	     
     
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
     ;模拟中断
     ;装载新任务的cpu环境
     
     
     MOVW   DP,#_OSTCBHighRdy
     MOVL   XAR4,@_OSTCBHighRdy   		; |165| 
     MOVL   XAR4,*+XAR4[0]        	; |165| 
                 
                    
      ;模拟中断      
      PUSH AL
     
                    
      MOVB XAR0,#4     
      MOV  AL,*+XAR4[AR0]			;得到 ST0                                    
      MOVB XAR0,#5     
      MOV  AH,*+XAR4[AR0]			;得到 T      
      PUSH ACC
     
            
      MOVB XAR0,#6     
      MOV  AL,*+XAR4[AR0]			;得到 AL
      MOVB XAR0,#7     
      MOV  AH,*+XAR4[AR0]			;得到 AH
      PUSH ACC            
            
      MOVB XAR0,#8     
      MOV  AL,*+XAR4[AR0]			;得到 PL            
      MOVB XAR0,#9     
      MOV  AH,*+XAR4[AR0]			;得到 PH
      PUSH ACC
            
            
      MOVB XAR0,#10     
      MOV  AL,*+XAR4[AR0]			;得到 AR0            
      MOVB XAR0,#11     
      MOV  AH,*+XAR4[AR0]			;得到 AR1
      PUSH ACC
            
      MOVB XAR0,#12     
      MOV  AL,*+XAR4[AR0]			;得到 ST1      
      MOVB XAR0,#13     
      MOV  AH,*+XAR4[AR0]			;得到 DP
      PUSH ACC                  
      
      MOVB XAR0,#14     
      MOV  AL,*+XAR4[AR0]			;得到 IER            
      MOVB XAR0,#15     
      MOV  AH,*+XAR4[AR0]			;得到 DBGSTAT
      PUSH ACC
	  
      MOV     AH,*+XAR4[2]	    	;task addr
      MOV     AL,*+XAR4[3]      
      PUSH    ACC		
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     


;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;恢复的RPC	 

	 MOVB XAR0,#17     
	 MOV   *+XAR4[AR0],AH	  	 
	 MOVB XAR0,#16     
	 MOV   *+XAR4[AR0],AL
	 PUSH   ACC
	 POP RPC	 
	 
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                
      IRET
	.end
	
	

⌨️ 快捷键说明

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