📄 init-1.s
字号:
IOPMOD EQU 0x3FF5000
IOPDATA EQU 0x3FF5008
TMOD EQU 0x3FF6000
TDATA0 EQU 0x3FF6004
INTMOD EQU 0x3FF4000
INTPND EQU 0x3FF4004
INTMASK EQU 0x3FF4008
AREA Init, CODE, READONLY
ENTRY
B Reset_Handler
B .
B .
B .
B .
NOP
B IRQ_Handler
B .
;***************************
;LED Display
;***************************
Reset_Handler
LDR R1,=IOPMOD
LDR R0,=0xFF
STR R0,[R1]
LDR R1,=IOPDATA
LDR R0,=0xFE
STR R0,[R1] ;// P0 亮灯 低电平亮灯
LDR R0,=0x0
LEDDELAY
ADD R0,R0,#1
CMP R0,#&180000 ;// 延时
BNE LEDDELAY
LDR R0,=IOPDATA
LDR R1,[R0]
EOR R1,R1,#1
STR R1,[R0] ;// P0 灭灯
;***************************
;User Stack
;***************************
LDR R0,=0x3FF0000
LDR R1,=0xE7FFFF80
STR R1,[R0]
LDR SP,=0x3FE1000
;***************************
;Interrupt special Registers
;***************************
MRS R0,CPSR
BIC R0,R0,#&80 ;//修改CPSR的控制位I,允许中断
MSR CPSR_c,R0
LDR R1,=INTMOD
LDR R0,=&0
STR R0,[R1]
LDR R1,=INTMASK
LDR R0,=&1FFbFF
STR R0,[R1]
;***************************
;Timer0 Special Registers
;***************************
LDR R1,=TDATA0
LDR R0,=0x1FFFFFF
STR R0,[R1]
LDR R1,=TMOD
LDR R0,=&01
STR R0,[R1]
B .
;***************************
;Timer0 Interrupt
;***************************
IRQ_Handler
STMFD SP!,{R0-R6,LR}
LDR R1,=INTPND
LDR R0,=&400
STR R0,[R1]
MRS R0,CPSR
BIC R0,R0,#&80 ;//修改CPSR的控制位I,允许中断
MSR CPSR_c,R0
LDR R0,=IOPDATA
LDR R1,[R0]
EOR R1,R1,#1
STR R1,[R0]
LDMFD SP!,{R0-R6,LR}
SUBS PC,LR,#4
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -