📄 tct.asm
字号:
.word _TCT_HISR_Shell+0
.bss _TCT_HISR_Shell_Addr,1
;
.globl _TCT_Signal_Shell_Addr
.word 1,_TCT_Signal_Shell_Addr
.word _TCC_Signal_Shell+0
.bss _TCT_Signal_Shell_Addr,1
;
.globl _TCT_Disable_Interrupts
.word 1,_TCT_Disable_Interrupts
.word 00010500h ; Customize this for your application
;modify by jin enable erint0->dma1 2000.12.13
.bss _TCT_Disable_Interrupts,1
;
.text
;/*************************************************************************/
;/* */
;/* FUNCTION */
;/* */
;/* TCT_Control_Interrupts */
;/* */
;/* DESCRIPTION */
;/* */
;/* This function enables and disables interrupts as specified by */
;/* the caller. Interrupts disabled by this call are left disabled */
;/* until the another call is made to enable them. */
;/* */
;/* AUTHOR */
;/* */
;/* William E. Lamie, Accelerated Technology, Inc. */
;/* */
;/* CALLED BY */
;/* */
;/* Application */
;/* */
;/* CALLS */
;/* */
;/* None */
;/* */
;/* INPUTS */
;/* */
;/* new_level New interrupt enable level */
;/* */
;/* OUTPUTS */
;/* */
;/* old_level Previous interrupt enable */
;/* level */
;/* */
;/* HISTORY */
;/* */
;/* NAME DATE REMARKS */
;/* */
;/* D. Foxall 02-07-1996 TMS320C30 version 1.0 */
;/* J. Trippi 03-11-1997 Modified for large memory model */
;/* */
;/*************************************************************************/
.global _TCT_Control_Interrupts
_TCT_Control_Interrupts:
;INT TCT_Control_Interrupts(INT new_level);
;{
; /* register use: R0 - previous interrupt level (return value)
; R1 - new interrupt level (function argument) */
;
; /* Lockout interrupts. */
;
RPTS 0
AND GIENOT,ST ;XIONGZHANGXUE
; LDI 0,IE ; Lockout interrupts
; NOP ; Interrupt lockout might not occur
; NOP ; for a few instructions
; AND GIENOT,ST ; Clear GIE bit in STatus register
;
.if NU_BIG
LDP @_TCD_Interrupt_Level ; Load Data Page Pointer
.endif
.if NU_STACK
PUSH FP ; Save caller's frame pointer
LDI SP,FP ; Setup local frame
.endif
;
; /* Save the old interrupt level. */
;
LDI @_TCD_Interrupt_Level,R0 ; Save current value
;
; /* Setup the new level. */
; TCD_Interrupt_Level = new_level;
;
.if NU_STACK
LDI *-FP(2),IE ; Pickup new value
.else
LDI AR2,IE
.endif
STI IE,@_TCD_Interrupt_Level ; Assign new interrupt level,
;
; /* Determine if interrupts need to be enabled. */
;
; /* return value is already in R0 */
; return(old_level);
;
.if NU_STACK
POP FP ; Restore frame pointer
.endif
RETI ; Return, setting GIE bit in ST
;
;}
;
;
;/*************************************************************************/
;/* */
;/* FUNCTION */
;/* */
;/* TCT_Local_Control_Interrupts */
;/* */
;/* DESCRIPTION */
;/* */
;/* This function enables and disables interrupts as specified by */
;/* the caller. Interrupts disabled by this call are local to the */
;/* caller. */
;/* */
;/* AUTHOR */
;/* */
;/* William E. Lamie, Accelerated Technology, Inc. */
;/* */
;/* CALLED BY */
;/* */
;/* Application */
;/* */
;/* CALLS */
;/* */
;/* None */
;/* */
;/* INPUTS */
;/* */
;/* new_level New interrupt enable level */
;/* */
;/* OUTPUTS */
;/* */
;/* old_level Previous interrupt enable */
;/* level */
;/* */
;/* HISTORY */
;/* */
;/* NAME DATE REMARKS */
;/* */
;/* D. Foxall 02-07-1996 TMS320C30 version 1.0 */
;/* J. Trippi 03-11-1997 Modified for large memory model */
;/* */
;/*************************************************************************/
.global _TCT_Local_Control_Interrupts
_TCT_Local_Control_Interrupts:
;INT TCT_Local_Control_Interrupts(INT new_level);
;{
; /* register use: R0 - previous interrupt level (return value)
; R1 - new interrupt level (function argument) */
;
.if NU_STACK
PUSH FP ; Save caller's frame pointer
LDI SP,FP ; Setup local frame
.endif
;
; /* Save the old level and setup the new level. */
;
LDI IE,R0 ; Pickup IE register
;
; /* Lockout interrupts */
;
RPTS 0
AND GIENOT,ST ;XIONGZHANGXUE
; LDI 0,IE ; Lockout interrupts
; NOP ; Interrupt lockout might not occur
; NOP ; for a few instructions
; AND GIENOT,ST ; Clear GIE bit in STatus register
;
; /* Determine if interrupts need to be enabled. */
;
.if NU_STACK
LDI *-FP(2),IE ; Pickup new interrupt level
.else
LDI AR2,IE
.endif
;
; /* return value is already in R0 */
; return(old_level);
;
.if NU_STACK
POP FP ; Restore frame pointer
.endif
RETI ; Return, setting GIE bit in ST
;
;}
;
;
;/*************************************************************************/
;/* */
;/* FUNCTION */
;/* */
;/* TCT_Restore_Interrupts */
;/* */
;/* DESCRIPTION */
;/* */
;/* This function restores the interrupt lockout posture to that of */
;/* the global setting. */
;/* */
;/* AUTHOR */
;/* */
;/* William E. Lamie, Accelerated Technology, Inc. */
;/* */
;/* CALLED BY */
;/* */
;/* Application */
;/* */
;/* CALLS */
;/* */
;/* None */
;/* */
;/* INPUTS */
;/* */
;/* None */
;/* */
;/* OUTPUTS */
;/* */
;/* None */
;/* */
;/* HISTORY */
;/* */
;/* NAME DATE REMARKS */
;/* */
;/* D. Foxall 02-07-1996 TMS320C30 version 1.0 */
;/* J. Trippi 03-11-1997 Modified for large memory model */
;/* */
;/*************************************************************************/
.global _TCT_Restore_Interrupts
_TCT_Restore_Interrupts:
;VOID _TCT_Restore_Interrupts(VOID)
;{
; /* register use: R0 - temporary value */
;
; /* Lockout interrupts. */
;
.if NU_BIG
LDP @_TCD_Interrupt_Level ; Load Data Page Pointer
.endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -