51单片机内部ram,外部ram的区别
mov movx 指令的区别
我有点混要了,请各个说明一下之间的区别。
谢谢。 展开
单片机的这 512 字节的 RAM在地位上并不都是平等的,而是分块的,块与块之间在物理结构和用法上都是有区别的,因此形成51单片机内部ram和外部ram的区别。
一、从使用字节区别。标准 51单片机的片内 RAM 地址从 0x00H~0x7F 共 128 个字节。而现在我们用的 51 系列的单片机都是带扩展片内 RAM 的,即 RAM 是从 0x00~0xFF 共 256 个字节。而片外 RAM 最大可以扩展到 0x0000~0xFFFF 共 64K 字节。
二、从连接地址区别。片内 RAM 和片外 RAM 的地址不是连起来的,片内是从 0x00 开始,片外也是从 0x0000 开始的,分别形成data,即片内 RAM 从 0x00~0x7F;idata,即片内 RAM 从 0x00~0xFF;pdata,即片外 RAM 从 0x00~0xFF;xdata,即片外 RAM 从 0x0000~0xFFFF。
一般情况下,使用 data 区域,data 不够用了,就用 xdata,如果希望程序执行效率尽量高一点,就使用 pdata 关键字来定义。其它型号有更大的 RAM 的 51 系列单片机,如果要使用更大的 RAM,就必须得用 xdata 来访问了。
扩展资料:
51单片机对所有兼容Intel 8031指令系统的统称,8004单片机成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机属于基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。
51单片机的RAM用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据,ROM用以存放程序、一些原始数据和表格。四个8位并行I/O口,既可用作输入,也可用作输出。T/C包括两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式。
参考资料来源:百度百科-51单片机
51单片机的外部RAM可扩展到64KB,16根地址线(16位),使用DPTR作为外部RAM的寻址指针。
程序存储器:也就是ROM,是存放用户程序(如汇编程序或C程序)的地方,典型的51单片机内部ROM为4KB,若是使用外部ROM可以扩展到64KB。
数据存储器:是存放用户程序运行过程中的中间结果或者运算结果,也就是内部RAM或外部RAM。
MOV: 单片机内部RAM的数据传送指令
MOVX: 单片机外部RAM的数据传送指令
外部ram:相当于扩展的存放数据区,由于内部ram太小,有时候装不下我们要存放的数据,因此增加了外部RAM,它其实和内部RAM的功能一样,唯一的区别就是取值的方式不同.
程序存储器:存放程序的空间,你所写的程序编译后的机器码都在那个空间,我们执行程序的时候也是在那里实现,程序存储器也可以存放数据.
数据存储器:就是内部ram和外部ram
mov,movx两个指令的区别就是一个取内部RAM空间的值而movx取外部ram空间的值
movx 操作外部数据存储器(ram),外部总线地址等
movc 程序存储器(ROM或者Flash)
最简单的理解了吧?!
PS:懒人记忆法:
movc中的“c”相当于“code”代码
movx中的“x”相当于“extern”外部的
mov 既没有“c”也没有“x”相当于内部的
在这块芯片中,就有了:内部 RAM、程序存储器、SFR、定时计数器、... 。
在这些部分,你可以使用 MOV 指令操作。
如果,你想使用 MOVX 指令对外部 RAM 操作,你就得再买一块芯片了。
以上,就是内部、外部的区别。