汇编实现点灯

news2025/1/19 14:12:22

21271db48e384f58b44d1f046e9c9d9d.jpg

65649c467f724a7c93db00c701b89f2b.jpg 

 37688afd525645d4b0a8b98d571c3d2b.jpg

 

循环亮灯

.text 

.global _start

_start: 

 

 bl LED1_INIT

 bl LED1_ON

 bl delay_1s

 bl LED1_OFF

 

 bl LED2_INIT

 bl LED2_ON

 bl delay_1s

 bl LED2_OFF

 

 bl LED3_INIT

 bl LED3_ON

 bl delay_1s

 bl LED3_OFF

 

    bl _start

 

 /**********LED1点灯PE10**************/

LED1_INIT:

 @1.通过RCC_HB4_ENSETR寄存器设置GPIOE组时钟使能

 ldr r0,=0x50000A28

 ldr r1,[r0]

 orr r1,r1,#(0x1 << 4)

 str r1,[r0]

 @2.通过GPIOE_MODER寄存器设置PE10引脚为输出模式

 ldr r0,=0x50006000

 ldr r1,[r0]

 and r1,r1,#(~(0x3 << 20))

 orr r1,r1,#(0x1 << 20)

 str r1,[r0]

 @3.通过GPIOE_OTYPER寄存器设置PE10引脚为推挽输出模式

 ldr r0,=0x50006004

 ldr r1,[r0]

 and r1,r1,#(~(0x1 << 10))

 str r1,[r0]

 @4.通过GPIOE_OSPEEDR寄存器设置PE10引脚为低速输出模式

 ldr r0,=0x50006008

 ldr r1,[r0]

 and r1,r1,#(~(0x3 << 20))

 str r1,[r0]

 @5.通过GPIOE_PUPDR寄存器设置PE10引脚为禁止上下拉电阻

 ldr r0,=0x5000600c

 ldr r1,[r0]

 and r1,r1,#(~(0x3 << 20))

 str r1,[r0]

 mov pc, lr

 

LED1_ON:

 @1.通过GPIOE_ODR寄存器设置PE10引脚输出高电平

 ldr r0,=0x50006014

 ldr r1,[r0]

 orr r1,r1,#(0x1 << 10)

 str r1,[r0]

 mov pc, lr

 

LED1_OFF:

 @1.通过GPIOE_ODR寄存器设置PE10引脚输出低电平

 ldr r0,=0x50006014

 ldr r1,[r0]

 and r1,r1,#(~(0x1 << 10))

 str r1,[r0]

 mov pc, lr

 

 /**********LED2点灯PF10**************/

LED2_INIT:

 @1.通过RCC_HB4_ENSETR寄存器设置GPIOF组时钟使能

 ldr r0,=0x50000A28

 ldr r1,[r0]

 orr r1,r1,#(0x1 << 5)

 str r1,[r0]

 @2.通过GPIOE_MODER寄存器设置PF10引脚为输出模式

 ldr r0,=0x50007000

 ldr r1,[r0]

 and r1,r1,#(~(0x3 << 20))

 orr r1,r1,#(0x1 << 20)

 str r1,[r0]

 @3.通过GPIOE_OTYPER寄存器设置PF10引脚为推挽输出模式

 ldr r0,=0x50007004

 ldr r1,[r0]

 and r1,r1,#(~(0x1 << 10))

 str r1,[r0]

 @4.通过GPIOE_OSPEEDR寄存器设置PF10引脚为中速输出模式

 ldr r0,=0x50007008

 ldr r1,[r0]

 and r1,r1,#(~(0x3 << 20))

 orr r1,r1,#(0x1 << 20)

 str r1,[r0]

 @5.通过GPIOE_PUPDR寄存器设置PF10引脚为禁止上下拉电阻

 ldr r0,=0x5000700c

 ldr r1,[r0]

 and r1,r1,#(~(0x3 << 20))

 str r1,[r0]

 mov pc, lr

 

LED2_ON:

 @1.通过GPIOE_ODR寄存器设置PF10引脚输出高电平

 ldr r0,=0x50007014

 ldr r1,[r0]

 orr r1,r1,#(0x1 << 10)

 str r1,[r0]

 mov pc, lr

 

LED2_OFF:

 @1.通过GPIOE_ODR寄存器设置PF10引脚输出低电平

 ldr r0,=0x50007014

 ldr r1,[r0]

 and r1,r1,#(~(0x1 << 10))

 str r1,[r0]

 mov pc, lr

 

 /**********LED3点灯PE8**************/

LED3_INIT:

 @1.通过RCC_HB4_ENSETR寄存器设置GPIOE组时钟使能,LED1设置过

 ldr r0,=0x50000A28

 ldr r1,[r0]

 orr r1,r1,#(0x1 << 4)

 str r1,[r0]

 @2.通过GPIOE_MODER寄存器设置PE8引脚为输出模式

 ldr r0,=0x50006000

 ldr r1,[r0]

 and r1,r1,#(~(0x3 << 16))

 orr r1,r1,#(0x1 << 16)

 str r1,[r0]

 @3.通过GPIOE_OTYPER寄存器设置PE8引脚为推挽输出模式

 ldr r0,=0x50006004

 ldr r1,[r0]

 and r1,r1,#(~(0x1 << 8))

 str r1,[r0]

 @4.通过GPIOE_OSPEEDR寄存器设置PE8引脚为高速输出模式

 ldr r0,=0x50006008

 ldr r1,[r0]

 orr r1,r1,#(0x3 << 16)

 str r1,[r0]

 @5.通过GPIOE_PUPDR寄存器设置PE8引脚为禁止上下拉电阻

 ldr r0,=0x5000600c

 ldr r1,[r0]

 and r1,r1,#(~(0x3 << 16))

 str r1,[r0]

 mov pc, lr

 

LED3_ON:

 @1.通过GPIOE_ODR寄存器设置PE8引脚输出高电平

 ldr r0,=0x50006014

 ldr r1,[r0]

 orr r1,r1,#(0x1 << 8)

 str r1,[r0]

 mov pc, lr

 

LED3_OFF:

 @1.通过GPIOE_ODR寄存器设置PE8引脚输出低电平

 ldr r0,=0x50006014

 ldr r1,[r0]

 and r1,r1,#(~(0x1 << 8))

 str r1,[r0]

 mov pc, lr

 

@ 大概1s的延时函数

delay_1s:

 mov r3, #0x10000000

 mm:

 cmp r3, #0

 subne r3, r3, #1

 bne mm

 mov pc, lr

 

.end

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/556315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE5实现天际线分析效果

文章目录 1.实现目标2.实现过程2.1 后处理材质2.2 验证测试3.参考资料1.实现目标 UE5中使用CesiumForUnreal插件加载在线的地形影像与OSM建筑数据,再基于后处理材质实现天际线分析效果,GIF动图如下所示: 2.实现过程 依旧是通过边缘检测,得到天际线位置,再通过后处理材质将…

PointGPT 论文解读,点云的自回归生成预训练

PointGPT: Auto-regressively Generative Pre-training from Point Clouds 论文&#xff1a;https://arxiv.org/pdf/2305.11487.pdf 一种将GPT概念扩展到点云的方法&#xff0c;在多个3D点云下有任务中&#xff08;点云分类&#xff0c;part分割等&#xff09;上实现了最先进…

C++中set的用法

博主简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的人。 博主主页&#xff1a;陈童学哦 所属专栏&#xff1a;CSTL 前言&#xff1a;Hello各位小伙伴们好&#xff01;欢迎来到本专栏CSTL的学习&#xff0c;本专栏旨在帮助大家了解…

[SWPUCTF 2021 新生赛] (WEB一)

目录 gift_F12 jicao easy_md5​ caidao include easy_sql easyrce babyrce Do_you_know_http ez_unserialize gift_F12 1.开启环境 2.题目提示f12 ctrlf 搜索flag 得到flag "WLLMCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft} jicao 1.开启环境 2.传参 jso…

MyBatis-Plus中AutoGenerator的详细使用案例

AutoGenerator是什么&#xff1f; AutoGenerator 是 MyBatis-Plus 的代码生成器&#xff0c;通过 AutoGenerator 可以快速生成 Pojo、Mapper、 Mapper XML、Service、Controller 等各个模块的代码 AutoGenerator能干什么&#xff1f; 对于单表而言&#xff0c;几乎是一个全能…

调用百度API实现菜品识别

调用百度API实现菜品识别 1、作者介绍2、百度API菜品识别接口介绍2.1图像识别接口介绍2.2接口使用说明2.2.1请求示例2.2.2请求参数 3、调用百度API流程4、代码实现 1、作者介绍 李延&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2022级研究生 研究方向&…

如何禁用网络共享打印?

139端口是为“NetBIOS Session Service”提供的&#xff0c;主要用于提供Windows文件和打印机共享以及Unix中的Samba服务。在Windows中要在局域网中进行文件的共享&#xff0c;必须使用该服务。 开启139端口虽然可以提供共享服务&#xff0c;但是常常被攻击者所利用进行攻击&am…

chatgpt赋能Python-python_chi

Python Chi&#xff1a;掌握Python语言的关键 Python是一种面向对象、直译式计算机程序设计语言&#xff0c;被广泛应用于各种领域。无论是数据分析、人工智能、Web开发、网络爬虫还是科学计算&#xff0c;Python都扮演着重要的角色。而Python Chi则是Python语言中一个重要的方…

HQL函数--打地鼠游戏及WordCount案例分析及实现

1.打地鼠 uid,hit,m 1,1,0 1,2,1 1,3,1 1,4,1 1,5,0 1,6,0 1,7,1 2,1,1 2,2,1 2,3,1 2,4,1 2,5,1 3,1,1 3,2,1 3,3,1 3,4,0 3,5,0 3,6,1 3,7,0 3,8,1 create table tb_ds( uid int , -- 用户名 hit int , -- 第几次打地鼠 m int -- 是否命中 1命中 0 …

Request响应和Response对象

什么是Request响应和Response对象 实际上就是指Request对象和Response对象。 一个get或者post请求实际上就是一些有规律的字符串&#xff0c;Tomcat将这些字符串获取并且封装成一个可操作的对象。 通过Response对象可以设置响应数据&#xff0c;也就是Tomcat想要给浏览器发送…

Redis安全性详解

目录 ​编辑 Redis安全性详解 1.Redis的访问控制措施。 2.Redis的密码认证机制 3.Redis的绑定IP地址 4.Redis的网络ACL 5.Redis的防火墙或网络安全组 Redis安全性详解 Redis是一个快速、开源的内存数据库&#xff0c;被广泛用于缓存、消息传递和数据存储等场景。然而&a…

sql查询每组数据中时间最大的一条

sql查询每组数据中时间最大的一条 前言代码总结 前言 先来了解一下业务需求。博主好久没写过后端了&#xff0c;这一写就直接碰到我知识盲区了 我们简单还原一下&#xff0c;这里使用一个表模拟下 表的字段如下 表的内容如下&#xff0c;我们的需求就是取出相同name的数据中…

五、AOP(1)

一、AOP基本概念 1.什么是AOP 面向切面编程&#xff08;方面&#xff09;&#xff0c;利用AOP可以对业务逻辑的各个部分进行隔离&#xff0c;从而使得业务逻辑各部分之间的耦合度降低&#xff0c;提高程序的可重用性&#xff0c;同时提高了开发的效率。不通过修改源代码方式添…

章节1:Burp Suite基本介绍

章节1&#xff1a;Burp Suite基本介绍 Burp [bɜ:p] Suite [swiːt] 01 Burp Suite基本介绍 官网介绍 https://portswigger.net/ 主要产品 Burp Suite培训和认证&#xff08;Academy&#xff09;研究院&#xff08;Research&#xff09;日报&#xff08;Daily&#xff09;…

win10下annoconda安装及更改镜像源,加速软件下载速度

1 annoconda下载 文件地址&#xff0c;选择版本下载https://repo.anaconda.com/archive/ 如下在win10版本&#xff1a; https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Windows-x86_64.exe 完成后根据向导安装。 2 清空镜像源&#xff0c;回到初始状态…

QT之动态加载下拉框(QComboBox)

QT之动态加载下拉框&#xff08;QComboBox&#xff09; 简介效果原理分析实现 简介 这两天遇到一个需求&#xff0c;需要下拉选项中动态加载一些数据&#xff0c;实现之后感觉挺有意思&#xff0c;特此记录一下。 效果 还是先看下效果&#xff0c;源码也放在文末了 原理分…

图形学中的抗锯齿讨论以及在unity中的应用

抗锯齿(Anti-Aliasing)是图形学中&#xff0c;很重要的一个部分。本文旨在做一些分析总结&#xff0c;并对平时不理解的细节&#xff0c;做了调研总结&#xff0c;但毕竟不是做GPU行家&#xff0c;所以有不对的地方&#xff0c;欢迎拍砖^^。 1 什么是锯齿 下图&#xff0c;是…

Linux 防火墙 Firewalld

firewalld概述 firewalld防火墙是Centos7系统默认的防火墙管理工具&#xff0c;取代了之前的iptables防火墙&#xff0c;也是工作在网络层&#xff0c;属于包过滤防火墙。 firewalld和iptables都是用来管理防火墙的工具&#xff08;属于用户态&#xff09;来定义防火墙的各种规…

《C++primer》5~6章总结

《CPrimer》 语句函数 语句 if else 就C而言&#xff0c;规定else与离它最近的尚未匹配的if匹配&#xff0c;从而消除程序的二义性&#xff0c;所以最好的处理方法就是养成习惯在if else 后面加一个花括号swirch搭配case关键字使用&#xff0c;case关键字和它对应的值一起被称…

PCB~地平面

地平面的特征 • 在同一块板子上&#xff0c;无线数字信号经常会有较高的数字逻辑&#xff0c;例如高增益的RF电路 • 屏蔽和接地对于接收端的设计是非常有效的 – 辐射在源端就应该被屏蔽掉 – 地平面电流应该回到源端 – 电源电流会通过最小电阻和电感路径回到源端 • 至少有…