① 单片机中什么叫片内rom,片外rom,这个片内片外怎么理解
你可以这样理解,片内ram就是在单片机内部的ram,ram是随机储存器,运行时所产生的数据,关机或复位后就没有了,而片外rom你就把他当做你手机的储存卡吧,不是单片机内部的,而rom是程序储存器,就像我说的,他是你手机的储存卡,你下载了什么资料进去,关机了,那些资料还在
② 单片机是如何区分片内与片外RAM的
汇编语言的指令不同,编译出的机器码不同,CPU 发出的硬件控制信号就不同。
如传输指令:MOV 是片内,MOVX 是片外。
③ 单片机中 什么是片内RAM和片外RAM,RAM就是数据存储器吗
51单片机有以下几个内存模块组成:
1】rom或者flash,叫程序存储区,你写的程序是存在这里面的,上电后从这里面执行。
程序存储区也分为片内和片外,一般来说,现在的51很多已经做到了64k,所以很少有外扩
片外flash或者片外的rom了,flash或者rom不管是片内还是片外的,只能用来定义常量,是用code来修饰,也就是说,用code来修饰的东西,在程序运行过程中,不能修改;
2】ram有------内部ram的低128位(00-7f),对应c语言就是data,比如我定义一个变量,
data
unsigned
char
var
=
0;
那么,这个
var变量就是放在内部的低128位ram中
-------内部ram的高128位(80-ff),对应c语言就是idata,比如我定义一个变量,
idata
unsigned
char
var
=
0;
那么,这个
var变量就是放在内部的高128位ram中
-------特殊功能寄存器(sfr)(80-ff),对应c语言就是sfr比如我定义一个变量,
sfr
unsigned
char
var
=
0x90;
那么,这个
var变量就是放在内部的特殊功能寄存器中,这是你对var操作,相当于操作一个特殊的寄存器,但是小心,不能随便定义sfr变量,很危险
------外部ram
64k(0000-ffff)
外部的ram可以扩展到65536个,但是前256个算是一页,这一页比较特殊,是用
pdata来修饰的,当然,也可以用xdata来修饰。
除了第一页的256个以外的其他65280个空间,只能用xdata来修饰;
回过头来讨论pdata和xdata,这两个都能修饰外部ram的第一页,但是,pdata只能修饰第一页,即最前面的256个外部ram,那么,这最前面的256个到底用pdata还是xdata好的呢?
答案是pdata,因为xdata修饰的变量,用的是dptr寻址,pdata用的是r0和r1.dptr因为是16位的,所以可以覆盖整个的64k外部ram,r0和r1是8位,所以只能寻址最前面的256个,也就是外部ram的第一页,但是,用r0寻址,比dptr快一倍,代码也小的很多
楼主又疑惑了,好多地址是重复的,比如,我向80h地址写一个数值,单片机怎么知道读的是内部的高128位ram?还是sfr?还是外部64k的ram呢?
答案是用指令,如果是直接寻址,那么访问的就是sfr,如果是r0或者r1间接寻址,就是内部高128位ram,如果是dptr或者是r0,r1间接寻址,且配合的是movx指令,那么就是访问外部64kram中的第80h个地址。
概括一下来说,51的内存由以下组成:
1----程序存储器(包括片内flash或rom,也包括片外flash或rom,c语言用code定义)
2----内部低128位ram,c语言用data定义
3---内部高128位ram,c语言用idata定义
4---内部sfr,c语言用sfr定义
5---外部65536个ram(通常,很多单片机厂家不会给你扩展那么多的,一般来说扩展256个字节或者1024个字节就差不多了,最近宏晶的出了个扩展4096字节的。这65536字节的ram,前256个可以用pdata修饰,也可以用xdata修饰,超过256个之后的,只能用xdata修饰)
以上所说的只是针对51内核的单片机,其他内核的,像arm之类的,不是这种结构的。
④ MCS-51单片机的存储器分为哪几个存储空间,分为哪几种类型,分为哪几个存储区
MCS-51 的存储器有【片内 RAM、片外 RAM 和 ROM】三个部分。
片内 RAM:
地址范围:00H~7FH。
容量:128Byte。
(52 系列则增大一倍。)
片外 RAM:
地址范围:0000H~FFFFH。
容量:64KB。
ROM:
地址范围:0000H~FFFFH。
容量:64KB。
⑤ 单片机是如何区分片内ram和片外ram
就51单片机来说,C语言编程的话,变量前加xdata,表示用的是外部RAM
汇编语言编程的话,MOVX是访问外部RAM的指令, MOV 访问内部RAM的指令
⑥ 80c51单片机的片内片外程序存储器和片内片外数据存储器访问如何区分
管腿EA接高电平,单片机首先访问内部ROM,当地址值超过4K(0FFFH)时自动访问外部ROM。EA接低电平,单片机只访问外部ROM。
对于数据的话,可以通过定义来区分,idata,即片内 RAM 从 0x00~0xFF;pdata,即片外 RAM 从 0x00~0xFF;xdata,即片外 RAM 从 0x0000~0xFFFF。
⑦ 片外rom和片外ram各自的地址范围单片机如何区分两者的访问
原则上说,片外rom和片外ram各自的地址范围可以重叠,也就是都可以从0000H开始到0FFFFH结束。单片机根据指令区分两者的访问,MOVC访问的是片外rom,MOVX访问的是片外ram。
但是,对于片内有ROM和内部集成外部RAM的芯片,要统一编址,各自不能重叠。