精华内容
下载资源
问答
  • 2021-03-21 20:22:52

    /*2000H外部RAM数据送入3000H外部RAM单元,数据个数已在内部RAM85单元中*/
         MOV  DPTR,#2000H  ;源数据区首地址
         PUSH DPL         ;源首地址暂存堆栈
         PUSH DPL         
         MOV  DPTR,#3000H ;目的数据区首址
         MOV  R2,DPL      ;目的首址暂存寄存器
         moV  R3,DPH      
    LOOP:
         POP  DPH         ;取回源地址
         POP  DPL         
         MOVX A,@DPTR     ;取出数据
         INC  DPTR        ;源地址增量
         PUSH DPL
         PUSH DPH
         MOV DPL,R2      ;取回目的地址
         MOV DPH,R3      
         MOVX @DPTR,A    ;数据送目的区
         INC DPTR        ;目的地址增量
         MOV R2,DPL      ;目的地址暂存寄存器
         MOV R3,DPH 
         DJNZ 85H,LOOP   ;没完,继续循环
         RET             ;返回主程序

    更多相关内容
  • 单片机传送数据 将存储器中 0000H--00FFH 中的数据传送到 2000H--20FFH中 悬赏分:30 - 解决时间:2009-10-4 09:42 ======================================= 其他回答: 如果是51单片机,应该这样: MOV DPL,...
  • 51单片机的片内RAM和片外RAM区别

    千次阅读 多人点赞 2020-05-16 19:27:44
    但是单片机的这 512 字节的 RAM在地位上并不都是平等的,而是分块的,块与块之间在物理结构用法上都是有区别的,因此我们在使用的时候,也要注意一些问题。 51 单片机的 RAM 分为两个部分,一块是片内 RAM,一块是...

    STC89C52 共有 512 字节的 RAM,是用来保存数据的,比如我们定义的变量都是直接存在 RAM 里边的。但是单片机的这 512 字节的 RAM在地位上并不都是平等的,而是分块的,块与块之间在物理结构和用法上都是有区别的,因此我们在使用的时候,也要注意一些问题。

    51 单片机的 RAM 分为两个部分,一块是片内 RAM,一块是片外 RAM。标准 51 的片内 RAM 地址从 0x00H~0x7F 共 128 个字节,而现在我们用的 51 系列的单片机都是带扩展片内 RAM 的,即 RAM 是从 0x00~0xFF 共 256 个字节。片外 RAM 最大可以扩展到 0x0000~0xFFFF 共 64K 字节。这里有一点大家要明白,片内 RAM 和片外 RAM 的地址不是连起来的,片内是从 0x00 开始,片外也是从 0x0000 开始的。还有一点,片内和片外这两个名词来自于早期的 51 单片机,分别指在芯片内部和芯片外部,但现在几乎所有的 51 单片机芯片内部都是集成了片外 RAM 的,而真正的芯片外扩展则很少用到了,虽然它还叫片外 RAM,但实际上它现在也是在单片机芯片内部的,我们的 STC89C52 就是这样。以下是几个 Keil C51 语言中的关键字,代表了 RAM 不同区域的划分,大家先记一下。

    在这里插入图片描述

    51单片机的片内RAM和片外RAM的区别

    data:片内 RAM 从 0x00~0x7F

    idata:片内 RAM 从 0x00~0xFF

    pdata:片外 RAM 从 0x00~0xFF

    xdata:片外 RAM 从 0x0000~0xFFFF

    大家可以看出来,data 是 idata 的一部分,pdata 是 xdata 的一部分。为什么还这样去区分呢?因为 RAM 分块的访问方式主要和汇编指令有关,因此这块内容大家了解一下即可,只需要记住如何访问速度更快就行了。

    我们定义一个变量 a,可以这样:unsigned char data a=0,而我们前边定义变量时都没有加 data 这个关键字,是因为在 Keil 默认设置下,data 是可以省略的,即什么都不加的时候变量就是定义到 data 区域中的。data 区域 RAM 的访问在汇编语言中用的是直接寻址,执行速度是最快的。如果你定义成 idata,不仅仅可以访问 data 区域,还可以访问 0x80H~0xFF 的范围,但加了 idata 关键字后,访问的时候 51 单片机用的是通用寄存器间接寻址,速度较 data会慢一些,而且我们平时大多数情况下不太希望访问到 0x80H~0xFF,因为这块通常用于中断与函数调用的堆栈,所以在绝大多数情况下,我们使用内部 RAM 的时候,只用 data 就可以了。

    对于外部 RAM 来说,使用 pdata 定义的变量存到了外部 RAM 的 0x00~0xFF 的地址范围内,这块地址的访问和 idata 类似,都是用通用寄存器间接寻址,而如果你定义成 xdata,可以访问的范围更广泛,从 0 到 64K 的地址都可以访问到,但是它需要使用 2 个字节寄存器DPTRH 和 DPTRL 来进行间接寻址,速度是最慢的。

    我们的 STC89C52 共有 512 字节的 RAM,分为 256 字节的片内 RAM 和 256 字节的片外RAM。一般情况下,我们是使用 data 区域,data 不够用了,我们就用 xdata,如果希望程序执行效率尽量高一点,就使用 pdata 关键字来定义。其它型号有更大的 RAM 的 51 系列单片机,如果要使用更大的 RAM,就必须得用 xdata 来访问了。

    参考文章:

    51单片机的片内RAM和片外RAM的区别

    展开全文
  • 我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《STM32在MDK中使用外部RAM浅解 》, 一起来围观吧 https://blog.csdn.net/qq_25814297/article/details/115539665?utm_source=app&app_version=4.21.0&...

    在这里插入图片描述
    上图中的no chip就是指的片上RAM,一般我们都是适用的片上RAM,在出现片上RAM不够用的情况下,可以通过扩展片外RAM来解决RAM不够用的情况。

    实例

    我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《STM32在MDK中使用外部RAM浅解 》, 一起来围观吧 https://blog.csdn.net/qq_25814297/article/details/115539665?utm_source=app&app_version=4.21.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

    展开全文
  • C51中访问外部RAM的方法

    千次阅读 2021-05-23 12:33:44
    XBYTE定义的是外部地址,这样才能接到你的IO口上的器件通信在一般的读写外部RAM的程序中,经常看到这样的句子:XBYTE[address]=data写数据data=XBYTE[address]读数据1外部总线由3组总线组成...

    C51的P0,P2口做外部扩展时使用,其中XBYTE [0x0002],P2口对应于地址高位,P0口对应于地址低位。一般P2口用于控制信号,P0口作为数据通道。

    XBYTE定义的是外部地址,这样才能和接到你的IO口上的器件通信

    在一般的读写外部RAM的程序中,经常看到这样的句子:

    XBYTE[address]=data   写数据

    data=XBYTE[address]   读数据1

    外部总线由3组总线组成,数据 地址 控制,我们常常一般就叫他外部总线,既然是有3组不同的信号,那么他们是怎么协调工作的呢?一般情况CPU有特殊的外部数据

    访问指令如你这里讲51的MOVX指令(在C语言中他会编译成这个指令)在执行这个指令的时候3组线是协调工作

    mov dptr,#1000h

    mov a,#55h

    movx @dptr,a

    上面3调语句的C语言可以表示如下

    #define  W_DATA  XBYTE[0x1000]

    W_DATA=0X55;

    在使用外部总线的时候,数据 地址和控制信号是直接按照规定的时序输出高低电平的,所以不用你管,当然你必须要满足时序工作如何理解#define XBYTE ((unsigned char

    volatile xdata * ))

    8051 特有的内存型态

    code    以 MOVC @A+DPTR 读取的程序内存

    data    可以直接存取的内部数据存储器

    idata    以 Mov @Rn 存取的内部数据存储器

    bdata    可以位寻址(Bit Addressable)的内部存储器

    xdata    以 MOVX @DPTR 存取的外部数据存储器

    pdata    以 MOVX @Rn 存取的外部数据存储器

    特殊资料型态

    bit    一般位(bit)变量

    sbit    绝对寻址的位(bit)变量

    语法

    sbit    my_flag    =    location;    (location 范围从 0x00 ~ 0x7F)

    范例

    sbit    EA =    0xAF;

    或是配合 bdata 宣告的位(bit)变量

    char    bdata        my_flags;

    sbit    flag0 =      my_flags ^ 0;

    (注意 sbit 前不可以加 static)

    sfr    特殊功能缓存器(Special Function Register)

    语法

    sfr    my_sfr    =    location;    (location 范围从 0x80 ~ 0xFF)

    范例

    sfr    P0    =    0x80;

    指定绝对地址的变量

    在单一模块内可以使用下面的语法宣告

    [memory_space]    type    variable_name    _at_    location

    范例

    pdata        char    my_pdata    _at_    0x80;

    如果该变量必须为多个模块所使用(Global Variable)则以

    抽象指针(Abstract Pointer)的方式在标头档(Header File)定义较为方便。

    #define    variable_name    *((data_type *)        location)

    范例

    #define    my_pdata    *((char pdata *)    0x80)

    (注意 char 与 pdata 的顺序)

    ABSACC.H 提供了下列方便的宏(Macro)定义。

    #define CBYTE ((unsigned char volatile code *) 0)

    #define DBYTE ((unsigned char volatile data *) 0)

    #define PBYTE ((unsigned char volatile pdata *) 0)

    #define XBYTE ((unsigned char volatile xdata *) 0)

    #define CWORD ((unsigned int volatile code *) 0)

    #define DWORD ((unsigned int volatile data *) 0)

    #define PWORD ((unsigned int volatile pdata *) 0)

    #define XWORD ((unsigned int volatile xdata *) 0)

    隐藏的初始化程序

    80C51 在电源重置后(Power On Reset)所执行的第一个程序模块并不是使用者的主程序

    main(),而是一个隐藏在 KEIL-C51 标准链接库中称为 startup.a51 的程序模块。

    startup.a51 的主要工作是把包含 idata、xdata、pdata 在内的内存区块清除为 0,并

    且初始化递归指针。接着 startup.a51 被执行的仍然是一个隐藏在 KEIL-C51 标准链接库

    中称为 init.a51 的程序模块。而 init.a51 的主要工作则是初始化具有非零初始值设定的

    变量。

    在完成上述的初始化程序之后,80C51 的控制权才会交给 main() 开始执行使用者的程序。

    #define XBYTE ((unsigned char volatile xdata *) 0)

    定义    XBYTE 为 指向 xdata 地址空间unsigned char 数据类型的指针,指针值为0

    这样,可以直接用XBYTE[0xnnnn]或*(XBYTE+0xnnnn)访问外部RAM了

    其中,初始地址就是0x0000;

    百度知道:

    #define XBYTE((char*)0x20000L)

    XBYTE[0x8000]=0x41;

    这段程序是什么意思?

    #define XBYTE ((char*)0x20000L) 定义了XBYTE是个指向地址 0x20000L 的字符型指针(或者数组)变量

    XBYTE[0x8000]=0x41; 对数组XBYTE的第 0x8000个变量进行赋值,赋值为0x41。即对地址0x28000L的内存单元赋值为0x41。

    这说明你用的是带外部数据总线的51芯片,外部的存储器多半是RAM,RAM的容量至少有 0x8000(32k)字节-RAM的容量可能是64k字节?

    如果还有问题,可以发消息联系

    补充1:

    L代表 long,这说明 0x20000L 是一个长整数。一般来说,8位单片机如51,整数用16位二进制表示,长整数用32位二进制表示。

    还有这样用的:

    写这样的一个头文件

    e5aa517c23c07c7b35fb2edbf5aa0f4a.png

    这样的格式:

    类型 储存空间 定义别名 关键字_at_ 寄存器的地址

    _at_这个关键字是绝对定义地址

    展开全文
  • ESP32有520kB的内部RAM空间可以使用,这对于一般的情况是够用的,但是如果设备需要涉及音频或者显示图像等处理时,需要更大的内存空间来处理这些数据。ESP32支持扩展外部RAM,其实乐鑫已经在其ESP32 WROVER系列模组...
  • 谈程序在RAMFLASH 和外部RAM中运行的速度 以TMS320F28335芯片为例 在内部RAM中程序能够达到150MHZ也即150MIPS. 用下面这段程序测试
  • 在使用emwin的时候由于占用的变量较多,出现了STM32F207内部RAM不够用的尴尬局面,开发板自带了4M的外部SRAM,因此考虑速度存储的平衡,使用芯片内部RAM作为堆栈区使用,则用来存储其他变量 修改内容: 启动文件...
  • ORG 0000H ajmp main ORG 0100H main: MOV R0,#10H MOV R1,#30H MOV R2,#00H MOV DPTR,#7800H MOV P1,#00H MOV A,#00H LOOP1:MOV @R1,A INC A INC R1 DJNZ R0,LOOP1 CLR A MOV R0,#10H ... END
  • ram和rom的区别

    千次阅读 2021-07-18 05:54:28
    不管你是在买手机还是买电脑,都会听到两个比较关键的词,那就是ram和rom,...ram和rom的区别ram和rom都被人们叫做内存,所以很容易让人弄混淆,比如在你买手机的时候,你会听到运行内存是6G,存储内存是128G,这里...
  • 外部扩展RAM

    2022-03-10 10:29:06
    简介 1、SRAMDRAM 静态随机存取存储器(Static Random-Access Memory,SRAM)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,...SRAM不需要刷新电路即能保存它内部存储的数据。而DRAM(Dyn
  • 如题:编程将外部RAM2000H–202FH单元中的内容,移入内部RAM20H–4FH中,并将原数据块区域清0. 首先内部外部的数据转移指令是不同的: MOV: 单片机内部的寄存器或者存储器之间相互传递数据(内部RAM); MOVX: ...
  • RAM和ROM的作用与区别详细说明

    千次阅读 2021-07-18 05:55:36
    随机存取记忆体(Random ...RAM记忆体可以进一步分为静态RAM(SRAM)动态记忆体(DRAM)两大类。SRAM具有快速存取的优点。而DRAM由於具有较低的单位容量价格,所以被大量的采用作为系统的主记忆。 不过,当电源关闭时...
  • 可用RAM大小 可用和内部闪存总大小 如果有SD卡,则可用和外部闪存的总大小 内容 BalacMemory是完全免费的。 它是用Android Studio 3.1.1开发的 提供者 BalacMemory由BalacSoft提供,请随时访问我们的网站 所有...
  • 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去.doc
  • 针对 学习笔记二:STM32内部RAM在线调试配置说明(RAM调试模式下不能进入外部中断) 所需的RAM.ini文件
  • ESP32 官方文档(十三)外部 RAM

    千次阅读 2018-09-02 17:03:34
    外部 RAM 介绍 ESP32 有几百 KiB 的内部 RAM,与... 外部存储器包含在存储器映射中,并且在某些限制内,可以与内部数据 RAM 相同的方式使用。 硬件 ESP32 支持与 SPI Flash 芯片并联的SPI(P)SRAM。 虽...
  • 问答题4微机中ROM和RAM区别是什么?先说说什么是RAM、ROM。他们都是存储器,属于半导体存储器,只是从读、写数据(或者说存、取数据)功能上分为RAM和ROM。RAM是由英文Random Access Memory的首字母构成的,意为随机...
  • RAM和ROM分别是什么意思

    千次阅读 2021-08-02 09:50:51
    腾讯视频/爱奇艺/优酷/外卖 充值4折起随机存取记忆体(Random Access...RAM记忆体可以进一步分为静态RAM(SRAM)动态记忆体(DRAM)两大类。SRAM具有快速存取的优点。而DRAM由於具有较低的单位容量价格,所以被大量的采...
  • keil程序在外部RAM中调试的问题总结

    千次阅读 2018-07-14 22:48:41
    但是有些时候内部RAM并不够用,这就需要将程序装入外部RAM中调试,而在这个过程中可能会出现各种各样的问题,在这里我将会把我遇到过的一些问题需要注意的地方总结一下,希望能够对大家有所帮助。有错误的地方也...
  • 51单片机ram 数据存储区学习笔记

    千次阅读 2021-05-22 15:19:28
    1.ram keil c语言编程ram是程序运行中存放随机变量的数据空间。在keil中编写程序,如果当前模式为small模式,如果总的变量大小未超过128b,则未初始化的变量的初值默认为0.如果所有的变量超过small模式下的128b大小...
  • Android内部存储和外部存储,参考http://blog.csdn.net/sinat_32955803/article/details/51259556及http://blog.csdn.net/fancylovejava/article/details/49490663 内部存储┐ 系统存储├─物理位置是位于手机...
  • 51汇编笔记-与外部RAM交换数据

    千次阅读 2017-01-15 11:47:32
    累加器A与片外RAM之间的数据传递类指令  MOVX A,@Ri  MOVX @Ri,A  MOVX #9; A,@DPTR ... 0)@符号修饰的寄存 会把寄存器的内容当做地址来看,movx与外部RAM传递数据的指令,内部只需要mov
  • 在STM32上跑UCOS_IIUCGUI时,要想让屏幕稳定不闪,显示...最好的方法就是配置FSMC使内部RAM作为堆栈使用,而外部RAM作为变量存储UCOS_II的任务堆栈。现在介绍FSMC以及如何配置,并写出启动文件中需要修改的地方。
  • 实验一 数据传送一、实验目的1....二、实验内容将8051内部RAM 40H~4FH置初值00H~0FH,然后将40H~4FH内容传送到外部RAM的4800H~480FH,再将4800H~480FH传回内部RAM的50H~5FH。设置断点B1、B2、B3每运行到断...
  • 关于单片机RAM的作用

    2020-08-04 15:55:35
    绍了有关单片机存储器的基本知识
  • 实验结果表明:采用该方法,直接使用FPGA内部RAM,避免了外部RAM扩展,从而精简了指令存储电路,增强了系统可移植性。该机器人系统目前已成功应用于工件上下料作业,系统运行稳定,点重复精度达0.02 mm,水平联动...
  • 目录 一、存储器解释 1.ROM:只读存储器 2.PROM:可编程ROM 3.EPROM:可擦除可编程ROM 4.EEPROM:电可擦除可编程ROM ...二、不同端口RAM和FIFO区别 1.单端口RAM: 2.真双口RAM: 3.伪双口RAM: 4.F...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,652
精华内容 17,460
关键字:

外部ram和内部ram的区别

友情链接: 实验4 PHP编程.rar