0
点赞
收藏
分享

微信扫一扫

09LED汇编指令的实现

下列代码是练习使用汇编语言进行点灯的操作,其实最终的操作就是对寄存器进行操作。最下面一张图是C语言版本的点灯。核心都是一样的,都是对寄存器进行操作。

PRESERVE8
THUMB


; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors

__Vectors DCD 0
DCD Reset_Handler ; Reset Handler

AREA |.text|, CODE, READONLY

; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]

;打开PE4
LDR R0,=(0x40021000+0x18)
LDR R1,[R0]
ORR R1,R1,#(1<<6)
STR R1,[R0]
;配置成输出,推挽
LDR R0,=(0x40011800)
LDR R1,[R0]
ORR R1,R1,#(1<<16)
ORR R1,R1,#(1<<17)
BIC R1,R1,#(1<<18)
STR R1,[R0]

LDR R0,=(0x40011800+0x0C)
LOOP
;输出高
LDR R1,[R0]
ORR R1,R1,#(1<<4)
STR R1,[R0]

LDR R2,=10000000
BL delay
;输出低
LDR R1,[R0]
BIC R1,R1,#(1<<4)
STR R1,[R0]

LDR R2,=10000000
BL delay

B LOOP
ENDP
delay
SUBS R2,R2,#1
BNE delay
MOV PC,LR
END

09LED汇编指令的实现_寄存器


举报

相关推荐

0 条评论