单片机存储器类型介绍

单片机存储器类型介绍
单片机存储器类型介绍

单片机存储器类型详解

分为两大类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标准的两倍。

单片机数据存储类型和申明方法

一.51的存储器结构 笼统来说单片机片内存储器分为CODE区和data区,cpu从code区读取指令,对data区的数据进行运算处理。前者在程序运行中为只读,一般为FLASH,用来放置程序代码和一些只读的数据(如字模表之类),后者可以随机读写,用来存放程序运行中的临时数据,如局部变量或全局变量,全局变量一直占用着RAM内存,而局部变量在使用完后会自动清除RAM空间。当然在片外,可以外扩FLASH和RAM(此时称为XRAM,因为寻址方式不一样),外扩的大小与单片机寻址能力有关。有的单片机将外扩RAM封装在片内,如AT89C51,所以有了所谓的片内XRAM。 二.变量的存储模式 变量是一种在程序执行过程中能不断变化的量。它有数据类型、存储类型、存储器模式和有效范围四种属性。C语言规定每个变量必须有一个标识符作为变量名,在使用一个变量前,必须先对变量进行定义,指出其数据类型和存储模式。以便编译系统为其分配存储单元。在C51中对变量进行定义的格式如下: [存储类型] 数据类型 [存储器类型] 变量名表,如auto char data i; 存储类型指明变量的存储区域,而变量的存储类型和变量在程序中说明的位置决定了它的作用范围。存储类型含义与C语言相同。存储类型有四种:auto型、extern型、static型、register型,缺省为auto型(看来我一直都是凹凸型啊)。其区别如下: auto:自动变量。存储在内存的堆栈区,属于临时性存储变量,并不长期占用内存,可以被多次覆盖。 register:寄存器变量。register与auto一样属于自动类别。区别在于register 的值保存在CPU的寄存器中。计算机中只有寄存器中的数据才能直接参与运算,而一般变量是放在内存中的,变量参加运算是,需要先把变量从内存中取到寄存器中,然后计算。所以一般把使用最频繁的变量定义成register变量。register变量只能在函数中定义,并只能是int和char型。 static:静态变量。声明静态变量的,也就是C语言中的私有成员.如果在一个函数中声明一个静态变量,静态变量的空间不在栈里面,而是存储在静态空间里,这个函数结束后,静态变量的值依旧存在,内存不会收会此变量占用的内存空间,而是等整个程序都结果后才收回静态变量空间。 extern:外部类型。extern用来声明外部变量,可以用于此程序外的程序中(可在两个C 文件间交叉使用),类型要一致。变量在数据运行时被分配了一定的内存空间,该空间在整个运行程序中,只要程序存在,自始自终都被该变量使用,即其值始终不变。 数据类型就不用多说了,bit,byte,char什么的。 存储器类型与单片机的寻址方式有关,影响程序的执行效率。下表是传统C51的存储器类型,不同单片机类型有所差别。

单片机存储器

单片机存储器 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. 程序存贮器ROM MCS-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个非常特殊的、固定的单元,这些单元所存放的内容是有特定要求的。 0000H单元:存放一条跳转指令,从而使用户程序自跳转地址处开始存放。 0003H单元:存放外部中断0的中断服务程序的入口地址。(/INT0)000BH单元:存放定时器/计数器0溢出的中断服务程序的入口地址。(T0) 0013H单元:存放外部中断1的中断服务程序的入口地址。(/INT1)001BH单元:存放定时器/计数器1溢出的中断服务程序的入口地址。(T1) 0023H单元:存放串行口中断服务程序的入口地址。(串口) 002BH单元:存放定时器/ 计数器2溢出的中断服务程序的入口地

单片机程序存储空间和数据存储空间详解

创作编号: GB8878185555334563BT9125XW 创作者:凤呜大王* 单片机程序程序存储空间(ROM)和数据存储空间(RAM)详解 问题:STC89C52RC单片机:8K字节程序存储空间,512字节数据存储空间,内带2K 字节EEPROM存储空间;它们分别存的是什么? 8K的程序存储空间是存储代码,也就是你写的程序生成的HEX文件的,相当于电脑系统的C盘。 512字节相当于内存,存储空间存储变量,像u8 x,y,z,u32 a之类的临时变量掉电后数据丢失。 2K eeprom相当于电脑系统的硬盘,数据写入后掉电不丢失。主要是单片机在运行的过程中写入数据或者读取数据。像设置的闹铃值,设置好了就不用每次都去设置了,保存在单片机里面,即使掉电了,设置的数据也不会丢失,只需单片机上电再读取就好了。 单片机原理及系统结构 在此先详细分析51单片的存储器结构和寻址方法,再分析片外存储器的扩展,最后给出设计原理并分析系统结构。

图一:存储空间分布 51单片机存储器结构分析 8051单片机的存储器在物理结构上分为程序存储器空间和数据存储器空间,共有4个存储空间:片内程序存储器、片外程序存储器以及片内数据存储器、片外数据存储器空间。 这种程序存储和数据存储分开的结构形式被称为哈佛结构。MCS-51使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM (甚至是x86)这种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU寄存器,甚至PC机的显存,都是统一编址的,只是不同功能的存储器占据不同的地址块,各自为政。 MCS-51单片机存储器的配置特点 ①内部集成了4K的程序存储器ROM; ②内部具有256B的数据存储器RAM(用户空间+SFR空间); ③可以外接64K的程序存储器ROM和数据存储器RAM。 从物理结构的角度讲,51单片机的存储系统可以分为四个存储空间:既片内ROM,RAM和片外ROM、RAM。 从逻辑结构上看(既编程的角度),可以分为三个不同的空间: (1)片内、片外统一编址的64KB的程序存储器地址空间:0000H~FFFFH(用16位地址);,其中0000H~0FFFH为片内4KB的ROM地址空间,1000H~FFFFH为

MCS-51单片机存储器结构

MCS-51单片机在物理结构上有四个存储空间: 1、片内程序存储器 2、片外程序存储器 3、片内数据存储器 4、片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1、片内外统一编址的64K的程序存储器地址空间(MOVC) 2、256B的片内数据存储器的地址空间(MOV) 3、以及64K片外数据存储器的地址空间(MOVX) 在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号。 程序内存ROM 寻址范围:0000H ~ FFFFH 容量64KB EA = 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的容量时,才会转向外部的程序存储器读取程序。 当=1时,程序从片内ROM开始执行,当PC值超过片内ROM容量时会自动转向外部ROM空间。 当=0时,程序从外部存储器开始执行,例如前面提到的片内无ROM的8031单片机,在实际应用中就要把8031的引脚接为低电平。 8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意: 其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H 单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。 另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下: 0003H—000AH 外部中断0中断地址区。 000BH—0012H 定时/计数器0中断地址区。

详细分析MCS-51单片机内部数据存储器RAM

详细分析MCS-51单片机内部数据存储器RAM 8051单片机的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)。如图所示为低128单元的配置图。 寄存器区 8051共有4组寄存器,每组8个寄存单元(各为8),各组都以R0~R7作寄存单元编号。寄存器常用于存放操作数中间结果等。由于它们的功能及使用不作预先规定,因此称之为通用寄存器,有时也叫工作寄存器。4组通用寄存器占据内部RAM的00H~1FH单元地址。 在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组。到底是哪一组,由程序状态字寄存器PSW中RS1、RS0位的状态组合来决定。通用寄存器为CPU提供了就近存储数据的便利,有利于提高单片机的运算速度。此外,使用通用寄存器还能提高程序编制的灵活性,因此,在单片机的应用编程中应充分利用这些寄存器,以简化程序设计,提高程序运行速度。 位寻址区 内部RAM的20H~2FH单元,既可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作,因此把该区称之为位寻址区。位寻址区共有16个RAM单元,计128位,地址为00H~7FH。MCS-51具有布尔处理机功能,这个位寻址区可以构成布尔处理机的存储空间。这种位寻址能力是MCS-51的一个重要特点。 用户RAM区 在内部RAM低128单元中,通用寄存器占去32个单元,位寻址区占去16个单元,剩下80个单元,这就是供用户使用的一般RAM区,其单元地址为30H~7FH。对用户RAM 区的使用没有任何规定或限制,但在一般应用中常把堆栈开辟在此区中。 内部数据存储器高128单元

51单片机数据存储器结构详解

1、bit是在内部数据存储空间中20H .. 2FH 区域中一个位的地址,这在DATA的20H以后以字节形式出现,可互相参照。另外加上8051 可寻址的SFR,但刚刚试过,只是00H--7FH 起作用,也就是说当数据有变化时颜色变红,以后的从80H到--FFH就不是位寻址区了,是位寻址的特殊寄存器,如涉及到了可位寻址的那11个当然会有反应。 复位后,程序计数器PC的内容为0000H,内部RAM各单元的值不确定。各功能寄存器的复位值如下:堆栈指针SP的复位值为07H,累加器ACC、寄存器B的复位值为00H,数据指针DPTR的复位值为0000H,而p0、p1、p2、p3四个口的复位值为0FFH。其他SFR如PSW、TCON、TMOD、TL0、TH0、TL1、TH1的复位值也为00H。 2、wave中是低128字节和高128字节(0-7FH),低128字节是片内RAM区,高128字节(80-FFH)是SFR(特殊功能寄存器)bit则是位于低128字节的20H .. 2FH 区域,即data 的20H .. 2FH 区域 3、code是在0000H .. 0FFFFH 之间的一个代码地址。 例如: ORG 5000H TAB: DB 22H,3BH,43H,66H,5H,6DH,88H后, CODE从5000H开始以后变成DB各位 4、data是在0 到127 之间的一个数据存储器地址,或者加128 .. 255 范围内的一个特殊功能寄存器(SFR)地址。两者访问的方式不同。实际上由于PSW的复位设置PSW.3=RS0和PSW.4=RS1皆为0,所以通用工作寄存器区就是第0区,所以data的00--07H部分是与REG栏中的R0--R7对应的。以后的则仅代表低128字节的内部RAM。 5、idata是0 to 255 范围内的一个idata 存储器地址。idata与data重合低128字节,有的地方只有DATA表示256字节的片内RAM,xdata 是0 to 65535 范围内的一个xdata 存储器地址。 指针类型和存储区的关系详解 一、存储类型与存储区关系 data ---> 可寻址片内ram bdata ---> 可位寻址的片内ram idata ---> 可寻址片内ram,允许访问全部内部ram pdata ---> 分页寻址片外ram (MOVX @R0) (256 BYTE/页) xdata ---> 可寻址片外ram (64k 地址范围FFFFH) code ---> 程序存储区(64k 地址范围),对应MOVC @DPTR 二、指针类型和存储区的关系 对变量进行声明时可以指定变量的存储类型如: uchar data x和data uchar x相等价都是在内ram区分配一个字节的变量。 同样对于指针变量的声明,因涉及到指针变量本身的存储位置和指针所指向的存储区

单片机存储器类型介绍

单片机存储器类型详解 分为两大类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),动态内存中所谓的“动态”,

MCS51单片机存储器结构

MCS-51单片机存储器结构 MCS-51的存储器可分为四类: 程序存储器 一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样,都是由机器码组成的代码串。只是程序代码则存放于程序存储器中。 MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。强制CPU从外部程序存储器读取程序。对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。 8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意: 其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。 另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下: 0003H—000AH 外部中断0中断地址区。 000BH—0012H 定时/计数器0中断地址区。 0013H—001AH 外部中断1中断地址区。 001BH—0022H 定时/计数器1中断地址区。 0023H—002AH 串行中断地址区。 可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,每段只有8个地址单元是不能存下完整的中断服务程序的,因而一般也在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU读到这条转移指令,便转向其他地方去继续执行中断服务程序。 数据存储器 数据存储器也称为随机存取数据存储器。MCS-51单片机的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外部数据存储区。MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。 8051内部RAM共有256个单元,这256个单元共 分为两部分。其一是地址从00H—7FH单元(共128个字节) 为用户数据RAM。从80H—FFH地址单元(也是128个字节)

51单片机大容量数据存储器的扩展

郑州航空工业管理学院 《单片机原理与应用》 课程设计说明书 10 级自动化专业 1006112 班级 题目51单片机大容量数据存储器的系统扩展姓名杨向龙学号100611234 指导教师王义琴职称讲师 二О一三年六月十日

目录 一、51单片机大容量数据存储器的系统扩展的基本原理 (4) 二、设计方案 (4) 三、硬件的设计 (5) 3.1 系统的硬件构成及功能 (5) 3.2硬件的系统组成 (5) 3.2.1、W241024A (5) 3.2.2、CPLD的功能实现 (5) 3.2.3、AT89C52简介 (6) 3.2.4、SRAM的功能及其实现 (9) 3.3、基本单片机系统大容量数据存储器系统扩展 (9) 五、结论 (13) 六、参考资料 (13)

51单片机大容量数据存储器的系统扩展 摘要:在单片机构成的实际测控系统中,仅靠单片机内部资源是不行的,单片 机的最小系统也常常不能满足要求,因此,在单片机应用系统硬件设计中首先要解决系统扩展问题。51单片机有很强的外部扩功能, 传统的用IO口线直接控制大容量数据存储器的片选信号的扩展系统存在运行C51编译的程序时容易死机的缺点。文中介绍了一种改进的基于CPLD的51系列单片机大容量数据存储器的扩展方法,包括硬件组成和软件处理方法。 关键字:W241024A、CPLD、AT89C52、SRAM 一、51单片机大容量数据存储器的系统扩展的基本原理 MCS-51 单片机系统扩展时,一般使用P0 口作为地址低8位(与数据口分时复用),而P2口作为地址高8位,它共有16根地址总线,最大寻址空间为64KB。但在实际应用中,有一些特殊场合,例如,基于单片机的图像采集传输系统,程控交换机话单的存储等,需要有大于64KB 的数据存储器。 二、设计方案 在以往的扩展大容量数据存储器的设计中,一般是用单片机的IO口直接控制大容量数据存储器的片选信号来实现,但是这种设计在运行以C51编写的程序(以LARGE 方式编译)时往往会出现系统程序跑飞的问题,尤其是在程序访问大容量数据存储器(如FLASH)的同时系统产生异常(如中断),由于此时由IO 口控制的片选使FLASH 被选中而SRAM 无法被选中,堆栈处理和函数参数的传递无法实现从而导致程序跑飞的现象。文章介绍一种基于CPLD 的大容量数据存储器的扩展系统,避免了上述问题的产生,提高了扩展大容量数据存储器系统的可靠性。该系统MCU 采用89C52,译码逻辑的实现使用了一片EPM7128 CPLD 芯片,系统扩展了一片128K 的SRAM,一片4M 字节的NOR FLASH,以上芯片均为5V 供电。

51单片机存储器结构介绍

MCS-51单片机存储器结构 从用户的角度上,8051单片机有三个存储空间: 1、片内外统一编址的64K的程序存储器地址空间(MOVC) 2、256B的片内数据存储器的地址空间(MOV) 3、以及64K片外数据存储器的地址空间(MOVX) 在访问三个不同的逻辑空间时,应采用不同形式的指令,以产生不同的存储器空间的选通信号。 【程序内存ROM】 寻址范围:0000H ~ FFFFH 容量64KB EA = 1,寻址内部ROM; EA = 0,寻址外部ROM 地址长度:16位 作用:存放程序及程序运行时所需的常数。 七个具有特殊含义的单元是: 0000H ——系统复位,PC指向此处; 0003H ——外部中断0入口 000BH —— T0溢出中断入口 0013H ——外中断1入口 001BH —— T1溢出中断入口 0023H ——串口中断入口 002BH —— T2溢出中断入口 【内部数据存储器RAM】 物理上分为两大区:00H ~ 7FH(低128单元用户RAM 和高128单元SFR区) 作用:作数据缓冲器用。

一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样,都是由机器码组成的代码串。只是程序代码则存放于程序存储器中。 MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。(对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的EA端必须接地。强制CPU从外部程序存储器读取程序。)对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC 值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。 当=1时,程序从片内ROM开始执行,当PC值超过片内ROM容量时会自动转向外部ROM空间。 当=0时,程序从外部存储器开始执行,例如前面提到的片内无ROM的8031单片机,在实际应用中就要把8031的引脚接为低电平。 8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意: 其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H 单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。 另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下: 0003H—000AH 外部中断0中断地址区。 000BH—0012H 定时/计数器0中断地址区。 0013H—001AH 外部中断1中断地址区。 001BH—0022H 定时/计数器1中断地址区。 0023H—002AH 串行中断地址区。 可见以上的40个单元是专门用于存放中断处理程序 的地址单元,中断响应后,按中断的类型,自动转到各 自的中断区去执行程序。从上面可以看出,每个中断服 务程序只有8个字节单元,用8个字节来存放一个中断 服务程序显然是不可能的。因此以上地址单元不能用于 存放程序的其他内容,只能存放中断服务程序。但是通 常情况下,我们是在中断响应的地址区安放一条无条件 转移指令,指向程序存储器的其它真正存放中断服务程 序的空间去执行,这样中断响应后,CPU读到这条转移指 令,便转向其他地方去继续执行中断服务程序。 右图是ROM的地址分配图: 从图中大家可以看到,0000H-0002H,只有三个存储单 元,3个存储单元在我们的程序存放时是存放不了实际意义的程序的,通常我们在实际编写程序时是在这里安排一条ORG指令,通过ORG指令跳转到从0033H开始的用户ROM区域,再来安排我们的程序语言。从0033开始的用户ROM区域用户可以通过ORG指令任意安排,但在应用中应注意,不要超过了实际的存储空间,不然程序就会找不到。

c51中存储类型code-data

单片机C 语言code 与data 的作用 单片机C 语言unsigned char code table[] code 是什么作用? code 的作用是告诉单片机,我定义的数据要放在ROM (程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVC(好像是),因为C 语言中没办法详细描述存入的是ROM 还是RAM (寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data 是存入RAM 的意思。 程序可以简单的分为code (程序)区,和data (数据)区,code 区在运行的时候是不可以更改的,data 区放全局变量和临时变量,是要不断的改变的,cpu 从code 区读取指令,对data 区的数据进行运算处理,因此code 区存储在什么介质上并不重要,象以前的计算机程序存储在卡片上,code 区也可以放在rom 里面,也可以放在ram 里面,也可以放在flash 里面(但是运行速度要慢很多,主要读flash 比读ram 要费时间),因此一般的做法是要将程序放到flash 里面,然后load 到 ram 里面运行的;DA TA 区就没有什么选择了,肯定要放在RAM 里面,放到rom 里面改动不了。 附: c51中的存储类型 本文来自CSDN 博客,转载请标明出处:https://www.360docs.net/doc/2e15045256.html,/erazy0/archive/2009/09/20/4573196.aspx data ---> 可寻址片内ram bdata ---> 可位寻址的片内ram idata ---> 可寻址片内ram ,允许访问全部内部ram pdata ---> 分页寻址片外ram (MOVX @R0) (256 BYTE/页) xdata ---> 可寻址片外ram (64k 地址范围) code ---> 程序存储区 (64k 地址范围),对应MOVC @DPTR const 表示本c51中存储类型

单片机程序存储空间和数据存储空间详解..

单片机程序程序存储空间(ROM)和数据 存储空间(RAM)详解 问题:STC89C52RC单片机:8K字节程序存储空间,512字节数据存储空间,内带2K字节EEPROM存储空间;它们分别存的是什么? 8K的程序存储空间是存储代码,也就是你写的程序生成的HEX文件的,相当于电脑系统的C盘。 512字节相当于内存,存储空间存储变量,像u8 x,y,z,u32 a之类的临时变量掉电后数据丢失。 2K eeprom相当于电脑系统的硬盘,数据写入后掉电不丢失。主要是单片机在运行的过程中写入数据或者读取数据。像设置的闹铃值,设置好了就不用每次都去设置了,保存在单片机里面,即使掉电了,设置的数据也不会丢失,只需单片机上电再读取就好了。 单片机原理及系统结构 在此先详细分析51单片的存储器结构和寻址方法,再分析片外存储器的扩展,最后给出设计原理并分析系统结构。 图一:存储空间分布

51单片机存储器结构分析 8051单片机的存储器在物理结构上分为程序存储器空间和数据存储器空间,共有4个存储空间:片内程序存储器、片外程序存储器以及片内数据存储器、片外数据存储器空间。 这种程序存储和数据存储分开的结构形式被称为哈佛结构。MCS-51使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM(甚至是x86)这种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU寄存器,甚至PC机的显存,都是统一编址的,只是不同功能的存储器占据不同的地址块,各自为政。 MCS-51单片机存储器的配置特点 ①内部集成了4K的程序存储器ROM; ②内部具有256B的数据存储器RAM(用户空间+SFR空间); ③可以外接64K的程序存储器ROM和数据存储器RAM。 从物理结构的角度讲,51单片机的存储系统可以分为四个存储空间:既片内ROM,RAM和片外ROM、RAM。 从逻辑结构上看(既编程的角度),可以分为三个不同的空间: (1)片内、片外统一编址的64KB的程序存储器地址空间:0000H~FFFFH(用16位地址);,其中0000H~0FFFH为片内4KB的ROM地址空间,1000H~FFFFH为外部ROM 地址空间; (2)256B的内部数据存储器地址空间(用8位地址),00H~FFH,分为两大部分,其中00H~7FH(共128B单元)为内部静态RAM的地址空间,80H~FFH为特殊功能寄存器的地址空间,21个特殊功能寄存器离散地分布在这个区域; (3)64KB的外部数据存储器地址空间(用16位地址):0000H~FFFFH,包括扩展I/O地址空间。 上述4个存储空间地址是重叠的,如图1所示。8051的指令系统设计了不同的数据传送指令以区别这4个不同的逻辑空间:CPU访问片内、片外ROM指令用MOVC,访问片外RAM指令用MOVX,访问片内RAM指令用MOV。 程序存储器用于存放编好的程序和表格常数。程序通过16位程序计数器寻址,寻址能力为64KB。这使得指令能在64KB的地址空间内任意跳转,但不能使程序从程序存储器空间转移到数据存储器空间。

单片机存储器类型及结构

51单片机存储器结构 51单片机存储器采用了通用的哈弗型机构,器存储器在物理机构上分为4部分: ● 片内程序存储器; ● 片外程序程序存储器; ● 片内数据存储器; ● 片外数据存储器。 从逻辑上则存储器结构为3部分,访问不同的逻辑空间是采用不同的指令: ● 片内与片外统一编址的64KB 程序存储器----MOVC ; ● 片内低128B 的数据存储器和高128B 的特殊功能寄存器----MOV ; ● 片外64KB 的数据存储器----M OVX ; C51通过变量修饰符来指定变量在存储器的位置,按照修饰符将存储器分类: ● code----片内外64KB 程序存储器; ● data---片内128B 数据存储器,采用直接寻址方式; ● idata ---片内所有256B (包括低128B 的RAM )的数据存储器,采用间接寻址方式。 ● bdata ---片内的16B 的数据存储器(位寻址区),可位存取和字节存取。 ● xdata ---- 片外64KB 的数据存储器; 51单片机的存储空间地址是重叠的,采用不同的数据传送指令解决了该问题。图1表示51单片机存储器空间结构: 图1 51单片机存储器空间结构 1. 程序存储器(ROM) 程序存储器只允许读,专用于存放程序指令代码及表格常数。目前通用的的51单片机(如AT89S51)内部有4KB 的可电擦除的Flash 型的程序存储器,存储器地址编码为0000H-0FFFH , 片内数据存储器 片外数据存储器 程序存储器

可对外扩展到64KB。由于程序存储器片内外统一编址,内部的存储器已经占用4KB空间,因此对外扩展扩展的存储器大小仅为60KB,地址范围为1000F-FFFFH,采用MOVC指令进行访问。 当EA=1时单片机1的PC在0000~0FFFH范围内执行片内程序存储器中的程序,当指令地址超过0FFFH 后就自动转向片外程序存储器中取指令。 当EA=0时CPU只能从片外程序存储器中取指令,单片机片内程序存储器不起作用。 51单片机的程序存储器中有6个特殊的存储单元: ●0000H:单片机系统复位后,PC=0000H,即程序从0000H单元开始执行; ●0003H:外部中断0入口地址; ●000BH:定时器T0溢出中断入口地址; ●0013H:外部中断1入口地址; ●001BH:定时器T1溢出中断入口地址; ●0023H:串行口中断入口地址。 用户定义的初始主程序入口通常设置在0023H地址单元以后,运行时从0000H单元开始启动,使用无条件跳转指令跳转到到用户主程序的入口处。从上面各个中断入口地址可以看出,每个中断服务程序只有8个字节单元。这段空间由于过小通常不存放中断服务子程序,而是在中断入口地址处安放一条无条件转移指令,使CPU响应中断时自动跳转到用户定义的中断服务子程序的起始地址。 2. 数据存储器(RAM) 数据存储器用于存放运算的中间结果、数据暂存和缓冲、标志位等。片内和片外存储器独立编址,使用不同指令进行访问。51内核的单片机由于内部使用8位数据总线,故片内RAM最大为256B。内部的128B特殊功能寄存器(SFR)本质上属于RAM,是单片机特殊的RAM,但通常不把它成为单片机的内部RAM。特殊功能寄存器和内部高128B的地址是重叠的,使用不同的寻址方式即可实现在这两区域的存取。按照内部数据存储器的结构可将分为3部分: ●片内低128B的RAM(00H~7FH),使用MOV指令直接或间接寻址方式访问; ●特殊功能寄存器SFR(80H~FFH),只能使用直接寻址方式,指令为MOV; ●片内高128的RAM(80H~FFH),只能使用间接寻址方式,指令为MOV; ●片外64KBRAM,只能使用间接寻址方式,指令为MOVX; 51单片机的内部数据存储器结构如图2所示:

51单片机数据类型

从数据存储类型来说,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里面(但是运

单片机存储器和寄存器

单片机的存储器、寄存器 单片机的存储器有程序存储器ROM与数据存储器RAM两种。这两种存储器在使用上是严格区分的,不得混用。程序存储器存放程序指令,以及常数,表格等;而数据存储器则存放缓冲数据。 MCS-51单片机存储器的结构共有3部分:一是程序存储器二是内部数据存储器三是外部数据存储器MCS-51单片机的存储器可分为5类:程序存储器、内部数据存储器、特殊功能寄存器、位地址空间、外部数据存储器 程序存储器 程序是控制计算机动作的一系列命令,单片机只认识由“0”和“1”代码构成的机器指令。如前述用助记符编写的命令MOV A,#20H,换成机器认识的代码74H、20H:(写成二进制就是01110100B和00100000B)。在单片机处理问题之前必须事先将编好的程序、表格、常数汇编成机器代码后存入单片机的存储器中,该存储器称为程序存储器。程序存储器可以放在片内或片外,亦可片内片外同时设置。由于PC程序计数器为16位,使得程序存储器可用16位二进制地址,因此,内外存储器的地址最大可从0000H到FFFFH。8051内部有4k字节的ROM,就占用了由0000H~0FFFH的最低4k个字节,这时片外扩充的程序存储器地址编号应由1000H开始,如果将8051当做8031使用,不想利用片内4kROM,全用片外存储器,则地址编号仍可由0000H开始。不过,这时应使8051的第{31}脚(即EA脚)保持低电平。当EA为高电平时,用户在0000H至0FFFH范围内使用内部ROM,大于0FFFH后,单片机CPU自动访问外部程序存储器。 数据存储器 单片机的数据存储器由读写存储器RAM组成。其最大容量可扩展到64k,用于存储实时输入的数据。8051内部有256个单元的内部数据存储器,其中00H~7FH为内部随机存储器RAM,80H~FFH为专用寄存器区。实际使用时应首先充分利用内部存储器,从使用角度讲,搞清内部数据存储器的结构和地址分配是十分重要的。因为将来在学习指令系统和程序设计时会经常用到它们。8051内部数据存储器地址由00H至FFH共有256个字节的地址空间,该空间被分为两部分,其中内部数据RAM的地址为00H~7FH(即0~127)。而用做特殊功能寄存器的地址为80H~FFH。在此256个字节中,还开辟有一个所谓“位地址”区,该区域内不但可按字节寻址,还可按“位(bit)”寻址。对于那些需要进行位操作的数据,可以存放到这个区域。从00H到1FH安排了四组工作寄存器,每组占用8个RAM 字节,记为R0~R7。究竟选用那一组寄存器,由前述标志寄存器中的RS1和RS0来选用。在这两位上放入不同的二进制数,即可选用不同的寄存器组。 特殊功能寄存器 特殊功能寄存器(SFR)的地址范围为80H~FFH。在MCS-51中,除程序计数器PC和四个工作寄存器区外,其余21个特殊功能寄存器都在这SFR块中。其中5个是双字节寄存器,它们共占用了26个字节。各特殊功能寄存器的符号和地址见附表2。其中带*号的可位寻址。特殊功能寄存器反映了8051的状态,实际上是8051的状态字及控制字寄存器。用于CPU PSW便是典型一例。这些特殊功能寄存器大体上分为两类,一类与芯片的引脚有关,另一类作片内功能的控制用。与芯片引脚有关的特殊功能寄存器是P0~P3,它们实际上是4个八位锁存器(每个I/O口一个),每个锁存器附加有相应的输出驱动器和输入缓冲器就构成了一个并行口。MCS-51共有P0~P3四个这样的并行口,可提供32 根I/O线,每根线都是双向的,并且大都有第二功能。其余用于芯片控制的寄存器中,累加

相关文档
最新文档