題目:實現3盞燈的流水
代碼:
.text
.global _start
_start:
@設置RCC寄存器使能
LDR R0,=0X50000A28
LDR R1,[R0]
ORR R1,R1,#(0X1<<4)
ORR R1,R1,#(0X1<<5)
STR R1,[R0]@設置PE10管腳為輸出模式
LDR R0,=0X50006000
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
ORR R1,R1,#(0X1<<20) @再設置位
BIC R1,R1,#(0X3<<16) @先清零
ORR R1,R1,#(0X1<<16) @再設置位STR R1,[R0]@設置PE10為推挽輸出
LDR R0,=0X50006004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10) @先清零
BIC R1,R1,#(0X1<<8) @先清零
STR R1,[R0]@設置PE10速度為低速
LDR R0,=0X50006008
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
BIC R1,R1,#(0X3<<16) @先清零
STR R1,[R0]
@不設置上拉下拉電阻
LDR R0,=0X5000600C
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
BIC R1,R1,#(0X3<<16) @先清零
STR R1,[R0]@LED2
@設置PF10管腳為輸出模式
LDR R0,=0X50007000
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
ORR R1,R1,#(0X1<<20) @再設置位
STR R1,[R0]@設置PF10為推挽輸出
LDR R0,=0X50007004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10) @先清零
STR R1,[R0]@設置PF10速度為低速
LDR R0,=0X50007008
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
STR R1,[R0]
@不設置上拉下拉電阻
LDR R0,=0X5000700C
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
STR R1,[R0]
@循環輸出高低電平
LDR R0,=0X50006014
LDR R2,=0X50007014
LDR R4,=0X50006014
loop:@亮一秒
LDR R1,[R0]
ORR R1,R1,#(0X1<<10)
STR R1,[R0]
bl delay_1s
@滅一秒
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0]
bl delay_1s@亮一秒
LDR R1,[r2]
ORR R1,R1,#(0X1<<10)
STR R1,[R2]
bl delay_1s
@滅一秒
LDR R1,[R2]
BIC R1,R1,#(0X1<<10)
STR R1,[R2]
bl delay_1s@亮一秒
LDR R1,[R4]
ORR R1,R1,#(0X1<<8)
STR R1,[R4]
bl delay_1s
@滅一秒
LDR R1,[R4]
BIC R1,R1,#(0X1<<8)
STR R1,[R4]
bl delay_1sb loop@1s左右的延時函數
delay_1s:mov r3, #0x10000000
mm:cmp r3, #0subne r3, r3, #1bne mmmov pc, lr
.end
結果: