第4周实验---汇编程序与周期性任务设计

【51单片机】汇编程序与周期性任务设计 DJNZ的指令周期为两个机器周期,在12MHz的晶振单片机中,机器周期为1us,即执行DJNZ指令需要2us,每执行一次循环计数器递减,即R0的值减1,不断重复直至R7减到0,指令结束。在51单片机的延时汇编函数中,涉及到指令周期、机器周期和时钟周期,它们之间存在一定的关系。普中开发板将我们的虚拟仿真实验投影到实物上,在正式操作之前可以先去了解和学习一下其原理和操作:-------------------------------------------------------------------- 阅读详情

1)周期性

(1)LED周期性闪烁

(I)多重循环软件计数的定时

查阅汇编指令 “MOV R6,#250”和“DJNZ R6,D2”的指令周期数,计算其对应的时钟周期 us值;然后计算 Delay函数的总的循环次数和对应的时钟周期总数us, 说明这个LED灯大约每隔多少毫秒(ms)或秒(s)才变化一次亮灭状态

在计算机体系结构中,指令周期数是指完成一条指令所需的时钟周期数。其中,时钟周期数是指一条指令的执行需要的时钟周期数,时钟周期时间是指每个时钟周期的持续时间。通常情况下,指令周期数越小,表示计算机执行指令的效率越高。

LOOP: SETB 90H
LCALL DELAY
CLR 90H
LCALL DELAY
AJMP LOOP
       
DELAY:MOV R0,#8
D0:MOV R7,#250
D1:MOV R6,#250
D2:DJNZ R6,D2
   DJNZ R7,D1
   DJNZ R0,D0
   RET
END

计量运行时间在1s左右

(II)循环+nop指令

LOOP: SETB 90H
LCALL DELAY
CLR 90H
LCALL DELAY
AJMP LOOP

DELAY:MOV R7,#250
   D1:MOV R6,#250
   D2:NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
DJNZ R6,D2
DJNZ R7,D1
   RET
END

计量运行时间在1s左右

2)查找平方数的汇编程序

以下是一个使用查表法完成求平方数的汇编程序示例:

ORG 0000H
Square_Table: DB 1,4,9,16,25,36,49,64,81
MOV DPTR,#SQUARE_TABLE
MOV A ,#8
DEC A
MOVC A,@A+DPTR
MOV R0,A
END

在这个示例程序中,我们创建了一个平方数表TABLE,其中包含了0到9的平方数。程序通过查表的方式获取平方数,然后调用显示函数将结果显示出来。

3)在普中单片机开发板上重新完成点亮流水灯和LED灯周期性闪烁

(1)点亮LED流水灯

void main(void)
{
	while(1)
	{
		P0=0xfe;
		delay_ms(50);
		P0=0xfd;
		delay_ms(50);
		P0=0xfb;
		delay_ms(50);
		P0=0xf7;
		delay_ms(50);
		P0=0xef;
		delay_ms(50);
		P0=0xdf;
		delay_ms(50);
		P0=0xbf;
		delay_ms(50);
		P0=0x7f;
		delay_ms(50);
	}
}

如下列视频LED流水灯被点亮

Motorola HC05EVS评估系统与X4EM仿真器配置与调试全解析 在嵌入式系统开发中,仿真器是连接软件与硬件的重要调试工具,它允许开发者在真实或模拟的硬件环境中执行代码、观察寄存器状态和设置断点,从而显著提升开发效率和问题排查能力。其工作原理通常是通过驻留的监控MCU来模拟目标芯片的行为,并通过专用接口与上位机软件通信,实现程序下载和实时调试。这种技术对于早期8位MCU的开发尤为关键,能够避免频繁的芯片烧录并保护珍贵的样片。在实际的工程实践中,仿真器的应用场景广泛,包括汽车电子、工业控制等对可靠性和实时性要求高的领域。本文聚焦于Motorola经典的HC05EVS评估系统 阅读详情

相关推荐

8086微处理器控制流水灯仿真电路设计与实现

本文还有配套的精品资源,点击获取 简介:8086微处理器结合8255并行接口芯片和4LS373三态缓冲器,用于实现流水灯电路仿真。本项目通过编写8086汇编程序,设置I/O端口,控制LED灯的亮灭,形成连续的视觉效果,旨在帮助初学者理解微处理器与外围硬件的交互。项目内容涉及硬件设计、汇编语言编程及嵌入式系统开发,是学习微处理器控制系统的优秀实践案例。 1. 808...

weixin_35390379的博客 1787

汇编程序与周期性任务设计

在8051微控制器中,如果使用一个12MHz的晶振,每个机器周期(即时钟周期)为1/(12MHz) = 约83.33ns。DELAY函数的总机器周期数为1 + 1 + (2 * 250) + (4 * 250) + 2 = 1506个机器周期。总机器周期数 = 主循环的机器周期数 * 亮灭变化次数 + DELAY函数的机器周期数 * 亮灭变化次数。因此,主循环一次的总机器周期数为1 + 2 + 1 + 2 + 2 = 8个机器周期。总时间(us)= 总机器周期数 * 每个机器周期的时间(us)

weixin_50037440的博客 911

微机原理电梯实验全解析:从8255A到状态机设计与调试

在微机原理与接口技术课程中,模拟电梯是经典的工程实践项目,它完整融合了I/O端口译码、8255A并行接口、8253定时器、8259A中断管理以及状态机控制逻辑。理解这类实时控制系统的核心,需要从接口芯片的初始化配置到数据结构的调度算法层层深入。掌握端口地址计算、按键去抖、数码管动态扫描等基础原理,不仅能顺利完成实验,更能建立嵌入式系统开发的底层思维。通过剖析电梯运行状态迁移、请求调度规则和调试排错方法,本文展示了如何将抽象的理论转化为可落地的工程代码。无论是应对实验考核还是为工业控制应用打基础,这套基于汇编

weixin_42561143的博客 279

汇编程序与周期性任务相关设计

在之前的学习中我们已经可以运用好汇编语言编写相关的程序了,下面我们对于程序的周期性进行探讨,在本次周期性设计中,我们要了解什么是周期,以及延时函数、NOP指令等,其中还有利用所学的汇编语言求平方数,以及我们到手的普中开发板进行实践等。

weixin_74345079的博客 1158

告别编译失败:详解Keil MDK中ARM编译器V5与V6的区别及项目迁移选择

本文深入解析Keil MDK中ARM编译器V5与V6的核心差异,提供STM32项目迁移的完整指南。从代码生成策略、优化重点到语法支持,详细对比两版本特性,并给出项目兼容性评估框架和双版本共存配置方案,帮助开发者高效解决编译器版本冲突问题。

weixin_28684757的博客 516

手把手教你用ZLMediaKit搭建WebRTC直播:本地推流与播放实战

本文详细介绍了如何使用ZLMediaKit搭建WebRTC直播系统,涵盖从环境准备、编译部署、SSL证书配置到本地推流与播放的完整实战流程。通过一步步的指导,帮助开发者快速掌握基于ZLMediaKit的WebRTC推拉流技术,构建低延迟的实时音视频应用。

weixin_28842367的博客 348

简单的汇编程序与周期性任务设计

函数的总循环次数,有两个嵌套的循环,外层循环R7从250减到0,内层循环R6也是从250减到0。,这是一个3字节的指令,通常需要2个机器周期来执行,即24个时钟周期。但是,当R6不为0时,它会跳转,这个跳转会增加额外的2个时钟周期,所以总共是26个时钟周期。假设单片机的时钟频率为12MHz;现在,假设微控制器的时钟频率为12MHz,那么一个时钟周期的时间是 1/(12 * 10^6) 秒,或者大约 0.0833 微秒。,这是一个2字节的指令,对于8051,它通常需要1个机器周期来执行,即12个时钟周期。

2201_75368028的博客 849

visual studio 2017编译Triangle库遇到的问题和解决办法

这段时间因为一个项目需要使用到Triangle这个三角剖分工具,需要在windows环境下进行对源码编译,中间踩了很多坑,特此记录下。 1、下载 下载链接是下边这个,需要翻墙 http://www.cs.cmu.edu/~quake/triangle.html 2、编译。。超。。。级。。。麻。。。烦。。。 在ubutu下安装一切顺利,完全没遇到什么麻烦,但是换到windows下就麻烦不断...

csubai07的博客 2439

汇编程序与周期性任务设计(使用延时函数点亮LED流水灯,实现汇编语言查找平方数)

该开发板是基于STC89C52 STC89Cxx 芯片,搭配数码管(共阴极);8×8的点阵屏;流水灯;扩展IO芯片(595);键盘;温度传感器等的学习套件。开发知识点-普中51-单核-A2单片机_普中51单片机开发板资料-优快云博客首先进行驱动安装:(所有操作都需要连接普中开发板进行)下载PZ-SIP;打开PZ-SIP,若串口号显示如图,则证明驱动安装成功下载完成后,根据我们的芯片选择开发板对应的芯片类型,点击打开文件选择对应的".hex"或".asm"文件。

2201_75516394的博客 1738

深入解析SerDes系统中的时钟数据恢复电路(CDR)——基于Cadence的PLL/Bang-Bang/PS-PI架构实现与仿真

本文深入解析SerDes系统中的时钟数据恢复电路(CDR),重点探讨基于Cadence平台的PLL、Bang-Bang和PS-PI三种架构的实现与仿真。通过详细的技术对比和工程实践案例,揭示CDR在高速串行通信中的关键作用,并提供TSMC 28nm工艺下的优化策略与故障排查经验,助力工程师应对10Gbps以上SerDes设计挑战。

weixin_29202687的博客 250

Jaspersoft Studio安装与配置全攻略:从下载到首个报表生成

本文提供Jaspersoft Studio从下载、安装到创建首个报表的完整实战指南。详细介绍了如何获取安装包、配置工作空间,并通过可视化设计器创建报表模板、添加参数与字段,最终实现数据预览与PDF导出。帮助Java开发者快速掌握这一强大的开源报表工具,提升报表开发效率。

weixin_28826521的博客 704

【51单片机】汇编程序编写流水灯延迟函数

汇编指令的内核与C语言是相似的。在使用汇编语言的过程中,可以首先尝试用C语言的思考逻辑思考,再转化为汇编语言。当然,在仿真的过程中会遇到很多疑问,这些主要受限于硬件原因,例如51的内存只有256B,超过255的数无法计入,超出内存的指令也无法执行。其次就是数值转换的问题,虽然我们输入的是十进制数,但内存存储的是十六进制数,因此我们在观察寄存器数值的时候,不要因为寄存器的值与输入的值不一样就直接否认,而是要思考一下进制转换的问题。

weixin_72935906的博客 3785

C#身份验证黑科技:用量子级加密与多维防御矩阵构建坚不可摧的用户管理系统!

某金融系统因身份验证漏洞导致200万用户数据泄露,量子级防御可将攻击面缩小99.99%。

墨夶的博客 353

AT89S51 定时器 4ms 中断配置:6MHz 晶振下初值计算与代码实现

无论是工业控制中的周期性采样,还是消费电子中的按键消抖处理,精确的定时控制都是确保系统稳定运行的关键。本文将深入探讨AT89S51单片机在6MHz晶振环境下实现4ms定时中断的全套技术方案,从理论计算到代码实现,最后通过实测验证,为开发者提供一个完整的闭环解决方案。通过本文的完整实现方案,开发者可以快速在AT89S51平台上建立精确的定时控制系统。在实际项目中,我曾使用类似的定时器配置实现了工业传感器的周期性采样系统,经过长达72小时的连续测试,定时误差控制在0.1%以内,完全满足工业级应用的要求。

404

机器翻译的评价标准:BLEU、ROUGE等指标说明及代码实现

机器翻译领域常用的自动评价指标主要包括BLEU、ROUGE、METEOR和COMET四大类。BLEU基于n-gram精确率和短句惩罚,ROUGE关注召回率,METEOR结合精确率和召回率并考虑同义词,COMET则利用预训练模型计算语义相似度。这些指标各有特点:BLEU适用于机器翻译,ROUGE对长句友好,METEOR更接近人工评分,COMET无需参考译文。代码实现上,sacrebleu、rouge-score等库提供了便捷的计算方式。新兴趋势包括基于BERT等模型的语义评估和大语言模型评估器,但传统指标仍占

数据知道的博客 9419

YOLOv8改进,YOLOv8主干网络替换为FasterNet(全网独发手把手教学,助力涨点)

FasterNet的整体架构由四个分层阶段组成,每个阶段包含一组FasterNet模块,并在前面加一个嵌入或合并层。最后三层用于特征分类。每个FasterNet模块内部,一个PConv层后跟两个PWConv层,为了保持特征多样性并降低延迟,归一化和激活层仅在中间层之后进行,其中,PConv 是一种快速高效的卷积操作,通过仅对部分输入通道应用卷积滤波器,而保持其余通道不变,从而减少了计算量和内存访问。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2016
上一篇: 基于SDCC和Edsim51的代码仿真
下一篇: 中断与定时计数
ooolips
博客等级 码龄4年 129粉丝 25原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值