本文目录一览

1,8051单片机有几个存储区是如何分布的

内部RAM(00H~7FH或00H~FFH)特殊功能寄存器80H~FFH扩展RAM0000H~FFFFHROM区0000H~FFFFH
详见具体的数据手册。现在的51单片机具体的规格型号太多了,在存储区分配方面是有差异的。不同厂家品牌和规格的产品,在rom、ram和寄存器方面,配置可能是不同的。

8051单片机有几个存储区是如何分布的

2,51单片机的ROM有多大

51单片机的ROM到底有多大这要分两个情况:第一,内部ROM,无论是EPROM、EEPROM、FLASH等等,随型号是不同的,从1K到64K都有。第二,51单片机的整个ROM空间是64K,因为51的地址有16位,所以不采取其他措施,只能访问64K的ROM空间。

51单片机的ROM有多大

3,MCS51 内部RAM一共多少个单元

但是某些型号的可能要多毕竟不是一家在生产 补充: 关于MCS-51 单片机的存储器地址空间,讲起来,要用几页的篇幅。简单介绍如下:MCS-51的存储器有片内RAM、片外RAM 和 ROM 三个空间。--------片内RAM:地址范围是00H到7FH (52系列延伸到FFH)。其中00H到1FH,共32字节,分成四个工作寄存器区,每区有寄存器 R0~R7。对此区域,可以使用 R0~R7 来操作,代码短捷,但是,只有一个当前工作区是可以这样读写的。对此区域,也可以使用字节地址,来读写。--20H-2FH,共16字节,是位寻址区,共有128个“位”,位地址:00~7FH。此区域,也可按照字节寻址,来读写。--80H-FFH,共有128个地址号码,其中离散的分布着21个特殊功能寄存器,必须直接寻址才能读写。(52系列,在此范围,还有128字节的 RAM,必须间接寻址才能读写)。对上述空间读写,必须使用 MOV 指令。--------片外RAM:片外RAM的地址范围是0000H到FFFFH,容量即为64KB。对片外RAM读写,必须使用 MOVX 指令。--------ROM:ROM的地址范围是0000H到FFFFH,容量即为64KB。其中0000~0FFFH,即4K,在片内,其它在片外。(对于8031,这64K的ROM,都在片外。)对ROM读出,必须使用 MOVC 指令。 追问: 片内低128单元和片内高128单元能和到一起来说是256个单元吗? 回答: 高128不是都有的,只有几个特殊的存在的。
内部的低64字节是直接寻址高64字节是间接寻址,因为高64为地址被特殊寄存器占了

MCS51 内部RAM一共多少个单元

4,8051单片机内的ROM容量有多大有哪几个特殊的程序入口地址

存储容量是4KB,表示有4096个存储单元,每个单元存放8位数,就是一个字节,就是一个Byte,缩写为B。是从0000H~0FFFH,这是存储器的地址范围。每一个单元都要有一个地址,这些地址就是4096个,对应上面说的4096个存储单元。每个单元,就好比一个教室,而每一个教室都要有一个编号吧,这个编号就是单元地址。

5,51单片机扩展ROM

有专门的工具,叫做“编程器”,通常可以烧写PROM、EPROM、GAL、PAL以及各种单片机等等。
用通用编程器即可。不过,我觉得没什么必要扩展外部ROM,选内部ROM大一些的51就可以了。
买个通用的烧录器,也叫编程器 就可以了。
要让51外扩展的ram起作用,关键是要确保在mcu相关引脚上产生正确的外部读写时序(我这里默认你硬件连接全部正确).首先很关键的一步是要仔细看你使用的mcu的资料,下面我仅对c语言需要注意的地方讲解(汇编这里就略了,因为对于新手来说,讲的复杂并不是好事)1、对于atmel、winbond等mcu,可以在c里,直接用xdata保留关键字来对变量进行声明,这样在访问这些变量时就能直接产生外部读写信号。2、对于stc的mcu(比较新的mcu类,我这里就列举目前的stc类mcu内部用1024个字节ram扩展),这里有更多的功能选择,位于内部8eh地址上的auxr是ram的扩展管理寄存器,其中的extram位(位1):0:内部扩展的ext_ram可以存取rd+系列单片机:在00h到3ffh单元(1024字节),使用movx@dptr指令访问,超过400h的地址空间总是访问外部数据存储器(含400h单元),movx@ri只能访问00h到ffh单元。rc系列单片机:在00h到ffh单元(256字节),使用movx@dptr指令访问,超过100h的地址空间总是访问外部数据存储器(含100h单元),movx@ri只能访问00h到ffh单元。1:externaldatamemoryaccess.外部数据存储器存取,禁止访问内部扩展ram,此时movx@dptr/movx@ri的使用同普通8052单片机下面是对于stcrd+的c语言简单举例子:unsignedcharxdatasum;sum=20;这里在extram为0的情况下,如果sum的地址超过400h(含400h),那么就能产生外部ram的读写时序,如果sum的地址小于400h,那么只能访问内部扩展的ram,但不会产生外部ram的读写时序。这里在extram为1的情况下,那么就直接产生外部ram的读写时序。好了,就讲这样简单吧,总之,在使用mcu硬件前,必须先对该硬件资料熟悉,使用的时候,才能游刃有余。

6,mcs51单片机数据存储器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之类的,不是这种结构的。

文章TAG:51单片机rom有多少个页单片机  rom  多少  
下一篇