实验二 单片机汇编语言算法实现(排序控制LED灯亮灭)

2023-05-16

这里写目录标题

  • 实验二 汇编语言算法实现实验
    • 一、实验目的
    • 二、实验内容
    • 三、实验结果

实验二 汇编语言算法实现实验

一、实验目的

(1)掌握汇编语言工程的编写。
(2)对单片机 I/O 接口汇编控制有初步认识。
(3)掌握IO口原理接法及控制原理。

二、实验内容

(1)学习汇编语言,掌握MCS-51的基本汇编语句,并实现简单排序等基础算法的编写
(2)学习汇编语言,并实现外设接口的控制,结合算法输出使用P3.2口输出控制LED灯亮灭,实现LED灯亮灭延时

三、实验结果

1、排序部分
排序部分采用的冒泡排序
冒泡排序的代码如下,首先我采用将数据放到40H为起始的部分,存放八个单元,并设置一个负责计数的寄存器R0来控制循环
在这里插入图片描述

两层循环控制冒泡进行排序,每一次比较,最终将最大的数放在最后
在这里插入图片描述

调试阶段:
首先看到开始40H单元为0
在这里插入图片描述

单步执行,将数据先送入内存单元
在这里插入图片描述

运行排序部分的代码,循环两次后可以看到,2与10的位置发生变换
在这里插入图片描述

继续执行,执行循环若干次可以看到10到达最终的位置
在这里插入图片描述

其余以此类推,得到最终的排序结果
在这里插入图片描述

2、LED灯亮暗延时
主要的实现思想就是采用调用一个子程序,实现延时
在这里插入图片描述

进入调试阶段
执行完排序操作以后,在外围设备处找到P3口,观察到P3.2口不但变化

在这里插入图片描述

ORG 0000h
LJMP MAIN
ORG 0030H

MAIN:
	
	MOV 40H,#10H
	MOV 41H,#2H
	MOV 42H,#4H
	MOV 43H,#5H
	MOV 44H,#3H
	MOV 45H,#1H
	MOV 46H,#3H
	MOV 47H,#6H
    MOV R0,#8

LOOP1:
		MOV R2,  #7;
		MOV R1,  #40H;
LOOP2:
		MOV A,  @R1;
		INC R1;
		CLR C;
		SUBB A,  @R1;	 
		JNC NEXT;		 cy=0跳转升序,降序JC
		DJNZ R2,  LOOP2;
		DJNZ R0,  LOOP1;
		;SJMP $;




DELAY:
	CLR P3.2 ;清零位指令CLR
	LCALL YS ;调用延时子程序
	SETB P3.2 ;1位指令SETB,即让P3.2恒定输出1
	LCALL YS ;调用延时子程序
	LJMP DELAY

YS:
	MOV R7,#10
	DJNZ R7,$
RET 





NEXT:
		MOV A,  @R1;
		DEC R1;
		XCH A,  @R1	;字节交换
		INC R1;
		XCH A,  @R1;
		
		DJNZ R2,  LOOP2;
		DJNZ R0,  LOOP1;
		SJMP $;	   
		


END

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实验二 单片机汇编语言算法实现(排序控制LED灯亮灭) 的相关文章

  • gets()函数

    gets 函数 1 描述 C 库函数 char gets char str 从标准输入 stdin 读取一行 xff0c 并把它存储在 str 所指向的字符串中 当读取到换行符时 xff0c 或者到达文件末尾时 xff0c 它会停止 xff
  • win11系统新版edge不兼容网银如何解决【解决办法】

    由于目前国内的网银都是基于IE浏览器进行开发的 xff0c 由于微软推行Edge xff0c Win11把IE砍掉后 xff0c 会将IE的链接强制跳转到Edge上 xff0c 很多网银无法调用 xff0c 对于需要使用Web网银的用户来说
  • 如何判断输入的字符是小写字母、大写字母还是数字?

    一 比较判断 计算机中字符都有自己的ASCII码 xff0c 并且数字 xff0c 字母都有自己的范围 如下 xff1a 类型ASCII码数字0 948 57大写字母A Z65 90小写字母a z97 122 但是在编码时可能记不住ASCI
  • C语言· 实现各进制间的相互转换

    数制只是人用来计数的不同方法 xff0c 但他们所表示的量不会改变 下面我们试着用C语言来实现数制之间的转换 一 由十进制转换为其他进制 我们常用的更为熟悉的是十进制 xff0c 那我们就用十进制开始 xff08 下面用二进制举例 xff0
  • C语言——如何简单地实现四舍五入

    如何实现数的四舍五入 span class token macro property span class token directive keyword include span span class token string lt st
  • 菜鸡自学 Python 笔记(二)

    菜鸡自学 Python 笔记 xff08 二 xff09 五 xff0c 结构与语句1 选择结构 if 语句2 循环控制语句 xff08 1 xff09 while 语句 xff08 2 xff09 for 语句 xff08 3 xff09
  • 菜鸡自学 Python 笔记(三)

    菜鸡自学 Python 笔记 xff08 三 xff09 九 函数1 内置函数2 自定义函数3 带参数的函数4 函数的返回值 十 处理异常和错误1 异常捕捉2 抛出异常3 自定义异常 十一 类与对象1 创建类和实例对象2 属性的公有 私有3
  • 一篇文章学会 Python 正则表达式!

    菜鸡自学 Python 笔记 xff1a 正则表达式 一 简单理解二 re findall函数三 普通字符与元字符1 普通字符2 元字符 四 修饰符 xff08 可选标志 xff09 五 re sub函数六 re match函数七 re s
  • DOM型XSS

    gt DOM型XSS与之前两种在原理上有本质区别 xff0c 它的攻击代码并不需要服务器解析响应 xff0c 触发XSS靠的是浏览器端的DOM解析 客户端上的JavaScript脚本可以直接访问浏览器的DOM并修改页面的内容 在客户端直接输
  • 三大linux系统对比

    概述 xff1a centos作为服务器部署是第一选择 CentOS去除很多与服务器功能无关的应用 xff0c 系统简单但非常稳定 xff0c 命令行操作可以方便管理系统和应用 xff0c 丰富的帮助文档和社区的支持 ubuntu最佳的应用
  • SQL数据查询之单表查询

    目录 语句格式 选择表中的若干列 查询表中所有列 选择表中的若干元组 查询满足条件的元组 字符匹配 涉及空值的查询 多重条件查询 ORDRD BY子句 聚集函数 GROUP BY子句 语句格式 SELECT ALL DISTINCT lt
  • NVIDIA CUDA安装失败解决方法

    CUDA安装失败原因可能与显卡驱动安装有关 xff0c 之前安装的显卡驱动影响了cuda安装 xff0c 建议就是清除原本的显卡驱动安装 xff0c 自动重启 xff0c 再重新安装cuda 下载显卡驱动安装工具解压 百度网盘链接 xff1
  • Jenkins在Linux环境下的安装与配置,包含遇到的问题以及解决方法

    一 Jenkins简介 Jenkins是一个开源软件项目 xff0c 是基于Java开发的一种持续集成 xff08 CI xff09 工具 xff0c 用于解决持续重复的部署 监控工作 xff1b 它一个开放易用的软件平台 xff0c 大大
  • win10添加ubuntu的网络硬盘,实现远程操作ubuntu硬盘

    1 前言 在工作时候经常需要在本地windows10和另外一台ubuntu上实现数据共享 xff0c 如果使用远程工具会非常麻烦 xff0c 需要收发文件 既然在同一个局域网情况下 xff0c 那么有没有办法实现远程操作硬盘呢 xff0c
  • (1)数据包嗅探和欺骗-SEED Ubuntu 20.04

    数据包嗅探和欺骗 网络安全课程实验一 在做的时候参考了很多网上主要就是CSDN上的教程 xff08 感觉最近还是很忙 xff0c 所以等我有空想起来再来写这个教程 xff09 xff08 下面放一下我的实验报告部分 xff0c 里面有流程
  • 实验一的命令代码

    实验一 dcbuild 下载容器所需的image镜像 xff0c 如果已经有了 xff0c 就跳过 dcup 即docker compose up 安装容器并启动 cd Labsetup1 1 1 vi test1 py 写一个python
  • 安装Proxmox VE系统报错

    安装Proxmox VE系统 报错内容如下 xff1a Waiting for dev to be fully populated 8 344009 hdaudio hdaudioCoD2 Unable tobind the codecdo
  • PUT和DELETE部署在内网服务器后 外网无法请求的问题

    PUT和DELETE部署在内网服务器后 外网无法请求的问题 这问题困扰我好几天 xff0c 本身就不是搞运维的 xff0c 且实习时长 俩年半 半年的小辣鸡 xff0c 被赶鸭子上架 系统部署在甲方的内网服务器里 xff0c 然后他们通过V
  • C语言冒泡排序法,用函数形式实现。

    冒泡排序法 释疑 xff1a 冒泡排序法是将数组中的元素依次从小到大 xff08 Also 从大到小 xff09 进行排序下来 请看如下操作 xff01 共有4个数 xff0c 如 2 xff0c 4 xff0c 1 xff0c 3 进行N
  • Gorm之下载安装gorm.io/driver/sqlite依赖

    文章目录 Gorm之下载安装gorm io driver sqlite依赖1 会出错2 下载MinGW3 配置MinGW环境变量4 检测是否配置成功5 再次下载依赖即可成功 Gorm之下载安装gorm io driver sqlite依赖

随机推荐

  • Sheep to sheep

    背景 最近被这只羊折腾的够呛 xff0c 不管怎样就是过不了 xff0c 最终幡然醒悟 xff0c 还是得借助点外力 xff0c 上点技术手段才行 在网上找一下可行的方法 xff0c 看到比较简单的方法有两种 xff1a 抓包 xff1b
  • CentOS8.4 OpenLDAP服务配置

    目录 OpenLDAP简介 基本操作 配置文件 服务端配置 配置下载证书 生成数据库并设置权限 调用模块 定义访问和认证信息 定义目录结构 配置用户认证结构 测试 NFS服务配置 客户端配置 测试 挂载用户目录 相关知识 注意事项 环境 服
  • C语言排序算法之选择排序

    文章目录 一 选择排序的概述二 选择排序算法代码详解 xff08 1 xff09 算法分析 xff08 2 xff09 选择排序算法代码详解 三 总代码 一 选择排序的概述 选择排序 xff08 Selection sort xff09 是
  • CodeForces - 501B Misha and Changing Handles(Map)

    题目大意 xff1a 就是讲在codeforces网站上 xff0c 由于一个黑客 xff0c 大家都可以随便改名字了 xff0c 有的人就改了一次又一次 xff0c xff08 当然也有的人就只改一次 xff09 然后题目问你一共有多少个
  • LINUX文件编程之——open(文件打开及创建)

    文件的打开及创建 C语言打开及创建文件需要用到open 函数 xff0c open函数在三个头文件当中 xff1a open函数 函数原型 xff1a open函数的返回值是一个小的 非负整数 xff0c 这个整数是被open打开的文件描述
  • linux文件编程之——write、read、lseek、close(文件的写、读、光标移动,关闭操作)

    文件的写入 xff08 write xff09 昨天已经学习了文件的打开及创建 xff0c 及使用open函数 xff0c 传递不同的参数可以实现文件的打开及创建 xff0c 并赋予文件的权限 xff0c 今天延续昨天的学习内容 文件的写入
  • 嵌入式笔试——笔试题目

    单选 xff08 15题 xff09 第一题 栈简介 栈由操作系统 xff08 编译器 xff09 自动分配释放 xff0c 用于存放函数的参数值 局部变量等 xff0c 其操作方式类似于数据结构中的栈 堆简介 堆由开发人员分配和释放 xf
  • ARM———第一天

    1 为什么学习ARM xff1f 嵌入式 xff1a 操作硬件的软件 嵌入式系统分两大类 xff1a 1 应用程序 xff0b 硬件 2 应用程序 xff0b 操作系统 xff0b 硬件 ARM是学习嵌入式的入门 xff0c 也是学习系统移
  • ARM———第二天

    1 什么是汇编指令 汇编指令 xff1a 是机器指令的助记符 xff0c 经过编译后会得到一串01010组成的机器码 xff0c 可以由cpu读取执行 伪指令 xff1a 本质上不是指令 xff0c 只是和指令一起写在代码中 xff0c 是
  • LINUX内核

    Linux内核功能 内存管理 操作系统内核功能管理设备实际的物理内存 xff0c 还可以创建和管理虚拟内存 xff08 Swap xff09 xff1b 通过硬盘的存储空间来创建虚拟内存 xff0c 叫内存交换空间 xff08 Swap s
  • man手册各章节的意义

    man手册分成很多section xff0c 使用man时可以指定不同的section来浏览 xff0c 各个section意义如下 xff1a 1 commands 2 system calls 3 library calls 4 spe
  • Dockerfile

    1 Docker 镜像原理 操作系统组成部分 xff1a 进程调度子系统 进程通信子系统 内存管理子系统 设备管理子系统 文件管理子系统 网络通信子系统 作业控制子系统 Linux 文件系统由 bootfs 和 rootfs 两部分组成 b
  • 一、STM32寄存器点亮LED灯

    目录 一 xff1a 硬件介绍 二 xff1a 三步点亮LED灯 三 xff1a 新建工程 四 xff1a 寄存器程序 1 xff1a 使能GPIOC的时钟 2 配置GPIOC13端口为输出模式 xff08 端口配置寄存器 xff09 3
  • 0、Linux虚拟机打印hello world

    Ctrl 43 Alt 43 T 打开终端 xff0c 输入sudo apt get install vim 下载vim 输入sudo apt get install gcc xff0c 下载gcc 下载完成后输入clear 可以清除终端
  • VS2017提示 LNK1104 无法打开文件 kernel32.lib

    在C盘里搜索kernel32 lib的路径 xff0c 然后添加到项目 gt 属性 gt VC 43 43 目录 gt 库目录里去就好了 但不知道为什么 xff0c x64路径下的kernel32就不行
  • 【智能无线小车系列四】树莓派操作系统安装

    对于第一次接触树莓派的人来说 xff0c 初次点亮树莓派的过程总是最为激动人心的 其实它就跟我们刚刚买回来的电脑一样 xff0c 首先需要做的就是安装操作系统 还记得上操作系统课程的提到 xff0c 操作系统是软件和硬件之间的桥梁 xff0
  • 使用c++实现学生成绩管理系统

    学生成绩管理系统 一 前言二 系统介绍头文件 CStudent h 2 源文件 xff08 实现函数 xff09 3 源文件 xff08 测试函数 xff09 4 运行截图 三 总结 一 前言 学生成绩管理系统的设计 xff0c 可以更好地
  • 魔百盒cm311-1a yst 青龙

    Armbian Debian 清华源 tsinghua source 清华源 deb https mirrors tuna tsinghua edu cn debian buster main contrib non free deb sr
  • 手把手教你安装Python3.x

    目录 普通安装下载安装包安装Python设置Python安装包 其他安装参考资料End 普通安装 下载安装包 打开浏览器 进入 Python 官网网站 xff08 https www python org xff09 xff0c 因为网站在
  • 实验二 单片机汇编语言算法实现(排序控制LED灯亮灭)

    这里写目录标题 实验二 汇编语言算法实现实验一 实验目的二 实验内容三 实验结果 实验二 汇编语言算法实现实验 一 实验目的 xff08 1 xff09 掌握汇编语言工程的编写 xff08 2 xff09 对单片机 I O 接口汇编控制有初