【手把手教程】keil5 c51使用汇编将数据从片外传输至片内RAM

Intro

本片文章将介绍如何使用汇编将片外数据传到片内,并使用debug展示数据在register中的流转。我们将以将片外2010H ~ 201FH单元的内容设置为 40H~4FH ,然后将 2010H ~ 201FH单元中的内容送到片内50H ~ 5FH单元中 如下图所示,下面进行此示例的讲解。

在这里插入图片描述

图为demo示意图

快速上手

  • 环境配置

首先你需要确保自己安装好了keil5的环境,并知道如何创建一个简单的项目,使用汇编编写代码,这里可以参考- 51单片机数据传送——片内到片外(汇编语言实现) -csdn

  • 代码编写

在你知道如何创建环境之后,就可以开始编写相关的汇编代码了,在这里我们默认你已经掌握了常用的几种简单的汇编指令,如MOV执行,DJNZ循环等指令,这里可以参考51单片机汇编语言指令汇总 -csdn

最后实现如下所示:

		ORG 0000H
		MOV DPTR,#2010H		;外部RAM地址
		MOV A,#40H			;初值送入累加器A
		MOV R2,#10H			;循环次数
LOOP1:	MOVX @DPTR,A		;将累加器A中的数送入外部RAM
		INC DPTR			;外部地址自增1
		INC A				;累加器A中的数自增1
		DJNZ R2,LOOP1		;循环,R2减1不等于0,则继续,否则结束循环
		
		MOV DPTR,#2010H		;外部RAM地址
		MOV	R1,#50H			;内部RAM地址
		MOV	R3,#10H			;循环次数
LOOP2:	MOVX A,@DPTR		;外部RAM传送到累加器A
		MOV @R1,A			;累加器A传送到内部RAM
		INC DPTR			;外部地址自增1
		INC R1				;内部地址自增1
		DJNZ R3,LOOP2		;循环,R3减1不等于0,则继续,否则结束循环
		
		END	
  • 程序调试

在调试过程中,如果想要看到数据及其流转,可以在打开debug之后,开启一个memory窗口,并在memory窗口输入“x:2010H”即可查看片外数据存储器从2010H开头往后的地址对应的数据。

现在我们通过debug来展示数据的流转,数据是由一个循环代码段放入片外的,所以在最开始程序未执行的时候,片外和片内memory都是空的,如下图所示。
在这里插入图片描述
接下来设置一个断点,使得程序在第一个循环这里停下。
在这里插入图片描述
此时已经通过第一个循环就把数据写入片外了,这就是我们的数据源,如下图所示。在这里插入图片描述

  • 运行后的结果
    同样通过debug,我们可以在debug的时候在memory窗口用“i:50H”来查看以50H地址往后的片内数据存储器的内容。
    在这里插入图片描述

参考资料

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zeeland

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值