arm asm_day04

作业1

效果

汇编代码实现三个灯的流水

代码

.text 
.global _start
_start: 

/* LED1 PE10 */
@设置RCC寄存器使能
LDR R0,=0X50000A28 
LDR R1,[R0] 
ORR R1,R1,#(0X1<<4) 
STR R1,[R0] 
 
@设置PE10管脚为输出模式
LDR R0,=0X50006000 
LDR R1,[R0] 
BIC R1,R1,#(0X3<<20) @先清零 
ORR R1,R1,#(0X1<<20) @再设置位 
STR R1,[R0] 
 
@设置PE0为推挽输出
LDR R0,=0X50006004 
LDR R1,[R0] 
BIC R1,R1,#(0X1<<10) @先清零 
STR R1,[R0] 
 
@设置PE10速度为低速
LDR R0,=0X50006008 
LDR R1,[R0] 
BIC R1,R1,#(0X3<<20) @先清零 
STR R1,[R0] 

@不设置上拉下拉电阻
LDR R0,=0X5000600C 
LDR R1,[R0] 
BIC R1,R1,#(0X3<<20) @先清零 
STR R1,[R0] 


/* LED2 PF10 */
@设置RCC寄存器使能
LDR R0,=0X50000A28 
LDR R1,[R0] 
ORR R1,R1,#(0X1<<5) 
STR R1,[R0] 
 
@设置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] 

/* LED3  PE8 */
@设置RCC寄存器使能
LDR R0,=0X50000A28 
LDR R1,[R0] 
ORR R1,R1,#(0X1<<4) 
STR R1,[R0] 
 
@设置PE8管脚为输出模式
LDR R0,=0X50006000 
LDR R1,[R0] 
BIC R1,R1,#(0X3<<16) @先清零 
ORR R1,R1,#(0X1<<16) @再设置位 
STR R1,[R0] 
 
@设置PE8为推挽输出
LDR R0,=0X50006004 
LDR R1,[R0] 
BIC R1,R1,#(0X1<<8) @先清零 
STR R1,[R0] 
 
@设置PE8速度为低速
LDR R0,=0X50006008 
LDR R1,[R0] 
BIC R1,R1,#(0X3<<16) @先清零 
STR R1,[R0] 

@不设置上拉下拉电阻
LDR R0,=0X5000600C 
LDR R1,[R0] 
BIC R1,R1,#(0X3<<16) @先清零 
STR R1,[R0] 



@循环输出高低电平
LDR R0,=0X50006014  @LED1 LED3
LDR R2,=0X50007014  @LED2
loop: 
    @LED3灭
    LDR R1,[R0] 
    BIC R1,R1,#(0X1<<8) 
    STR R1,[R0] 
    bl delay_1s
    @LED1亮
    LDR R1,[R0] 
    ORR R1,R1,#(0X1<<10) 
    STR R1,[R0] 
    bl delay_1s

    @LED1灭
    LDR R1,[R0] 
    BIC R1,R1,#(0X1<<10) 
    STR R1,[R0] 
    @LED2亮
    LDR R1,[R2] 
    ORR R1,R1,#(0X1<<10) 
    STR R1,[R2] 
    bl delay_1s

    @LED2灭
    LDR R1,[R2] 
    BIC R1,R1,#(0X1<<10) 
    STR R1,[R2] 
    @LED3亮
    LDR R1,[R0] 
    ORR R1,R1,#(0X1<<8) 
    STR R1,[R0] 
    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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值