#define GPJ0CON 0xE0200240
#define GPJ0DAT 0xE0200244
.global _start //声明_start作用域为全局
_start:
ldr r0, =0x11111111//等号为伪指令,对r0赋值
ldr r1, =GPJ0CN //对r1赋值,值为当前开发板GPJ0 Control Register 的地址
str r0, [r1]//寄存器间接寻址,将r1中的值写入GPJ0控制寄存器中,该值代表GPJ0处于output模式
blink:
ldr r0, =((0<<5) | (0<<4) | (0<<3))//将3,4,5位设置为0
ld r1, =GPJ0DAT //赋值为GPJ0DAT寄存器的地址
str r0, [r1]//将r0的值写入GPJ0DAT,引脚输出低电平
bl delay//暂停操作
ldr r0, =((1<<5) | (1<<4) | (1<<3))//将3,4,5位设置为1
ld r1, =GPJ0DAT //赋值为GPJ0DAT寄存器的地址
str r0, [r1]//将r0的值写入GPJ0DAT,引脚输出高电平
bl delay//暂停操作
bl blink//跳转至blink
//flag:
//b flag//进入死循环状态, 或使用b .
delay:
ldr r2, =0xA0000000
ldr r3, =0x0
delay_loop:
sub r2, r2, #1//对r2进行减1操作并写入r2
cmp r2, r3//比较r2,3是否相等
bne delay_loop//不相等则执行delay_loop
move pc, lr//返回调用delay处执行