arm程序提问!高手看看!

来源:百度知道 编辑:UC知道 时间:2024/05/09 17:42:21
EXPORT LEDTEST
AREA LEDTESTASM,CODE,READONLY ;该伪指令定义了一个代码段,段名为LEDTESTASM,属性只读

LEDTEST
;设置GPF4-GPF7为output
ldr r0,=GPFCON
ldr r1,[r0]
bic r1,r1,#0xff00
orr r1,r1,#0x5500
str r1,[r0]

;禁止GPF4-GPF7端口的上拉电阻
ldr r0,=GPFUP
ldr r1,[r0]
orr r1,r1,#0xf0
str r1,[r0]

looptest
;将数据端口F的数据寄存器的地址附给寄存器r2
ldr r2,=GPFDAT

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0x70
str r3,[r2] ;GPF7 output 0
ldr r0,=0x2fffff
bl delay ;调用延迟子程序

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0xb0
str r3,[r2] ;GPF6 output 0
ldr r0,=0x2fffff
bl delay ;调用延迟子程序

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0xd0
str r3,[r2]

程序主要是实现读入端口寄存器的值,然后进行需要的操作后,回写入相应的寄存器。
ldr r0,=0x2fffff的表面意思是装载32位立即数,目的是控制延时长短,从最后的delay可以看出。
还有我不是高手,也没怎么搞汇编。不过搞ARM也大半年了。

ldr 是一个数据类型
他定义了一个叫r0的变量
然后给他赋初值为0x2fffff
关于delay他是一个函数,原本程序自带的函数。
你可以用他来将时间停留一小段时间。
Delay(0x2FFFFF);可以像这样用。
希望能帮助到你。
你觉得满意的话,希望给分,谢了!