ARM 汇编点灯

.text 
.global _start
_start: 
@定时器使能
	ldr r0,=0x50000a28  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	orr r1,r1,#(0x3<<4) @将数据的第四、五位置1
	str r1,[r0] 		@将数据写回
@将PE10,PF10,PE8管脚设置为输出模式
	ldr r0,=0x50006000  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	bic r1,r1,#(0x33<<16)@将16,17,20,21四位置0
	orr r1,r1,#(0x11<<16)@将16,20位置1
	str r1,[r0] 		@将数据写回
@PF10
	ldr r0,=0x50007000  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	bic r1,r1,#(0x33<<16)@将16,17,20,21四位置0
	orr r1,r1,#(0x11<<16)@将16,20位置1
	str r1,[r0] 		@将数据写回
@将PE10,PF10,PE8管脚设置为推挽输出
	ldr r0,=0x50006004  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	bic r1,r1,#(0x5<<8)@将10,8位置0
	str r1,[r0] 		@将数据写回
@PF10
	ldr r0,=0x50007004  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	bic r1,r1,#(0x5<<8)@将10,8位置0
	str r1,[r0] 		@将数据写回
@将PE10,PF10,PE8管脚设置为低速输出
	ldr r0,=0x50006008  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	bic r1,r1,#(0x33<<20)@将16,17,20,21两位置0
	str r1,[r0] 		@将数据写回
@PF10
	ldr r0,=0x50007008  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	bic r1,r1,#(0x33<<20)@将16,17,20,21两位置0
	str r1,[r0] 		@将数据写回
@将PE10,PF10,PE8管脚输出设置为没有上拉下拉电阻
	ldr r0,=0x5000600c  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	bic r1,r1,#(0x33<<20)@将16,17,20,21两位置0
	str r1,[r0] 		@将数据写回
@PF10
	ldr r0,=0x5000700c  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	bic r1,r1,#(0x33<<20)@将16,17,20,21两位置0
	str r1,[r0] 		@将数据写回
@PE10,PF10,PE8管脚输出高低电平
loop:
@LED1亮
	ldr r0,=0x50006014  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	orr r1,r1,#(0x1<<10)@将10位置0
	str r1,[r0] 		@将数据写回
	bl delay
@LED1灭
	ldr r0,=0x50006014  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	bic r1,r1,#(0x1<<10)@将10位置0
	str r1,[r0] 		@将数据写回
	bl delay
@LED2亮
	ldr r0,=0x50007014  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	orr r1,r1,#(0x1<<10)@将10位置0
	str r1,[r0] 		@将数据写回
	bl delay
@LED2灭
	ldr r0,=0x50007014  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	bic r1,r1,#(0x1<<10)@将10位置0
	str r1,[r0] 		@将数据写回
	bl delay
@LED3亮
	ldr r0,=0x50006014  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	orr r1,r1,#(0x1<<8) @将8位置0
	str r1,[r0] 		@将数据写回
	bl delay
@LED3灭
	ldr r0,=0x50006014  @向r0寄存器中写入起始地址
	ldr r1,[r0] 		@从起始地址开始读4字节数据进入r1
	bic r1,r1,#(0x1<<8) @将8位置0
	str r1,[r0] 		@将数据写回
	bl delay
	b loop
delay:
	ldr r4,=0x10000000
mm:
	cmp r4,#0
	subne r4,r4,#1
	bne mm
	mov pc,lr
.end

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值