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

📄 pie.asm

📁 uc/os基于TI tms320dsp28312的移植
💻 ASM
字号:

; Testcase to demonstrate the Peripheral Interrupt Exception (PIE).
 
         
        .def   _OSStartHighRdy
        .def   _OSIntCtxSw
        .def   _OSCtxSw
        .def   _OST1PINT_ISR
        .def   _OSCAPINT3_ISR
        .def   _OSMRINTA_ISR
        .def   _OSSCIRXINTA_ISR
        .def   _OSSCITXINTA_ISR
        .def   _OSSCIRXINTB_ISR
        .def   _OSSCITXINTB_ISR
        .def   _OSECAN1INTA_ISR
         
        .ref   _Tasks_Stk
        .ref   _OSTCBCur
        .ref   _OSTCBHighRdy
        .ref   _OSPre
        .ref   _OSPreSP 
        .ref   _OSPrioCur
        .ref   _OSPrioHighRdy
        .ref   _OSIntNesting
        .ref   _OSIntExit
        .ref   _OSTimeTick
        .ref   _OSRunning
        .ref   _OSInterrupt
        .ref   _T1PINT_ISR
        .ref   _CAPINT3_ISR
        .ref   _MRINTA_ISR
        .ref   _SCIRXINTA_ISR
        .ref   _SCITXINTA_ISR
        .ref   _SCIRXINTB_ISR
        .ref   _SCITXINTB_ISR
        .ref   _ECAN1INTA_ISR
        
        
  


; -------------------------------------------------------
; PIE Interrupt Service Routines
; -------------------------------------------------------
        .sect "pie_isr"
; -------------------------------------------------------
; PIE Interrupts 1 - 8 are in Group 1 (Core INT1)
; -------------------------------------------------------
.word 
_OST1PINT_ISR:                       ; int 12 of 96
        
        ASP                                                                                                                               
        PUSH AR1H:AR0H
        PUSH XAR2
        PUSH XAR3
        PUSH XAR4
        PUSH XAR5
        PUSH XAR6
        PUSH XAR7
        PUSH XT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
        PUSH RPC
        PUSH ST1:DP 
               
        MOVL XAR3,#_OSIntNesting
        INC *XAR3
        
        LCR _T1PINT_ISR
        LCR _OSTimeTick
        LCR _OSIntExit 
        SETC INTM
        
	    PUSH ST1
        POP  AL
        AND  AL,#0xffef
        
        POP  DP
        POP  AH
        AND  AH,#0x10
        OR   AL,AH
        PUSH AL
        POP  ST1
        POP RPC
        POP XT
        POP XAR7
        POP XAR6
        POP XAR5
        POP XAR4
        POP XAR3
        POP XAR2
        POP AR1H:AR0H
        NASP                    
        IRET
        
_OSCAPINT3_ISR:
		ASP 
        PUSH AR1H:AR0H
        PUSH XAR2
        PUSH XAR3
        PUSH XAR4
        PUSH XAR5
        PUSH XAR6
        PUSH XAR7
        PUSH XT
        PUSH RPC
        PUSH ST1:DP 
               
        MOVL XAR3,#_OSIntNesting
        INC *XAR3
        
        LCR _CAPINT3_ISR
        LCR _OSIntExit 
        SETC INTM
        
	    PUSH ST1
        POP  AL
        AND  AL,#0xffef
        
        POP  DP
        POP  AH
        AND  AH,#0x10
        OR   AL,AH
        PUSH AL
        POP  ST1 
        POP RPC
        POP XT
        POP XAR7
        POP XAR6
        POP XAR5
        POP XAR4
        POP XAR3
        POP XAR2
        POP AR1H:AR0H
        NASP                    
        IRET       

_OSMRINTA_ISR:
		ASP 
        PUSH AR1H:AR0H
        PUSH XAR2
        PUSH XAR3
        PUSH XAR4
        PUSH XAR5
        PUSH XAR6
        PUSH XAR7
        PUSH XT
        PUSH RPC
        PUSH ST1:DP 
               
        MOVL XAR3,#_OSIntNesting
        INC *XAR3
        
        LCR _MRINTA_ISR
        LCR _OSIntExit 
        SETC INTM
        
	    PUSH ST1
        POP  AL
        AND  AL,#0xffef
        
        POP  DP
        POP  AH
        AND  AH,#0x10
        OR   AL,AH
        PUSH AL
        POP  ST1 
        POP RPC
        POP XT
        POP XAR7
        POP XAR6
        POP XAR5
        POP XAR4
        POP XAR3
        POP XAR2
        POP AR1H:AR0H
        NASP                    
        IRET       
        
_OSSCIRXINTA_ISR:
		ASP 
        PUSH AR1H:AR0H
        PUSH XAR2
        PUSH XAR3
        PUSH XAR4
        PUSH XAR5
        PUSH XAR6
        PUSH XAR7
        PUSH XT
        PUSH RPC
        PUSH ST1:DP 
               
        MOVL XAR3,#_OSIntNesting
        INC *XAR3
        
        LCR _SCIRXINTA_ISR
        LCR _OSIntExit 
        SETC INTM
        
	    PUSH ST1
        POP  AL
        AND  AL,#0xffef
        
        POP  DP
        POP  AH
        AND  AH,#0x10
        OR   AL,AH
        PUSH AL
        POP  ST1 
        POP RPC
        POP XT
        POP XAR7
        POP XAR6
        POP XAR5
        POP XAR4
        POP XAR3
        POP XAR2
        POP AR1H:AR0H
        NASP                    
        IRET       
        
_OSSCITXINTA_ISR:
		ASP 
        PUSH AR1H:AR0H
        PUSH XAR2
        PUSH XAR3
        PUSH XAR4
        PUSH XAR5
        PUSH XAR6
        PUSH XAR7
        PUSH XT
        PUSH RPC
        PUSH ST1:DP 
               
        MOVL XAR3,#_OSIntNesting
        INC *XAR3
        
        LCR _SCITXINTA_ISR
        LCR _OSIntExit 
        SETC INTM
        
	    PUSH ST1
        POP  AL
        AND  AL,#0xffef
        
        POP  DP
        POP  AH
        AND  AH,#0x10
        OR   AL,AH
        PUSH AL
        POP  ST1 
        POP RPC
        POP XT
        POP XAR7
        POP XAR6
        POP XAR5
        POP XAR4
        POP XAR3
        POP XAR2
        POP AR1H:AR0H
        NASP                    
        IRET       

_OSSCIRXINTB_ISR:
		ASP 
        PUSH AR1H:AR0H
        PUSH XAR2
        PUSH XAR3
        PUSH XAR4
        PUSH XAR5
        PUSH XAR6
        PUSH XAR7
        PUSH XT
        PUSH RPC
        PUSH ST1:DP 
               
        MOVL XAR3,#_OSIntNesting
        INC *XAR3
        
        LCR _SCIRXINTB_ISR
        LCR _OSIntExit 
        SETC INTM
        
	    PUSH ST1
        POP  AL
        AND  AL,#0xffef
        
        POP  DP
        POP  AH
        AND  AH,#0x10
        OR   AL,AH
        PUSH AL
        POP  ST1 
        POP RPC
        POP XT
        POP XAR7
        POP XAR6
        POP XAR5
        POP XAR4
        POP XAR3
        POP XAR2
        POP AR1H:AR0H
        NASP                    
        IRET       
        
_OSSCITXINTB_ISR:
		ASP 
        PUSH AR1H:AR0H
        PUSH XAR2
        PUSH XAR3
        PUSH XAR4
        PUSH XAR5
        PUSH XAR6
        PUSH XAR7
        PUSH XT
        PUSH RPC
        PUSH ST1:DP 
               
        MOVL XAR3,#_OSIntNesting
        INC *XAR3
        
        LCR _SCITXINTB_ISR
        LCR _OSIntExit 
        SETC INTM
        
	    PUSH ST1
        POP  AL
        AND  AL,#0xffef
        
        POP  DP
        POP  AH
        AND  AH,#0x10
        OR   AL,AH
        PUSH AL
        POP  ST1 
        POP RPC
        POP XT
        POP XAR7
        POP XAR6
        POP XAR5
        POP XAR4
        POP XAR3
        POP XAR2
        POP AR1H:AR0H
        NASP                    
        IRET       
        
_OSECAN1INTA_ISR:
		ASP 
        PUSH AR1H:AR0H
        PUSH XAR2
        PUSH XAR3
        PUSH XAR4
        PUSH XAR5
        PUSH XAR6
        PUSH XAR7
        PUSH XT
        PUSH RPC
        PUSH ST1:DP 
               
        MOVL XAR3,#_OSIntNesting
        INC *XAR3
        
        LCR _ECAN1INTA_ISR
        LCR _OSIntExit 
        SETC INTM
        
	    PUSH ST1
        POP  AL
        AND  AL,#0xffef
        
        POP  DP
        POP  AH
        AND  AH,#0x10
        OR   AL,AH
        PUSH AL
        POP  ST1 
        POP RPC
        POP XT
        POP XAR7
        POP XAR6
        POP XAR5
        POP XAR4
        POP XAR3
        POP XAR2
        POP AR1H:AR0H
        NASP                    
        IRET       



_OSCtxSw:
		ASP
		PUSH AR1H:AR0H
		PUSH XAR2
		PUSH XAR3
		PUSH XAR4
		PUSH XAR5
		PUSH XAR6
		PUSH XAR7
		PUSH XT
		PUSH RPC
		PUSH ST1:DP 
		
		
		
		
		
restore1:		
	
		
		
		MOVL  XAR3,#_OSTCBCur
		MOVL  XAR3,*XAR3
		MOV   AL,SP
		MOV  *XAR3,AL
		MOV   AR5,AL
		
		MOVL  XAR3,#_OSTCBHighRdy
		MOVL  XAR3,*XAR3 
		
		MOVL  XAR4,#_OSTCBCur
		MOVL  *XAR4,XAR3
	
		MOV   AL,*XAR3
		MOV   SP,AL
		
		
		MOVL XAR3,#_OSPrioHighRdy
		MOV  AL,*XAR3
		CMPB AL,#0x0
		SB   task0_entry,EQ
		
		MOVL  XAR3,#_OSPrioCur
        MOV   AH,*XAR3
        MOV  *XAR3,AL
        MOV   AR7,AL
        MOV   AR6,AH
        CMPB  AH,#0x0
		SB   stk_change,NEQ
		MOVL  XAR4,#_OSPre
        MOV   AH,*XAR4
        CMPB  AH,#0x0
	    SB   change_in,EQ
	    
		MOV   AR0,AH
		BAR pre_ready,AR7,AR0,NEQ
		
		LB restore2

		
		
task0_entry:		
        MOVL  XAR3,#_OSPrioCur
        MOV   AH,*XAR3
        MOVL  XAR4,#_OSPre
        MOV   *XAR4,AH
		MOV  *XAR3,AL
		MOVL  XAR3,#_OSPreSP
		MOV   AL,AR5
		MOV   *XAR3,AL
		LB restore2
pre_ready:
        MOVL XAR3,#_OSPre
        MOV  AL,*XAR3
        MOV  AR6,AL
        MOVL XAR3,#_OSPreSP
        MOV  AL,*XAR3
        MOV  AR5,AL
		
stk_change:
        
        MOVL XAR3,#_Tasks_Stk
        MOVL ACC,XAR3
        MOV AR0,#0x400
cal1_addr:
		DEC AR6
		SB  store1_add,EQ
        ADD ACC,AR0
        LB cal1_addr
store1_add:		
		ADD ACC,AR5
		SUB ACC,AR0
		MOVL XAR3,ACC
		MOV AL,AR5
		MOV AH,AR5
		ANDB AL,#1
		SB start1_change,EQ
		INC AH
start1_change:
        MOVL XAR5,#0
        MOV AR5,AH
change1:		
		BAR change_in,AR5,AR0,EQ
	    MOVL ACC,*--XAR5
		MOVL *--XAR3,ACC
		LB change1
change_in:
        MOV  AR0,#0x400		
       
        MOVL  XAR3,#_Tasks_Stk
        MOVL ACC,XAR3
cal2_addr:       
        DEC AR7
        SB  store2_add,EQ
        ADD ACC,AR0
        LB cal2_addr
store2_add:		
		ADD ACC,SP
		SUB ACC,AR0
		MOVL XAR3,ACC
		MOV AL,SP
		MOV AH,SP
		ANDB AL,#1
		SB start2_change,EQ
		INC AH
		
start2_change:
        MOVL XAR1,#0
		MOV AR1,AH
change2:				
		BAR restore2,AR1,AR0,EQ
	
		MOVL ACC,*--XAR3
	
		MOVL *--XAR1,ACC
		
		LB change2
		
 	   
restore2:
        PUSH ST1
        POP  AL
        AND  AL,#0xffef
        
        POP  DP
        POP  AH
        AND  AH,#0x10
        OR   AL,AH
        PUSH AL
        POP  ST1
      
	    POP RPC
		POP XT
		POP XAR7
		POP XAR6
		POP XAR5
		POP XAR4
		POP XAR3
		POP XAR2
		POP AR1H:AR0H
		NASP
		
		
		IRET
_OSStartHighRdy:
	    
		MOVL XAR3,#_OSTCBHighRdy
		MOVL XAR3,*XAR3
		MOV AL,*XAR3
		MOV SP,AL
		
		MOVL XAR3,#_OSRunning
		OR  *XAR3,#1
		
		MOVL XAR3,#_OSInterrupt
		OR  *XAR3,#1
		
		
		
		MOVL XAR3,#_OSPrioHighRdy
		MOV  AL,*XAR3
		CMPB AL,#0x0
		SB   restore2,EQ
		MOV  AR7,AL
		LB  change_in
_OSIntCtxSw:
		SUBB SP,#4
		LB  restore1








⌨️ 快捷键说明

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