1.匯編源代碼
.text
.global _start
_start:
@設(shè)置GPIOF寄存器的時鐘使能
LDR R0,=0X50000A28
LDR R1,[R0]
ORR R1,R1,#(0x1<<5)
STR R1,[R0]
@設(shè)置GPIOE寄存器的時鐘使能
LDR R0,=0X50000A28
LDR R1,[R0] @從r0為起始地址的4字節(jié)數(shù)據(jù)取出放在R1
ORR R1,R1,#(0x1<<4) @第4位設(shè)置為1
STR R1,[R0] @寫回
@設(shè)置PE10管腳為輸出模式 GPIOE_MODER[21:20]->01 0x50006000
LDR R0,=0x50006000
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]清0
ORR R1,R1,#(0X1<<20) @設(shè)置
STR R1,[R0]
@設(shè)置PF10管腳為輸出模式
LDR R0,=0x50007000
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
ORR R1,R1,#(0x1<<20)
STR R1,[R0]
@設(shè)置PE8管腳為輸出模式
LDR R0,=0x50006000
LDR R1,[R0]
BIC R1,R1,#(0x3<<16) @[17:16]清0
ORR R1,R1,#(0X1<<16) @設(shè)置1
STR R1,[R0]
@設(shè)置PE10管腳為推挽輸出 GPIOE_OTYPER[10]->0 0X50006004
LDR R0,=0X50006004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0]
@設(shè)置PF10管腳為推挽輸出
LDR R0,=0X50007004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0]
@設(shè)置PE8管腳為推挽輸出 GPIOE_OTYPER[10]->0 0X50006004
LDR R0,=0X50006004
LDR R1,[R0]
BIC R1,R1,#(0X1<<8)
STR R1,[R0]
@設(shè)置PE10管腳為低速輸出 GPIOE_OSPEEDR[21:20]->00 0X50006008
LDR R0,=0x50006008
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]清0
STR R1,[R0]
@設(shè)置PF10管腳為低速輸出
LDR R0,=0x50007008
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]清0
STR R1,[R0]
@設(shè)置PE8管腳為低速輸出 GPIOE_OSPEEDR[21:20]->00 0X50006008
LDR R0,=0x50006008
LDR R1,[R0]
BIC R1,R1,#(0x3<<16) @[17:16]清0
STR R1,[R0]
@設(shè)置PE10管腳輸出時沒有上拉下拉電阻 GPIOE_PUPDR[21:20]->00 0X5000600C
LDR R0,=0x5000600c
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]清0
STR R1,[R0]
@設(shè)置PE8管腳輸出時沒有上拉下拉電阻 GPIOE_PUPDR[21:20]->00 0X5000600C
LDR R0,=0x5000600c
LDR R1,[R0]
BIC R1,R1,#(0x3<<16)@[17:16]清0
STR R1,[R0]
@設(shè)置PF10管腳輸出時沒有上拉下拉電阻
LDR R0,=0x5000700c
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]清0
STR R1,[R0]
@ 6.PE10輸出高低電平 GPIOE_ODR[10]->1(高電平) 0(低電平) 0X50006014
@LED1亮滅交替
loop:
@led1亮
LDR R0,=0X50006014
LDR R1,[R0]
ORR R1,R1,#(0x1<<10)
STR R1,[R0]
BL delay
@led2滅
LDR R0,=0X50006014
LDR R1,[R0]
BIC R1,R1,#(0x1<<10)
STR R1,[R0]
BL delay
@led2亮
LDR R0,=0X50007014
LDR R1,[R0]
ORR R1,R1,#(0x1<<10)
STR R1,[R0]
BL delay
@led2滅
LDR R0,=0X50007014
LDR R1,[R0]
BIC R1,R1,#(0x1<<10)
STR R1,[R0]
BL delay
@led3亮
LDR R0,=0X50006014
LDR R1,[R0]
ORR R1,R1,#(0x1<<8)
STR R1,[R0]
BL delay
@led3滅
LDR R0,=0X50006014
LDR R1,[R0]
BIC R1,R1,#(0x1<<8)
STR R1,[R0]
BL delay
b loop
@封裝延時函數(shù)
delay:
LDR R4,=0X10000000
mm:
cmp r4,#0
subne r4,r4,#1
bne mm
mov pc,lr @程序返回
.end
2.實驗現(xiàn)象文章來源:http://www.zghlxwxcb.cn/news/detail-729950.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-729950.html
到了這里,關(guān)于ARM:使用匯編完成三個燈流水亮滅的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!