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

运行结果:

思维导图:

相关推荐
CinzWS8 小时前
A53 FPGA原型验证:从RTL到可运行系统的挑战
arm开发·嵌入式·芯片验证·原型验证·a53
AI服务老曹9 小时前
深度解析:支持 GB28181/RTSP 及异构计算(X86/ARM+GPU/NPU)的 AI 视频管理平台架构方案(附源码交付与 Docker 部署)
arm开发·人工智能·音视频
2302_813806229 小时前
基础环境篇 – 交叉编译环境搭建与NFS服务配置
arm开发
极创信息9 小时前
信创领域五种主流CPU架构(X86 / ARM / RISC-V / MIPS / LoongArch)
java·arm开发·数据库·spring boot·mysql·软件工程·risc-v
AI服务老曹10 小时前
节省95%开发成本:支持X86/ARM与GPU/NPU异构部署的AI视频云网关架构深度解析
arm开发·人工智能·音视频
徐某人..1 天前
基于i.MX6ULL平台的智能网关系统开发
arm开发·c++·单片机·qt·物联网·学习·arm
2035去旅行1 天前
嵌入式开发,如何选择C标准库
linux·arm开发
进击的小头1 天前
20_第20篇:嵌入式外设驱动开发基础:寄存器级开发与库函数开发对比实战
arm开发·驱动开发·单片机
AI服务老曹1 天前
架构实战:如何构建支持X86/ARM及异构GPU/NPU的跨平台企业级AI视频管理系统?
arm开发·人工智能·架构
ai产品老杨1 天前
【架构深研】如何构建兼容X86/ARM与异构算力的AI视频中台?基于GB28181与边缘计算的源码交付实践
arm开发·人工智能·架构