.text
.global _start
_start:
@led1
@设置时钟使能
ldr r0,=0x50000A28
ldr r1,[r0]
orr r1,r1,#(0x1<<4)
str r1,[r0]
@设置输出模式
ldr r0,=0x50006000
ldr r1,[r0]
bic r1,r1,#(0x3<<20)
orr r1,r1,#(0x01<<20)
str r1,[r0]
@设置推挽输出
ldr r0,=0x50006004
ldr r1,[r0]
bic r1,r1,#(0x1<<10)
str r1,[r0]
@设置低速输出
ldr r0,=0x50006008
ldr r1,[r0]
bic r1,r1,#(0x3<<20)
str r1,[r0]
@设置不上拉下拉电阻
ldr r0,=0x5000600C
ldr r1,[r0]
bic r1,r1,#(0x3<<20)
str r1,[r0]
@led2
@设置时钟使能
ldr r0,=0x50000A28
ldr r1,[r0]
orr r1,r1,#(0x1<<5)
str r1,[r0]
@设置输出模式
ldr r0,=0x50007000
ldr r1,[r0]
bic r1,r1,#(0x3<<20)
orr r1,r1,#(0x01<<20)
str r1,[r0]
@设置推挽输出
ldr r0,=0x50007004
ldr r1,[r0]
bic r1,r1,#(0x1<<10)
str r1,[r0]
@设置低速输出
ldr r0,=0x50007008
ldr r1,[r0]
bic r1,r1,#(0x3<<20)
str r1,[r0]
@设置不上拉下拉电阻
ldr r0,=0x5000700C
ldr r1,[r0]
bic r1,r1,#(0x3<<20)
str r1,[r0]
@led3 时钟使能与led1相同
@设置输出模式
ldr r0,=0x50006000
ldr r1,[r0]
bic r1,r1,#(0x3<<16)
orr r1,r1,#(0x01<<16)
str r1,[r0]
@设置推挽输出
ldr r0,=0x50006004
ldr r1,[r0]
bic r1,r1,#(0x1<<8)
str r1,[r0]
@设置低速输出
ldr r0,=0x50006008
ldr r1,[r0]
bic r1,r1,#(0x3<<16)
str r1,[r0]
@设置不上拉下拉电阻
ldr r0,=0x5000600C
ldr r1,[r0]
bic r1,r1,#(0x3<<16)
str r1,[r0]
loop:
bl led1_on
bl delay
bl led1_off
bl delay
bl led2_on
bl delay
bl led2_off
bl delay
bl led3_on
bl delay
bl led3_off
bl delay
b loop
led1_on:
@设置高电平
ldr r0,=0x50006014
ldr r1,[r0]
orr r1,r1,#(0x1<<10)
str r1,[r0]
mov pc,lr
led1_off:
@设置低电平
ldr r0,=0x50006014
ldr r1,[r0]
bic r1,r1,#(0x1<<10)
str r1,[r0]
mov pc,lr
led2_on:
@设置高电平
ldr r0,=0x50007014
ldr r1,[r0]
orr r1,r1,#(0x1<<10)
str r1,[r0]
mov pc,lr
led2_off:
@设置低电平
ldr r0,=0x50007014
ldr r1,[r0]
bic r1,r1,#(0x1<<10)
str r1,[r0]
mov pc,lr
led3_on:
@设置高电平
ldr r0,=0x50006014
ldr r1,[r0]
orr r1,r1,#(0x1<<8)
str r1,[r0]
mov pc,lr
led3_off:
@设置低电平
ldr r0,=0x50006014
ldr r1,[r0]
bic r1,r1,#(0x1<<8)
str r1,[r0]
mov pc,lr
delay:
ldr r0,=0x1000000
mm:
cmp r0,#0
subne r0,r0,#1
bne mm
mov pc,lr
.end