您的位置:首页 > 其它

arm汇编如何调用函数,如何写延迟函数

2014-08-13 01:00 267 查看
.text

.global _start

_start:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@功能:实现流水灯,第一个灯亮一会,再灭会,第二个灯类似
@
@LED PIN GPF4/5/6
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@设置GPF的第4/5/6引脚为输出
ldr r0, =0x56000050
mov r1, #0x00001500
str r1, [r0]

1:

bl led1_on @第一个灯亮
bl delay
@调用延迟函数
bl leds_off
@所有灯灭

bl delay
bl led2_on
bl delay
bl leds_off

bl delay
bl led3_on
bl delay
bl leds_off
bl delay

b 1b @无限循环

delay:

mov r0, #0x40000 @注意这里一定不能写在下面的0循环内,否则将变成死循环!!这是经常犯错的地方!!

0:
sub r0, r0, #1
mov r2, #0
cmp r0, r2
bne 0b
mov pc, lr
//返回被调用的地方

leds_off:
ldr r0, =0x56000054
mov r1, #0xff
str r1, [r0]
mov pc, lr

led1_on:
ldr r0, =0x56000054
mov r1, #0x00000060
str r1, [r0]
mov pc, lr

led2_on:
ldr r0, =0x56000054
mov r1, #0x00000050
str r1, [r0]
mov pc, lr

led3_on:
ldr r0, =0x56000054
mov r1, #0x00000030
str r1, [r0]
mov pc, lr
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编函数调用