楼主
各位大神 :下面这个汇编语言弄出来的效果是怎么样的
3387
1
发表于 2019-3-14 13:15:01
;GPIO寄存器宏定义
GPBCON EQU 0x56000010
GPBDAT EQU 0x56000014
GPBUP EQU 0x56000018
EXPORT LEDTEST
AREA LEDTESTASM,CODE,READONLY ;该伪指令定义了一个代码段,段名为LEDTESTASM,属性只读
LEDTEST
;设置GPB5-GPB8为output
ldr r0,=GPBCON
ldr r1,[r0]
bic r1,r1,#0x3fc00
orr r1,r1,#0x15400
str r1,[r0]
;禁止GPB5-GPB8端口的上拉电阻
ldr r0,=GPBUP
ldr r1,[r0]
orr r1,r1,#0x1e0
str r1,[r0]
looptest
;将数据端口B的数据寄存器的地址附给寄存器r2
ldr r2,=GPBDAT
ldr r3,[r2]
bic r3,r3,#0x1e0
orr r3,r3,#0xF0
str r3,[r2] ;GPB8 output 0
ldr r0,=0x2ffffff
bl delay ;调用延迟子程序
ldr r3,[r2]
bic r3,r3,#0x1e0
orr r3,r3,#0x170
str r3,[r2] ;GPB7 output 0
ldr r0,=0x2ffffff
bl delay ;调用延迟子程序
ldr r3,[r2]
bic r3,r3,#0x1e0
orr r3,r3,#0x1b0
str r3,[r2] ;GPB6 output 0
ldr r0,=0x2ffffff
bl delay ;调用延迟子程序
ldr r3,[r2]
bic r3,r3,#0x1e0
orr r3,r3,#0x1d0
str r3,[r2] ;GPB5 output 0
ldr r0,=0x2ffffff
bl delay ;调用延迟子程序
b looptest
delay
sub r0,r0,#1 ;r0=r0-1
cmp r0,#0x0 ;将r0的值与0相比较
bne delay ;比较的结果不为0(r0不为0),继续调用delay,否则执行下一条语句
mov pc,lr ;返回
END ;程序结束符