ARM day3

2023-12-14 19:42:25

题目:实现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_1s

b loop
 
@1s左右的延时函数
delay_1s:
	mov r3, #0x10000000
mm:
	cmp r3, #0
	subne r3, r3, #1
	bne mm
	mov pc, lr
.end

结果:

文章来源:https://blog.csdn.net/amisslai/article/details/134864477
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。