ARM作业1

汇编实现三个灯闪烁

汇编代码:



.text 
.global _start
_start: 
@设置GPIOE,GPIOF时钟使能
    LDR R0,=0X50000A28  
    LDR R1,[R0]  
    ORR R1,R1,#(0x3<<4)  
    STR R1,[R0] 

 @设置PE10,PF10,PE8为输出
@LED1
    LDR  R0,=0X50006000
    LDR  R1,[R0]
    ORR R1,R1,#(0X1<<20)
    BIC R1,R1,#(0X1<<21)
@LED2
    LDR  R2,=0X50007000
    LDR  R3,[R2]
    ORR R3,R3,#(0X1<<20)
    BIC R3,R3,#(0X1<<21)
    STR R3,[R2]
@LED3
    ORR R1,R1,#(0X1<<16)
    BIC R1,R1,#(0X1<<17)
    STR R1,[R0]

@设置PE10,PF10,PE8为推挽输出
    LDR R0,=0X50006004
    LDR R1,[R0]
 @LED1
    BIC R1,R1,#(0X1<<10)
@LED2
    LDR R2,=0X50007004
    LDR R3,[R2]
    BIC R3,R3,#(0X1<<10)
    STR R3,[R2]
@LED3
    BIC  R1,R1,#(0X1<<8)
    STR R1,[R0]

@设置PE10,PF10,PE8为低速输出
    LDR R0,=0X50006008
    LDR R1,[R0]
 @LED1
    BIC R1,R1,#(0X3<<20)
 @LED2
    LDR R2,=0X50006008
    LDR R3,[R2]
    BIC R3,R3,#(0X3<<20)
    STR R3,[R2]
@LED3
    BIC R1,R1,#(0X3<<16)
    STR R1,[R0]

@设置PE10,PF10,PE8输出时无上拉下拉电阻
@LED1
    LDR R0,=0X5000600C
    LDR R1,[R0]
    BIC R1,R1,#(0X3<<20)
@LED2
    LDR R2,=0X5000600C
    LDR R3,[R2]
    BIC R3,R3,#(0X3<<20)
    STR R3,[R2]
@LED3
    BIC R1,R1,#(0X3<<16)
	STR R1,[R0]

FLASH:
    BL LED1_ON
    BL LED2_OFF
    BL LED3_ON
    BL DELAY
    BL LED1_OFF
    BL LED2_ON
    BL LED3_OFF
    BL DELAY
 B FLASH

@LED1亮
LED1_ON:
@设置PE10输出高电平
    LDR R0,=0X50006014
    LDR R1,[R0]
    ORR R1,R1,#(0X1<<10)
    STR R1,[R0]
    MOV PC,LR

@LED1灭
LED1_OFF:
@设置PE10输出低电平
     LDR R0,=0X50006014
    LDR R1,[R0]
    BIC R1,R1,#(0X1<<10)
    STR R1,[R0]
    MOV PC,LR

@LED2亮
LED2_ON:
@设置PE10输出高电平
    LDR R0,=0X50007014
    LDR R1,[R0]
    ORR R1,R1,#(0X1<<10)
    STR R1,[R0]
    MOV PC,LR

@LED2灭
LED2_OFF:
@设置PE10输出低电平
     LDR R0,=0X50007014
    LDR R1,[R0]
    BIC R1,R1,#(0X1<<10)
    STR R1,[R0]
    MOV PC,LR

@LED3亮
LED3_ON:
@设置PE8输出高电平
    LDR R0,=0X50006014
    LDR R1,[R0]
    ORR R1,R1,#(0X1<<8)
    STR R1,[R0]
    MOV PC,LR

@LED3灭
LED3_OFF:
@设置PE8输出低电平
     LDR R0,=0X50006014
    LDR R1,[R0]
    BIC R1,R1,#(0X1<<8)
    STR R1,[R0]
    MOV PC,LR

@延时
DELAY:
    LDR  R3,=0x10000000
MM:
    CMP R3,#0
    SUBNE R3,R3,#1
    BNE MM
    MOV PC,LR

.end

运行结果:

思维导图:

相关推荐

  1. <span style='color:red;'>ARM</span><span style='color:red;'>作业</span>

    ARM作业

    2023-12-22 22:58:02      45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-22 22:58:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-22 22:58:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-22 22:58:02       82 阅读
  4. Python语言-面向对象

    2023-12-22 22:58:02       91 阅读

热门阅读

  1. 人像美肤 人体美型 CVPR 2022 ABPN

    2023-12-22 22:58:02       58 阅读
  2. LeetCode 2866. 美丽塔 II

    2023-12-22 22:58:02       69 阅读
  3. RAG框架LlamaIndex核心——各种索引应用分析

    2023-12-22 22:58:02       57 阅读
  4. 【Qt之Quick模块】4. QML语法格式及命名规范

    2023-12-22 22:58:02       43 阅读
  5. 【Vue3】watch监听的五种情况

    2023-12-22 22:58:02       59 阅读
  6. Ubuntu 22.04 系统创建用户并授权sudo权限

    2023-12-22 22:58:02       62 阅读
  7. 在vue中使用axios发送请求

    2023-12-22 22:58:02       59 阅读
  8. 基于MATLAB的213维维特比译码

    2023-12-22 22:58:02       61 阅读