51单片机汇编语言设计流水灯

1、仿真原理图

2、汇编代码及详细注释 

(1)、代码1


ORG 0000H 		; 设置代码起始地址为0000H 熄灭发光二极管
MOV A,#0FEH 	; 将数值0FEH载入A寄存器,熄灭所有发光二极管
MOV P1, A 		; 将A寄存器的值移动到P1寄存器,将0FEH写入P1端口
LOOP: 			; LOOP标签处的代码
	RL A 			; 将A寄存器的值左循环移位,实现流水灯效果
	MOV P1, A 		; 将A寄存器的值移动到P1寄存器,更新P1端口
	CALL Delay 	; 调用延时函数,进行延时
	SJMP LOOP 		; 跳转到LOOP标签处,循环执行

Delay: 		; Delay标签处的延时函数
	MOV R2,#10 	; 将100载入R2寄存器,作为外循环计数器
	MOV R1,#10 	; 将10载入R1寄存器,作为内循环计数器
	MOV R0,#10 	; 将10载入R0寄存器,作为最内循环计数器
DLP: 			; DLP标签处的代码
	DJNZ R0, DLP 	; 如果R0不为0,则减1并跳转到DLP标签处,进行最内循环
	DJNZ R1, DLP 	; 如果R1不为0,则减1并跳转到DLP标签处,进行内循环
	DJNZ R2, DLP 	; 如果R2不为0,则减1并跳转到DLP标签处,进行外循环
	RET 			; 返回到调用者
	END 			; 程序结束


(2)、代码2

引入外部中断0按键控制

ORG 0000H 		; 设置代码起始地址为0000H
	AJMP MAIN 		; 跳转到MAIN标签处
	ORG 0003H 		; 设置代码起始地址为0003H
	AJMP ESINT 		; 跳转到ESINT标签处
	ORG 000BH 		; 设置代码起始地址为000BH
	AJMP DST0 		; 跳转到DST0标签处
	ORG 0100H 		; 设置代码起始地址为0100H

MAIN:			; MAIN标签处的代码
	MOV TMOD,#01H 		; 设置定时器模式
	SETB IT0 		; 设置外部中断0为下降沿触发
	MOV TH0,#3CH 		; 设置定时器0的高8位初值
	MOV TL0,#0B0H 		; 设置定时器0的低8位初值
	SETB PT0 		; 设置定时器0为自动重载方式
	CLR TR0 		; 清除定时器0运行控制位
	SETB EX0 		; 使能外部中断0
	SETB ET0 		; 使能定时器0中断
	SETB EA 		; 全局中断使能
		
	MOV P1,#0FEH 		; 将P1寄存器设置为0FEH
	MOV A,P1 		; 将P1寄存器的值移动到A寄存器
	MOV R0,#5 		; 将立即数5移动到R0寄存器
	AJMP $ 		; 无条件跳转到当前地址

	ORG 0200H 		; 设置代码起始地址为0200H
ESINT:			; ESINT标签处的代码
	CPL TR0 		; 完全翻转TR0寄存器的值,控制启停
	RETI 			; 从中断返回
	ORG 0300H 		; 设置代码起始地址为0300H
DST0: 			; DST0标签处的代码
	MOV TH0,#3CH 		; 设置定时器0的高8位初值
	MOV TL0,#0B0H 		; 设置定时器0的低8位初值
	CLR TR0 		; 清除定时器0运行控制位
	DEC R0 		; R0寄存器的值减1
	CJNE R0,#0,UNACT 	; 比较R0寄存器的值是否等于0,如果不等于0,跳转到UNACT标签处
	MOV R0,#5 		; 如果R0寄存器的值等于0,将立即数5移动到R0寄存器
	RL A 		; 将A寄存器的值左循环移位
	MOV P1,A 		; 将A寄存器的值移动到P1寄存器
UNACT: 			; UNACT标签处的代码
	SETB TR0 		; 设置TR0寄存器为1,启动定时器0
	RETI 			; 从中断返回
	END 			; 程序结束

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

重组蛋白表达系统优缺点对比|卡梅德生物

重组蛋白是现代生物技术中不可或缺的一部分,它们广泛应用于药物开发、研究工具和工业酶的生产。根据目标蛋白的特性和所需的修饰,可以选择不同的表达系统。下文罗列一下四个主要蛋白表达系统的优缺点: 1. 原核表达系统(如大肠杆菌…

MySQL学习之DQL语句(数据查询语言)

准备SQL CREATE TABLE student ( id int, -- 编号 name varchar(20), -- 姓名 age int, -- 年龄 sex varchar(5), -- 性别 address varchar(100), -- 地址 math int, -- 数学 english int -- 英语 );INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES (1,…

百变大侦探秘之馆的魔术师是谁 秘之馆的魔术师怎么打真相解析

百变大侦探秘之馆的魔术师是一个6人的困难剧本,这次我们将来到动物世界,虽然参与进来的都是各种代号的动物,但他们每个都聪明绝顶,所以今天的真相解析也会比较困难,故事就这样开始了,我们来看看谁才是魔术师…

什么是住宅IP代理?为什么需要家庭 IP 代理

家庭代理 IP 允许您选择特定位置(国家、城市或移动运营商)并作为代理上网该区域的真实用户。住宅代理 IP 可以定义为保护用户免受一般网络流量影响的中介。它们在隐藏您的 IP 地址的同时充当缓冲区。住宅代理 IP 是服务提供商分配给用户的替代 IP 地址。…

docker部署kafka实战

目录 一、部署kafaka、zookeeper 二、测试信息发送与接收 三、kafka进阶 一、部署kafaka、zookeeper 请提前安装docker、docker-compose 安装docker:docker--安装docker-ce-CSDN博客 安装docker-compose: 安装docker-compose_安装 docker-compose-CSD…

Vue前端项目打包,并部署Vue项目到Linux云服务器上

一. vue前端项目打包 1.使用vscode开发项目 2.在config目录下的prod.env.js文件当中配置我们后端服务器的IP地址和端口号,因为这是在实际的部署当中所以必须要在生成环境下进行项目的部署。 如图所示: 3.在config目录下的index.js文件当中要改assetsPu…

C++容器之多重映射(std::multimap)

目录 1 概述2 使用实例3 接口使用3.1 construct3.2 assigns3.3 iterators3.4 capacity3.5 insert3.6 erase3.7 swap3.8 clear3.9 emplace3.10 emplace_hint3.11 key_comp3.12 value_comp3.13 find/count3.14 lower_bound/upper_bound/equal_range3.15 get_allocator1 概述 多重…

小白跟做江科大32单片机之新建工程

项目基础配置 1.新建item文件夹,包含全部stm32项目文件 2.在item文件夹中新建第一个项目,2-1 stm32工程模板,起名字是project 3.工程芯片选择STM32F10318,因为课程中的芯片是STM32F10318C8T6 4.在固件库\STM32F10x_StdPeriph_…

【Docker实操】启动redis服务

一、步骤 1、获取redis镜像 执行获取redis镜像命令&#xff1a;docker pull redis。打印镜像清单&#xff0c;可以看到新拉到的redis镜像。 2、创建redis.conf配置文件 linux主机 mkdir -p /root/www/redis/conf touch /root/www/redis/conf/redis.conf cat << EOF &…

ICML2024高分论文!大模型计算效率暴涨至200%,来自中国AI公司

前段时间&#xff0c;KAN突然爆火&#xff0c;成为可以替代MLP的一种全新神经网络架构&#xff0c;200个参数顶30万参数&#xff1b;而且&#xff0c;GPT-4o的生成速度也是惊艳了一众大模型爱好者。 大家开始意识到—— 大模型的计算效率很重要&#xff0c;提升大模型的token…

深入解析文华量化交易策略---交易指令如何选择

随着金融投资的迅猛发展&#xff0c;自动化策略模型已逐渐成为现代投资领域的一股重要力量。量化交易模型均以数据为驱动&#xff0c;通过运用数学模型和算法&#xff0c;对期货、黄金等投资市场走势进行精准预测和高效交易。 艾云策略整理了量化策略相关资料&#xff0c;希望通…

孢子捕捉分析仪的工作原理

TH-BZ1孢子捕捉分析仪是一种专门用于捕捉和分析空气中飘浮的病原菌孢子的设备。它利用现代传感技术、图像识别技术和网络通信技术&#xff0c;通过设置在田间的设备&#xff0c;连续不断地抽吸周围空气&#xff0c;吸附空气中漂浮的病原菌孢子到特制的载玻带上。然后&#xff0…

【AJAX前端框架】Asynchronous Javascript And Xml

1 传统请求及缺点 传统的请求都有哪些&#xff1f; 直接在浏览器地址栏上输入URL。点击超链接提交form表单使用JS代码发送请求 window.open(url)document.location.href urlwindow.location.href url… 传统请求存在的问题 页面全部刷新导致了用户的体验较差。传统的请求导…

【Linux安全】Firewalld防火墙

目录 一.Firewalld概述 二.Firewalld和iptables的关系 1.firewalld和iptables的联系 2.firewalld和iptables的区别 三.Firewalld区域 1.概念 2.九个区域 3.区域介绍 4.Firewalld数据处理流程 四.Firewalld-cmd命令行操作 1.查看 2.增加 3.删除 4.修改 五.Firewa…

hbase版本从1.2升级到2.1 spark读取hive数据写入hbase 批量写入类不存在问题

在hbase1.2版本中&#xff0c;pom.xml中引入hbase-server1.2…0和hbase-client1.2.0就已经可以有如下图的类。但是在hbase2.1.0版本中增加这两个不行。hbase-server2.1.0中没有mapred包&#xff0c;同时mapreduce下就2个类。版本已经不支持。 <dependency><groupId>…

GBase 8s 如何查看回滚的事务 和对应的SQL

描述&#xff1a; 如何查看当前数据库中是否有事务在回滚&#xff0c; 如果有&#xff0c; 具体是哪条 SQL 在回滚&#xff1f; 解决办法&#xff1a; 方法1&#xff1a; 通过 onstat -u|grep RP&#xff1b; 可以获取相关的 sessionid。 通过 onstat -g ses sid 获取 SQL&a…

Spring系列-01-IOC的依赖查找和依赖注入

IOC基础 IOC发展 初始场景, 不使用IOC如何实现 假定现在有一下需求, 开始使用的数据源是MySQL, 后续数据源变动为Oracle, 那么我们的代码就需要改动 每次切数据源都需要改动, 那么进行优化 静态工厂解决强依赖 在01版本基础上, 使用静态工厂对多个数据源进行了封装, 要哪…

HTML静态网页成品作业(HTML+CSS)——魅族商城首页网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

登录安全分析报告:创蓝云智注册

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

基于C#Winform+DevExpress项目开发实战之一

1&#xff0c;基于C#WinformDevExpress项目开发实战之一