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

运行结果:

思维导图:

相关推荐
w微信1501350781213 小时前
小华一级 代理商 HC32F005C6PA-TSSOP20 HC32F005系列
c语言·arm开发·单片机·嵌入式硬件
憧憬一下14 小时前
Pinctrl子系统中Pincontroller和client驱动程序的编写
arm开发·嵌入式·c/c++·linux驱动开发
上海知从科技1 天前
知从科技受邀出席ARM日产技术日
arm开发·科技
极客小张2 天前
基于STM32的智能温室环境监测与控制系统设计(代码示例)
c语言·arm开发·stm32·单片机·嵌入式硬件·物联网·毕业设计
TeYiToKu3 天前
笔记整理—linux驱动开发部分(6)platform平台总线
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件
飞腾开发者3 天前
飞腾平台Arm ComputeLibrary编译安装指南
linux·服务器·arm开发·后端·性能优化
CodingCos3 天前
【ARM Linux 系统稳定性分析入门及渐进 1.1 -- Crash 工具功能概述】
linux·arm开发·crash tools·linux crash·crash 工具使用
@haihi4 天前
IIC和SPI的区别和相同之处
arm开发·stm32·mcu
@@庆5 天前
FreeRTOS 数据传输方法(环形buffer,队列的本质)队列实验—多设备玩游戏
arm开发·stm32·单片机·嵌入式硬件·freertos
LensonYuan7 天前
信创环境模拟:X86架构下部署搭建aarch64的ARM虚拟机
arm开发·架构·aarch64·虚拟开发环境