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

📄 s3c44b0x.s

📁 一个基于S3C44B0芯片的示例代码,实现利用定时器中断点亮LED指示灯,UART通信功能
💻 S
📖 第 1 页 / 共 5 页
字号:
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleSWI					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerDabort	;HANDLER HandleDabort
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleDabort					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerPabort	;HANDLER HandlePabort 
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandlePabort					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 		   	
HandlerADC		
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleADC					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc}   					


HandlerRTC		 					
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleRTC					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc}   

HandlerUTXD1	; HANDLER HandleUTXD1
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleUTXD1					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 

HandlerUTXD0	 ;HANDLER HandleUTXD0
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleUTXD0					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 

HandlerSIO		 ;HANDLER HandleSIO
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleSIO					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerIIC		 ;HANDLER HandleIIC
                
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleIIC					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc}   
				
HandlerURXD1	 ;HANDLER HandleURXD1
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleURXD1					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerURXD0	 ;HANDLER HandleURXD0
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleURXD0					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerTIMER5	 ;HANDLER HandleTIMER5
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleTIMER5					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerTIMER4	 ;HANDLER HandleTIMER4
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleTIMER4					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerTIMER3	 ;HANDLER HandleTIMER3
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleTIMER3					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerTIMER2	 ;HANDLER HandleTIMER2
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleTIMER2					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerTIMER1	 ;HANDLER HandleTIMER1
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleTIMER1					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerTIMER0	 ;HANDLER HandleTIMER0
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleTIMER0					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc}  
HandlerUERR01	 ;HANDLER HandleUERR01
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleUERR01					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerWDT		 ;HANDLER HandleWDT
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleWDT					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerBDMA1	 ;HANDLER HandleBDMA1
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleBDMA1					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerBDMA0	 ;HANDLER HandleBDMA0
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleBDMA0					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerZDMA1	 ;HANDLER HandleZDMA1
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleZDMA1					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerZDMA0	 ;HANDLER HandleZDMA0
				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleZDMA0					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerTICK  	 ;HANDLER HandleTICK
 				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleTICK					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerEINT4567  ;HANDLER HandleEINT4567
 				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleEINT4567					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerEINT3	 ;HANDLER HandleEINT3
 				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleEINT3					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerEINT2	 ;HANDLER HandleEINT2
 				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleEINT2					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerEINT1	 ;HANDLER HandleEINT1
 				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleEINT1					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 
HandlerEINT0	 ;HANDLER HandleEINT0
 				sub	    sp, sp,#4       ;reserved for PC
	            stmfd	sp!,{r8-r9}
                
	            ldr		r8, =HandleEINT0					
	            ldr		r9, [r8	]
	            str	    r9,[sp,#8]
	            ldmfd	sp!,{r8-r9,pc} 


IsrIRQ											;/* using I_ISPR register. */
    sub	    sp, sp, #4       					;/* reserved for PC	  */
    stmfd   sp!, {r8-r9}   

;# if I_ISPC isn't used properly, I_ISPR can be 0 in this routine.
    ldr	    r9, =I_ISPR
    ldr	    r9, [r9]
	cmp		r9, #0x0							;/* If the IDLE mode work-around is used, r9 may be 0 sometimes.	*/
	beq		l2
    mov	    r8, #0x0
l0
    movs    r9, r9, lsr #1
    bcs	    l1
    add	    r8, r8, #4
    b	    l0
l1
    ldr	    r9, =HandleADC
    add	    r9, r9, r8
    ldr	    r9, [r9]
    str	    r9, [sp,#8]
    ldmfd   sp!, {r8-r9,pc}
l2
	ldmfd	sp!, {r8-r9}
	add		sp, sp, #4
;#	subs	pc, lr, #4
;	mov		pc, lr

;****************************************************
;*	The function for entering power down mode		*
;****************************************************
;void EnterPWDN(int CLKCON);
EnterPWDN
    mov	    r2,r0               ;r0=CLKCON
    ldr	    r0,=REFRESH		
    ldr	    r3,[r0]
    mov	    r1, r3
    orr	    r1, r1, #0x400000   ;self-refresh enable
    str	    r1, [r0]

    nop     ;Wait until self-refresh is issued. May not be needed.
    nop     ;If the other bus master holds the bus, ...
    nop	    ; mov r0, r0
    nop
    nop
    nop
    nop

;enter POWERDN mode
    ldr	    r0,=CLKCON
    str	    r2,[r0]

;wait until enter SL_IDLE,STOP mode and until wake-up
    mov	    r0,#0xff
0   subs    r0,r0,#1
    bne	    %B0

;exit from DRAM/SDRAM self refresh mode.
    ldr	    r0,=REFRESH
    str	    r3,[r0]
    mov	    pc,lr

; CPU Wrapper and Bus Priorities Configuration
                IF      SYS_SETUP <> 0
SYS_CFG
                DCD     CPUW_BASE
                DCD     BUSP_BASE        
                DCD     SYSCFG_Val

⌨️ 快捷键说明

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