2024.5.17

通过代码实现LED流水灯效果


.text 
.global _start
_start: 
	@使能SPIOE的外设时钟
	LDR R0,=0x50000A28    @让R0保存寄存器地址
	LDR R1,[R0]           @将R0为首地址的四字节数据读取到R1中
	ORR R1,R1,#(0x3<<4)   @将第四位设置为1,其他位不变
	@ORR R1,R1,#(0x1<<5)
	STR R1,[R0]           @将修改后的数值写回

	

	@设置PE10为输出模式
	LDR R0,=0x50006000    @让R0保存寄存器地址
	LDR R1,[R0]           @将R0为首地址的四字节数据读取到R1中
	BIC R1,R1,#(0x3<<20)  
	BIC R1,R1,#(0x3<<16)
	ORR R1,R1,#(0x1<<20)
	ORR R1,R1,#(0x1<<16)
	STR R1,[R0]           @将修改后的数值写回

	LDR R0,=0x50007000
	LDR R1,[R0]
	BIC R1,R1,#(0x3<<20)
	ORR R1,R1,#(0x1<<20)
	STR R1,[R0]

	



	@设置PE10为推挽模式
	LDR R0,=0x50006004    @让R0保存寄存器地址
	LDR R1,[R0]           @将R0为首地址的四字节数据读取到R1中
	BIC R1,R1,#(0x1<<10)  
	BIC R1,R1,#(0x1<<8)
	STR R1,[R0]      

	LDR R0,=0x50007004
	LDR R1,[R0]
	BIC R1,R1,#(0x1<<10)
	STR R1,[R0]

	@设置PE10为低速输出
	LDR R0,=0x50006008    @让R0保存寄存器地址
	LDR R1,[R0]           @将R0为首地址的四字节数据读取到R1中
	BIC R1,R1,#(0x3<<20)  
	BIC R1,R1,#(0x3<<16)
	STR R1,[R0]      

	LDR R0,=0x50007008
	LDR R1,[R0]
	BIC R1,R1,#(0x3<<20)
	STR R1,[R0]

	@设置无上拉下拉电阻
	LDR R0,=0x5000600c    @让R0保存寄存器地址
	LDR R1,[R0]           @将R0为首地址的四字节数据读取到R1中
	BIC R1,R1,#(0x3<<20) 
	BIC R1,R1,#(0x3<<16)
	STR R1,[R0]    

	LDR R0,=0x5000700c
	LDR R1,[R0]
	BIC R1,R1,#(0x3<<20)
	STR R1,[R0]


main:
	bl led1_on
	bl delay
	bl led1_close
	
	bl led2_on
	bl delay
	bl led2_close
	
	bl led3_on
	bl delay
	bl led3_close
	
	bl main

	
led1_on:
	@点亮灯
	LDR R0,=0x50006014    @让R0保存寄存器地址
	LDR R1,[R0]           @将R0为首地址的四字节数据读取到R1中
	ORR R1,R1,#(0x1<<10)
	STR R1,[R0]   
	mov pc,lr

led2_on:
	LDR R0,=0x50007014
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<10)
	STR R1,[R0]
	mov pc,lr

led3_on:
	LDR R0,=0x50006014
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<8)
	STR R1,[R0]
	mov pc,lr

delay:
	LDR R3,=0x5000000

	rm:
		cmp R3,#0
		subne R3,R3,#1
		bne rm
		mov pc,lr

led1_close:
		LDR R0,=0x50006014
		LDR R1,[R0]
		BIC R1,R1,#(0x1<<10)
		STR R1,[R0]
		mov pc,lr

led2_close:
	LDR R0,=0x50007014
	LDR R1,[R0]
	BIC R1,R1,#(0x1<<10)
	STR R1,[R0]
	mov pc,lr

led3_close:
	LDR R0,=0x50006014
	LDR R1,[R0]
	BIC R1,R1,#(0x1<<8)
	STR R1,[R0]
	mov pc,lr

.end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值