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

📄 irq_handler.s

📁 sharp s Lh75401 PWM audio的例子
💻 S
字号:
;-----------------------------------------------------------------------
;  $Workfile:   irq_handler.s  $
;  $Revision:   1.0  $
;  $Author:   AnvikE  $
;  $Date:   Jul 03 2003 17:32:14  $
; 
;  Project: 
; 
;  Description: 
;  
;-----------------------------------------------------------------------
;  
;   Copyright (c) 2002,2003 Sharp Microelectronics of the Americas
; 
;   All rights reserved
; 
;   SHARP MICROELECTRONICS OF THE AMERICAS MAKES NO REPRESENTATION
;   OR WARRANTIES WITH RESPECT TO THE PERFORMANCE OF THIS SOFTWARE,
;   AND SPECIFICALLY DISCLAIMS ANY RESPONSIBILITY FOR ANY DAMAGES,
;   SPECIAL OR CONSEQUENTIAL, CONNECTED WITH THE USE OF THIS SOFTWARE.
; 
;   SHARP MICROELECTRONICS OF THE AMERICAS PROVIDES THIS SOFTWARE SOLELY
;   FOR THE PURPOSE OF SOFTWARE DEVELOPMENT INCORPORATING THE USE OF A
;   SHARP MICROCONTROLLER OR SYSTEM-ON-CHIP PRODUCT.  USE OF THIS SOURCE
;   FILE IMPLIES ACCEPTANCE OF THESE CONDITIONS.
; 
;-----------------------------------------------------------------------

    AREA IRQHANDLER, CODE    

    EXPORT  __user_irq_handler
    
VIC_VECT_ADDR   EQU  0xfffff030

;-----------------------------------------------------------------------
; Function: __user_irq_handler
;
; Purpose: Handle IRQ exceptions
; 
; Processing:
; 1. Save the current machine state
; 2. Load the VIC vector address into PC
; 3. Write to the VIC vector address register to signal end 
;    of interrupt
; 4. Restore the save machine state 
;
; Parameters: None
;
; Outputs:  None
;
; Returns: Nothing
;
; Notes:
;-----------------------------------------------------------------------

__user_irq_handler
	; Modify and save the lr so we return from where we were
	; interrupted.
	SUB	lr, lr, #4
	; Push the required registers onto the stack 
	STMFD	sp!, {r0-r3,r10,r12,lr}
	MRS	r0, spsr
	STMFD	sp!, {r0}
__vic_jump
	LDR     r0, =VIC_VECT_ADDR
	MOV	lr, pc
	LDR     pc, [r0]
	; control returns here after the ISR has executed
	; write to the VIC Vector Address register to signal 
	; end-of-interrupt to the VIC
	LDR     r0,=VIC_VECT_ADDR
	MOV     r1,#0
	STR     r1,[r0] 
	; Pop the spsr off the stack 
	LDMFD	sp!, {r0}
	MSR	spsr_cf, r0
	; Pop the rest of the stack and return 
	LDMFD	sp!, {r0-r3,r10,r12,pc}^
	END

⌨️ 快捷键说明

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