单片机存储器类型介绍
- 格式:docx
- 大小:149.62 KB
- 文档页数:4
单片机存储器1. MCS-51单片机的存贮器有程序存贮器ROM和数据存贮器RAM 之分。
由于外部程序存贮器和外部数据存贮器的地址可以重迭,所以我们说MCS-51单片机的寻址空间为2×64KB=128KB ,不过要注意:“片外程序存贮器和片外数据存贮器,根据实际需要也可以合并成一个统一的地址空间,此时最大寻址空间为64KB而不是128KB了。
”对外部程序存贮器的写操作是由编程器完成,而对其读操作则是由读选通控制信号/PSEN( Program Store Enable)再配以读操作指令MOVC来完成。
也就是由MOVC指令产生信号/PSEN,从而对片外程序存储器进行读操作。
对外部数据存贮器的写操作是由写选通控制信号/WR再配以指令MOVX来完成,而对其读操作则是由读选通控制信号/RD再配以MOVX 来完成。
也就是由指令MOVX指令产生/WR或/RD信号,从而对片外RAM进行写或读操作。
2. 程序存贮器ROMMCS-51单片机中设有一个片内、片外程序存贮器选择控制信号/EA(External Access)。
MCS-51单片机程序存储器示意图如果使/EA=1,则片内、片外程序存贮器ROM统一编址为64KB。
系统复位后,将先执行片内存贮器ROM中的程序。
当PC中内容超过OFFFH或1FFFH时,将自动转到执行片外程序存贮器中的程序。
片内程序存储器空间为0000H~0FFFH或0000H~1FFFH,片外程序存储器空间的地址不能与片内程序存储器空间地址相重迭。
至于具体执行哪里的程序完全取决于PC值。
如果使/EA=0,则只执行片外程序存贮器的程序,其地址空间为0000H~FFFFH 。
换言之,如果片内无程序存贮器ROM或不想访问片内程序存贮器ROM,则必须使/EA=0 。
注意:当系统复位时PC内容为0000H ,这意味着程序的执行总要从0000H单元开始,但用户程序又不能从0000H开始存放。
这是因为在程序存储器中有7个非常特殊的、固定的单元,这些单元所存放的内容是有特定要求的。
单片机的结构单片机是一种集成电路,它是一种微型计算机系统,由中央处理器、存储器、输入输出接口等组成。
单片机广泛应用于各种电子设备中,例如电视机、音响、电脑等。
单片机的核心是中央处理器,它负责单片机的运算和控制。
中央处理器由控制器和运算器两部分组成,控制器负责指令的执行和程序的控制,运算器负责数据的运算和逻辑判断。
中央处理器的性能直接影响单片机的运算速度和应用范围。
单片机的存储器包括程序存储器和数据存储器。
程序存储器用于存储单片机的程序,它通常采用闪存或EEPROM。
数据存储器用于存储单片机的数据,包括RAM和ROM。
RAM是一种易失性存储器,它在断电后会丢失存储的数据;ROM是一种只读存储器,它存储的数据在断电后不会丢失。
单片机的输入输出接口用于连接外部设备,包括LED、LCD、键盘、麦克风、扬声器等。
输入输出接口的数量和类型根据不同的应用需求进行选择。
单片机的时钟电路是单片机的重要组成部分,它用于提供单片机运行的时钟信号。
时钟信号的频率决定了单片机的运行速度,频率越高,运行速度越快。
时钟电路通常采用晶体振荡器,它提供稳定的时钟信号,使单片机能够正常运行。
单片机的复位电路用于保证单片机在上电或复位后能够正常启动。
复位电路通常采用复位芯片或电容复位电路。
复位芯片具有复位延迟时间,能够保证单片机在复位后稳定运行;电容复位电路则直接通过电容充放电实现复位功能。
单片机的电源电路用于提供单片机的电源,通常采用直流电源或电池。
电源电路的质量直接影响单片机的稳定性和可靠性。
单片机的结构包括中央处理器、存储器、输入输出接口、时钟电路、复位电路和电源电路。
这些组成部分密切配合,使单片机能够完成各种应用需求。
从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率。
在51系列中data,idata,xdata,pdata的区别:1、data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。
2、idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。
idata是用类似C中的指针方式访问的。
汇编中的语句为:moxACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)3、 xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。
4、 pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movxACC,@Rx读写。
这个比较特殊,而且C51好象有对此BUG,建议少用。
但也有他的优点,具体用法属于中级问题,这里不提。
当然现在有些51单片本身内部就有扩展的RAM区域,故在允许使用内部扩展RAM的时候使用xdata 和pdata并不影响P2和P0口。
单片机C语言unsigned char code table[] code 是什么作用?code的作用是告诉单片机,我定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVX(好像是),因为C语言中没办法详细描述存入的是ROM 还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data 是存入RAM的意思。
程序可以简单的分为code(程序)区,和data (数据)区,code区在运行的时候是不可以更改的,data区放全局变量和临时变量,是要不断的改变的,cpu从code区读取指令,对data 区的数据进行运算处理,因此code区存储在什么介质上并不重要,象以前的计算机程序存储在卡片上,code区也可以放在rom里面,也可以放在ram里面,也可以放在flash里面(但是运行速度要慢很多,主要读flash比读ram要费时间),因此一般的做法是要将程序放到flash里面,然后load到 ram里面运行的;DATA区就没有什么选择了,肯定要放在RAM里面,放到rom 里面改动不了。
C51存储器类型MCS-51单⽚机物理存储器区域1、 data区空间⼩,所以只有频繁⽤到或对运算速度要求很⾼的变量才放到data区内,⽐如for循环中的计数值。
2、 data区内最好放局部变量。
因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提⾼内存利⽤率。
当然静态局部变量除外,其内存使⽤⽅式与全局变量相同;3、确保你的程序中没有未调⽤的函数。
在Keil C⾥遇到未调⽤函数,编译器就将其认为可能是中断函数。
函数⾥⽤的局部变量的空间是不释放,也就是同全局变量⼀样处理。
这⼀点Keil C做得很愚蠢,但也没办法。
4、程序中遇到的逻辑标志变量可以定义到bdata中,可以⼤⼤降低内存占⽤空间。
在51系列芯⽚中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。
定义⽅法是: bdata bit LedState;但位类型不能⽤在数组和结构体中。
5、其他不频繁⽤到和对运算速度要求不⾼的变量都放到xdata区。
6、如果想节省data空间就必须⽤large模式,将未定义内存位置的变量全放到xdata区。
当然最好对所有变量都要指定内存类型。
7、当使⽤到指针时,要指定指针指向的内存类型。
在C51中未定义指向内存类型的通⽤指针占⽤3个字节;⽽指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。
如指针p是指向data区,则应定义为: char data *p;。
还可指定指针本⾝的存放内存类型,如:char data * xdata p;。
其含义是指针p指向data区变量,⽽其本⾝存放在xdata区。
bit是在内部数据存储空间中 20H .. 2FH 区域中⼀个位的地址,或者 8051 位可寻址 SFR 的⼀个位地址。
code是在 0000H .. 0FFFFH 之间的⼀个代码地址。
data是在 0 到 127 之间的⼀个数据存储器地址,或者在 128 .. 255 范围内的⼀个特殊功能寄存器(SFR)地址。
单片机的寄存器类型有:
1.累加器A:累加器A是微处理器中使用最频繁的寄存器。
在算术
和逻辑运算时它有双功能:运算前,用于保存一个操作数;运算后,用于保存所得的和、差或逻辑运算结果。
2.数据寄存器DR:数据寄存器通过数据总线向存储器和输入/输出
设备送(写)或取(读)数据的暂存单元。
3.指令寄存器IR:用来保存当前正在执行的一条指令。
4.程序计数器PC:PC用于确定下一条指令的地址,以保证程序能
够连续地执行下去,因此通常又被称为指令地址计数器。
5.地址寄存器AR:用来保存当前CPU所访问的内存单元的地址。
8051 单片机片内数据存储器分为哪几个性质和用途
不同的区域?
答:8051 内部128B 的数据RAM 区,包括有工作寄存器组区、可直接位寻址区和数据缓冲区。
各区域的特性如下:
(1)00H~1FH 为工作寄存器组区,共分4 组,每组占用8 个RAM 字节单元,每个单元作为一个工作寄存器,每组的8 个单元分别定义为8 个工作寄存器R0~R7。
当前工作寄存器组的选择是由程序状态字PSW 的RS1、RS0 两位来确定。
如果实际应用中并不需要使用工作寄存器或不需要使用4 组工作寄存器,不使用的工作寄存器组的区域仍然可作为一般数据缓冲区使用,用直接寻址或用Ri 的寄存器间接寻址来访问。
(2)20H~2FH 为可位寻址区域,这16 个字节的每一位都有一个地址,编址为00H~7FH。
当然,位寻址区也可以用作字节寻址的一般数据缓冲区使用。
内容来自单片机之家dpj100
(3)30H~7FH 为堆栈、数据缓冲区。
单片机存储用户方法
以下是一些常见的方法:
1. 内部存储器:大多数单片机都内置了一定容量的存储器,如RAM(随机存取存储器)和EEPROM(电可擦除可编程只读存储器)。
你可以使用这些内部存储器来存储用户数据。
- RAM:用于临时存储数据,掉电后数据会丢失。
适用于存储临时变量、运算结果等。
- EEPROM:可用于长期存储用户数据,即使掉电数据也不会丢失。
但写入次数有限,通常在几千次到十万次之间。
2. 外部存储器:如果需要存储大量用户数据或需要更长久的数据保存,可以考虑使用外部存储器,如Flash 存储器、EEPROM 芯片或SD 卡等。
- Flash 存储器:具有较大的存储容量,可擦写次数较多(通常在数万次到百万次之间),适合长期存储用户数据。
- EEPROM 芯片:与单片机内部的EEPROM 类似,但提供更大的存储容量。
- SD 卡:提供较大的存储容量,并且易于插拔和数据传输。
3. 文件系统:对于更复杂的应用,可以考虑在单片机上使用文件系统来组织和管理用户数据。
文件系统可以提供文件和文件夹的概念,方便数据的存储、读取和删除。
单片机名词解释单片机(Microcontroller),是一种集成电路芯片,主要用于嵌入式系统中的控制和运算。
它集成了处理器核心、存储器、输入输出接口和定时器等外围设备,具备一定的运算能力和控制能力。
单片机由于其体积小、功耗低、性能高、接口丰富等特点,被广泛应用于家电、汽车电子、工控自动化、通信设备等领域。
以下是一些单片机常见的名词解释:1. 处理器核心(Processor Core):单片机的处理器核心是其计算和控制的主要部分,包括中央处理器(CPU)、运算器(ALU)和控制器等。
它负责执行指令、处理数据和控制系统的运行。
2. 存储器(Memory):单片机的存储器分为内部存储器和外部存储器。
内部存储器包括RAM(随机存取存储器)和ROM(只读存储器),用于存储程序指令和数据。
外部存储器可以是闪存、EPROM、EEPROM等,用于扩展单片机的存储容量。
3. 输入输出接口(I/O Interface):单片机的输入输出接口用于与外部设备进行数据交互。
例如,GPIO(通用输入输出口)可以连接开关、LED等外部设备;串口、并口可以连接显示器、打印机等外部设备。
4. 定时器(Timer):定时器是单片机的一个重要外设,用于生成精确的时间延迟和定时事件。
它可以产生定时中断,使程序能够按照一定的时间间隔执行特定的操作。
5. 中断(Interrupt):中断是单片机的一种机制,可以在特定事件发生时打断程序的正常执行,优先执行相应的中断服务程序。
中断可以是外部中断,例如按钮按下;也可以是定时器中断,例如定时器溢出。
6. 片内外设(Peripheral):片内外设是指单片机集成在芯片内部的各种功能模块,例如ADC(模数转换器)、PWM(脉冲宽度调制器)、I2C(串行通信接口)等。
这些外设可以直接与单片机核心进行数据交互,实现更多的应用功能。
7. 编程(Programming):单片机的编程是指将用户的程序代码加载到单片机内存中,使单片机能够执行这些代码。
MCS-51单片机的原理及其存储器的配置特点
1、一个8位的微处理器CPU。
2、片内数据存储器(RAM128B/256B):用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等。
3、片内4kB程序存储器Flash ROM(4KB):用以存放程序、一些原始数据和表格。
4、四个8位并行I/O(输入/输出)接口P0~P3:每个口可以用作输入,也可以用作输出。
5、两个或三个定时/计数器: 每个定时/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制
6、一个全双工UART的串行I/O口:可实现单片机与单片机或其它微机之间串行通信。
7、片内振荡器和时钟产生电路:但需外接晶振和电容。
8、五个中断源的中断控制系统。
9、具有节电工作方式:休闲方式及掉电方式。
在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。
此时的电流可降到大约为正常工作方式的15%。
在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一次硬件复位为止。
这种方式下的电流可降到15 μA以下,最小可降到0 6 μA。
结构:
由中央处理单元(CPU)、存储器(ROM及RAM)和I/O接口组成。
89C51单片机内部结构如图所示:
下面介绍的是mcs-51
MCS-51单片机存储器的配置特点
①内部集成了4K的程序存储器ROM;
②内部具有256B的数据存储器RAM;。
第九课:8051单片机的存储器结构MCS-51单片机在物理结构上有四个存储空间:1、片内程序存储器2、片外程序存储器3、片内数据存储器4、片外数据存储器但在逻辑上,即从用户的角度上,8051单片机有三个存储空间:1、片内外统一编址的64K的程序存储器地址空间(MOVC)2、256B的片内数据存储器的地址空间(MOV)3、以及64K片外数据存储器的地址空间(MOVX)在访问三个不同的逻辑空间时,应采用不同形式的指令,以产生不同的存储器空间的选通信号。
程序内存ROM寻址范围:0000H ~ FFFFH 容量64KBEA = 1,寻址内部ROM;EA = 0,寻址外部ROM地址长度:16位作用:存放程序及程序运行时所需的常数。
七个具有特殊含义的单元是:0000H ——系统复位,PC指向此处;0003H ——外部中断0入口000BH —— T0溢出中断入口0013H ——外中断1入口001BH —— T1溢出中断入口0023H ——串口中断入口002BH —— T2溢出中断入口内部数据存储器RAM物理上分为两大区:00H ~ 7FH即128B内RAM 和SFR区。
作用:作数据缓冲器用。
下图是8051单片机存储器的空间结构图程序存储器一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。
那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。
程序相当于给微处理器处理问题的一系列命令。
其实程序和数据一样,都是由机器码组成的代码串。
只是程序代码则存放于程序存储器中。
MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。
对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。
强制CPU从外部程序存储器读取程序。
对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。
单片机存储器类型详解
分为两大类RAM和ROM,每一类下面又有很多子类:
RAM:SRAM
SSRAM
DRAM
SDRAM
ROM:MASK ROM
OTP ROM
PROM
EPROM
EEPROM
FLASH Memory
RAM:Random Access Memory随机访问存储器
存储单元的内容可按需随意取出或存入,这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。
它的特点就是是易挥发性(volatile),即掉电失忆。
我们常说的电脑内存就是RAM的。
ROM:Read Only Memory只读存储器
ROM 通常指固化存储器(一次写入,反复读取),它的特点与RAM相反。
RAM和ROM的分析对比:
1、我们通常可以这样认为,RAM是单片机的数据存储器,这里的数据包括内部数据存储器(用户RAM区,可位寻址区和工作组寄存器)和特殊功能寄存器SFR,或是电脑的内存和缓存,它们掉电后数据就消失了(非易失性存储器除外,比如某些数字电位器就是非易失性的)。
ROM是单片机的程序存储器,有些单片机可能还包括数据存储器,这里的数据指的是要保存下来的数据,即单片机掉电后仍然存在的数据,比如采集到的最终信号数据等。
而RAM 这个数据存储器只是在单片机运行时,起一个暂存数据的作用,比如对采集的数据做一些处理运算,这样就产生中间量,然后通过RAM暂时存取中间量,最终的结果要放到ROM的数据存储器中。
如下图所示:
2、ROM在正常工作状态下只能从中读取数据,不能快速的随时修改或重新写入数据。
它的优点是电路结构简单,而且在断电以后数据不会丢失。
缺点是只适用于存储那些固定数据的场合。
RAM与ROM的根本区别是RAM在正常工作状态下就可以随时向存储器里写入数据或从中读取数据。
SRAM:Static RAM静态随机访问存储器
它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。
不像DRAM内存那样需要刷新电路,每隔一段时间,固定要对DRAM刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积,所以在主板上SRAM存储器要占用一部分面积。
优点:速度快,不必配合内存刷新电路,可提高整体的工作效率。
缺点:集成度低,功耗较大,相同的容量体积较大,而且价格较高,少量用于关键性系统以提高效率。
DRAM:Dynamic RAM动态随机访问存储器
DRAM 只能将数据保持很短的时间。
为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新(refresh)一次,如果存储单元没有被刷新,存储的信息就会丢失。
既然内存是用来存放当前正在使用的(即执行中)的数据和程序,那么它是怎么工作的呢?
我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的“动态”,
指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。
具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。
但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因;刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,借此来保持数据的连续性。
DRAM存储单元的结构非常简单,所以它所那个达到的集成度远高于静态存储器。
但是DRAM的存取速度不如SRAM快。
SSRAM:Synchronous Static RAM同步静态随机访问存储器
同步是指Memory工作需要时钟,内部的命令的发送与数据的传输都以它为基准,随机是指数据不是线性依次存储,而是由指定地址进行数据读写。
对于SSRAM的所有访问都在时钟的上升/下降沿启动。
地址、数据输入和其它控制信号均于时钟信号相关。
这一点与异步SRAM不同,异步SRAM的访问独立于时钟,数据输入和输出都由地址的变化控制。
SDRAM:Synchronous Dynamic RAM同步动态随机访问存储器
由以上的对SSRAM的分析可以了解SDRAM
MASK ROM:掩模只读存储器
是制造商为了要大量生产,事先制作一颗有原始数据的ROM或EPROM当作样本,然后再大量生产与样本一样的ROM,这一种做为大量生产的ROM样本就是MASK ROM,而烧录在MASK ROM中的资料永远无法做修改。
OTP ROM:one-time programmable ROM一次性可编程只读存储器
PROM:Programmable ROM可编程只读存储器
内容一经写入以后,就不可能修改了,所以只可以写入一次
EPROM:Erasable Programmable ROM可擦除可编程只读存储器
用紫外线照射进行擦除,高压编程写入(+21V或+12V)
EEPROM:Electrically Erasable Programmable ROM
电信号可擦除可编程只读存储器,用电信号擦除
FLASH Memory:闪存
电信号可擦除,现在很多单片机都是FLASH的
MASK ROM,FALSH ROM和OTP ROM的区别:
MASK ROM的单片机价格便宜,但程序在出厂时已经固化,适合程序固定不变的应用场合;FALSH ROM的单片机程序可以反复擦写,灵活性很强,价格最高,是目前市场的主流;OTP ROM的MCU价格介于前两者之间,同时又拥有一次性可编程能力,适合既要求一定灵活性,又要求低成本的应用场合,尤其是功能不断翻新、需要迅速量产的电子产品。
OTP ROM和PROM的共同点是只能被设备编程器进行一次编程。
DDR:Double Date Rate 双倍速
常见的DDR SDRAM指的是双倍速率同步动态随机访问存储器
1、DDR SDRAM和SDRAM的差别:
SDRAM在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输;而DDR 内存则是一个时钟周期内传输两次次数据,它能够在时钟的上升期和下降期各传输一次数据,因此称为双倍速率同步动态随机存储器。
DDR内存可以在与SDRAM相同的总线频率下达到更高的数据传输率。
2、DDR其实是DDR1,后续的还有DDR2和DDR3,DDR3能代替DDR2内存的原因:
频率:DDR3可以在800MHz至1666MHz下运行(也可更高),而DDR2是在533MHz至1066MHz 下运行。
一般来讲,DDR3是DDR2频率的两倍,通过削减一半读写时间给系统带来操作性能提高。
功耗:DDR3相比DDR2可以节约16%的电能,因为新一代DDR3是在1.5V电压下工作,而DDR2则是在1.8V下工作,这样可以弥补由于过多的操作频率所产生的高电能消耗,同时,减少的能量消耗可以延长部件的使用寿命。
技术:DDR3内存Bank增加到了8个,比DDR2提高了一倍。
所以相比DDR2预读取会提高50%的效率,是DDR2标准的两倍。