ARM_汇编流水灯
.text
.global _start
_start:
@设置GPIOE寄存器的时钟使能
ldr r0,=0x50000A28
ldr r1,[r0] @从r0为起始地址的4字节数据取出存入r1
orr r1,r1,#(0x01<<4) @第4位设置为1 表示开启时钟使能
orr r1,r1,#(0x01<<5) @第5位设置为1 表示开启时钟使能
str r1,[r0] @写入
@设置PE10的管脚为输出模式
ldr r0 , =0x50006000
ldr r1,[r0]
bic r1,r1,#(0x03<<20) @清零
orr r1,r1,#(0x01<<20) @01 输出模式
str r1,[r0]
ldr r0 , =0x50007000
ldr r1,[r0]
bic r1,r1,#(0x03<<20) @清零
orr r1,r1,#(0x01<<20) @01 输出模式
str r1,[r0]
ldr r0 , =0x50006000
ldr r1,[r0]
bic r1,r1,#(0x03<<16) @清零
orr r1,r1,#(0x01<<16) @01 输出模式
str r1,[r0]
@设置PE10的管脚为推挽输出
ldr r0, = 0x50006004
ldr r1,[r0]
bic r1,r1,#(0x01<<10) @清零
str r1,[r0]
ldr r0, = 0x50007004
ldr r1,[r0]
bic r1,r1,#(0x01<<10) @清零
str r1,[r0]
ldr r0, = 0x50006004
ldr r1,[r0]
bic r1,r1,#(0x01<<8) @清零
str r1,[r0]
@设置PE10的管脚为底速模式
ldr r0, = 0x50006008
ldr r1,[r0]
bic r1,r1,#(0x03<<20) @清零
str r1,[r0]
ldr r0, = 0x50007008
ldr r1,[r0]
bic r1,r1,#(0x03<<20) @清零
str r1,[r0]
ldr r0, = 0x50006008
ldr r1,[r0]
bic r1,r1,#(0x03<<16) @清零
str r1,[r0]
@设置PE10的管脚输出时没有上拉下拉电阻
ldr r0, = 0x5000600C
ldr r1,[r0]
bic r1,r1,#(0x03<<20) @清零
str r1,[r0]
ldr r0, = 0x5000700C
ldr r1,[r0]
bic r1,r1,#(0x03<<20) @清零
str r1,[r0]
ldr r0, = 0x5000600C
ldr r1,[r0]
bic r1,r1,#(0x03<<16) @清零
str r1,[r0]
@PE10输出高低电平
loop:
@1亮
ldr r0, = 0x50006014
ldr r1,[r0]
orr r1,r1,#(0x01<<10)
str r1,[r0]
bl dealy
@1灭
ldr r0, = 0x50006014
ldr r1,[r0]
bic r1,r1,#(0x01<<10)
str r1,[r0]
bl dealy
@2亮
ldr r0, = 0x50007014
ldr r1,[r0]
orr r1,r1,#(0x01<<10)
str r1,[r0]
bl dealy
@2灭
ldr r0, = 0x50007014
ldr r1,[r0]
bic r1,r1,#(0x01<<10)
str r1,[r0]
bl dealy
@3亮
ldr r0, = 0x50006014
ldr r1,[r0]
orr r1,r1,#(0x01<<8)
str r1,[r0]
bl dealy
@3灭
ldr r0, = 0x50006014
ldr r1,[r0]
bic r1,r1,#(0x01<<8)
str r1,[r0]
bl dealy
b loop
dealy:
ldr r4,=0x10000000
mm:
cmp r4,#0
subne r4,r4,#1
bne mm
mov pc,lr
.end