单片机程序程序存储空间(ROM)和数据存储空间(RAM)详解_第1页
单片机程序程序存储空间(ROM)和数据存储空间(RAM)详解_第2页
单片机程序程序存储空间(ROM)和数据存储空间(RAM)详解_第3页
单片机程序程序存储空间(ROM)和数据存储空间(RAM)详解_第4页
单片机程序程序存储空间(ROM)和数据存储空间(RAM)详解_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机程序程序存储空间(ROM)和数据

存储空间(RAM)详解

I句题:STC89C52RC单片机:8K字节程序存储空间,512字节数据存储空间,内带2K字节

EEPROM存储空间;它们分别存的是什么?

8K的程序存储空间是存储代码,也就是你写的程序生成的HEX文件的,相当于电脑系

统的C盘。

512字节相当于内存,存储空间存储变量,像u8x,y,z,1132a之类的临时变量掉电后数据

丢失。

2Keeprom相当于电脑系统的硬盘,数据写入后掉电不丢失。主要是单片机在运行的过

程中写入数据或者读取数据。像设置的闹铃值,设置好了就不用每次都去设置了,保存在单

片机里面,即使掉电了,设置的数据也不会丢失,只需单片机上电再读取就好了。

单片机原理及系统结构

在此先详细分析51单片的存储器结构和寻址方法,再分析片外存储器的扩展,最后给出

设计原理并分析系统结构。

从物理结构上单片机系统的存储器结构图

(四个部分)

MCS-51FFFFH

单片机

片外

FFFHROM片外

64K

片内1000HRAM

片内ROMOFFFH64K

RAM4KEA=O

256BEA=1

000H

0000H

图一:存储空间分布

51单片机存储器结构分析

8051单片机的存储器在物理结构上分为程序存储器空间和数据存储器空间,共有4个

存储空间:片内程序存储器、片外程序存储器以及片内数据存储器、片外数据存储器空间。

这种程序存储和数据存储分开的结构形式被称为哈佛结构。MCS-5I使用哈弗结构,它

的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址

一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM(甚至是X86)这

种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU寄

存器,甚至PC机的显存,都是统一编址的,只是不同功能的存储器占据不同的地址块,各

自为政。

MCS-51单片机存储器的配置特点

①内部集成了4K的程序存储器ROM:

②内部具有256B的数据存储器RAM(用户空间+SFR空间);

③可以外接64K的程序存储器ROM和数据存储器RAM。

从物理结构的角度讲,51单片机的存储系统可以分为四个存储空间:既片内ROM,RAM和片外ROM、

RAM.

从逻辑结构上看(既编程的角度),可以分为三个不同的空间:

(1)片内、片外统一编址的64KB的程序存储器地址空间:OOOOH~FFFFH(用16

位地址);,其中OOOOH~OFFFH为片内4KB的ROM地址空间,1000H~FFFFH为外部ROM

地址空间;

(2)256B的内部数据存储器地址空间(用8位地址),OOH-FFH,分为两大部分,

其中00H~7FH(共128B单元)为内部静态RAM的地址空间,80H-FFH为特殊功能寄存

器的地址空间,21个特殊功能寄存器离散地分布在这个区域;

(3)64KB的外部数据存储器地址空间(用16位地址):OOOOH-FFFFH,包括扩展

I/O地址空间。

上述4个存储空间地址是重叠的,如图I所示。8051的指令系统设计了不同的数据传

送指令以区别这4个不同的逻辑空间:CPU访问片内、片外ROM指令用MOVC,访问片

外RAM指令用MOVX,访问片内RAM指令用MOV.

程序存储器用于存放编好的程序和表格常数。程序通过16位程序计数器寻址,寻址能

力为64KB。这使得指令能在64KB的地址空间内任意跳转,但不能使程序从程序存储器空

间转移到数据存储器空间°

程序存储器ROM的片内和片外寻址

1.程序存储器ROM用于存放程序、常数或表格。

2.在51单片机中,由引脚/EA上的电平选择内、外ROM:EA=1时,CPU执行片内的4KROM中的程

序;EA=0时,CPU选择片外ROM中的程序。

3.无论是使用片内还是使用片外ROM,程序的起始地址都是从ROM的0000H单元开始。

4.尽管系统可以同时具备片内ROM和外部ROM,但是在一般正常使用情况下,通过/EA的设定来选

择其一(或者使用内部ROM,或者使用外部ROM)。

5.如果EA=1(执行片内程序存储器中程序时):如果程序计数器的指针PC值超过OFFFH(4K)时,单

片机就要自动的转向片外的ROM存储器且从1000H单元开始执行程序(无法使用片外ROM的低4K

空间)。

6.当程序超过4K时,有两种使用程序存储器ROM的方法:

①设置EA=0,使用外部ROM.从地址=0000H开始;

②设置EA=1,使用内部的4KROM和外部ROM(地址从1000H开始的单元)。

片外程序存储器

(最大64K)

EA=0时ROM的使用

8051从片内程序存储器和片外程序存储器取指时的执行速度相同。

程序存储器六个特殊的单元:

在ROM中有六个单元具有特定功能。

0000H单元:复位时程序计数器PC所指向的单元,因此用来存放程序中的第一条指令:

0003H单元:外部中断/INTO的矢量入口地址;

OOOBH单元:定时器TO溢出中断的矢量入口地址:

0013H单元:外部中断/INT1的矢量入口地址:

OO1BH单元:定时器T1的溢出中断矢量入口地址:

0023H单元:卡行口接收、传送的中断矢量入口地址。

矢量入口单元:在编写中断程序时,写入对应的“跳板指令”

①存放在ROM的0000H单元;

②必须是“跳转指令”以跳过下面的5个中断矢量,转到后面的真正的主程序入口0100H单元。

ORG0000HLJMP0130H

ORG0100H

START:MOVAz#00H

END

外部程序存储器:

当单片机使用外ROM存储器时(扩展系统),必须设定/EA=0,此时单片机的端口功能就要发生相应

的改变:

①PO、P2作为外部ROM的地址和数据总线:

程序存储器RAM的片内和片外寻址

无论在物理上还是逻辑上,系统中RAM都可分为两个独立空间:内部和外部RAM。由不同的指令

来访问。

1.访问内部数据存储单元时,使用MOV指令;

2.访问外部数据存储器时,使用MOVX指令。内部RAM从功能上将256B空间分为二个不同的块:

1.低128B的RAM块;

2.高128B的SFR(SpecialFunctionRegister)块。

在低128B的RAM存储单元中又可划分为:

1.工作寄存裾区;

2.位寻址区;

3.通用存储数据的“便签区”。

高128B的专用寄存器区SFR中仅仅使用了21寄存特(51系列),其它107个单元不能使用。

注意:

一般的教科书里RAM大小是指默认用户RAM,但是很少有特别说明的

C51:片内用户RAM有、28字节(位于片内所有RAM的低128B,高128B是SFR)

访问RAM可以使用直接或者间接寻址方式,土也址为00H-7FH,在80H-FFH的空间分配给

了SFR,只能使用直接寻址方式。

C52:片内用户RAM为256字节(位于片内所有RAM的低128B,高128B是SFR和用户

RAM)

低128字节(00H-7FH)的访问方式为直接和间接寻址方式;

高128字节(地址80H-FFH)只能使用间接寻址方式。

SFR的地址也为80H-FFH,但只能使用直接寻址方式。

也就是说,C52的高128B是用户RAM和SFR统一编制,共享地址,通过指令的寻址方式

不同来进行区分。

MCS-51片内、片外数据存储器示意图

注意:

1,防问片内RAM20H单元;

MOVA,20H

特殊功能2,访问片外RAM20H单元;

寄存器MOVRO,#20h

SFR

片外数据MOVXA.@R0

80H存储器3,尽管片内、外RAM单元的

7FH64KBOOHFFH地址相重叠但由

通用数据于指令的不同不会发生地址

存储器混乱,所以无论从物理或逻辑

上,为、外RAM是两个独立的

00H存储空间。

OOOOH

片内数据存储器RAM片外数据存储器RAM

256B个字节64KB个字节

片内RAM低128B字节功能分配图

便龛区通用的RAM区

地址:30H-7FH

30H

2FH位寻址区

位寻址区a16个单元20H-2FH,

共有128可寻址位个位。

20H

1FH位地址:00H-7FH

3区注意:位地址与宇市地址的区别

1

2区四个工作寄存器区

10H每个区中有

0FHR0-R7

1区八个工作寄存器

0711

0:<

(一)工作寄存器区结构图(0区)

【注意】:工作寄存器Rn实际上就是RAM单元的一部分

片内RAM中具有双重功能的存储结构图

2FH7F7E7D7C7B7A7978

/7776757473727170

6F6E6D6C6B6A6968

6766656463626160

5F5E5D5C5B5A5958

6766655453526150

4F4E4D4C4B4A4948

字节地址I4746454443424140位地址

3F3E3D3C3B3A3938

3726252423222120一

2F2E2D2C2B2A2928

2726252423222120

1F1E1D1C1B1A1918

1716151413121110

0F0E0D0C0B0A0908

\20H0706050403020100

对于数据存储器,分为内部数据存储器(IDATA/RAM)和外部数据存储器(XDATA)

两个部分,但这两个存储器就不像code存储器那样共享地址空间的了。一般的8051芯片,

内部RAM只有128B,从0x00-0x7F,而从0x80-0xFF则是SFR(CPU工作寄存器和各

种外设寄存器都在此)的区域。对于8052来说,内部RAM有256B,所以0x80-0xFF是

高128B的RAM在使用。可这部分不是SFR专用的吗?是SFR专用,但注意,SFR的访

问只能使用“直接寻址方式”(使用特定的汇编指令来实现),区别就在这里。只有通过直

接寻址访问的地址才是SFR,否则就是普通的RAM。

至于外扩的RAM(XDATA),地址也是从OxOOOO-OxFFFF的,而且这里的0x0000和

内部RAM的0x00是不同的,是完全独立的两个空间。他们的访问方法也是不同的,MCS-51

使用MOVX指令,来读写XDATA区。而月.,访问XDATA区,是需要DPTR寄存器来辅助

的。因为只有DPTR才能装得下十六位的XDATA地址。

所以说,MCS-51读写IDATA区的速度是最快的,而且访问方法也是最多的。访问

XDATA区的速度相对就要慢很多。

用P0口作地址/数据赛用总线,用P2口的口线作高位地址线,最多可以扩展开关电源

模块64KB的存储器。控制信号线包括:使用ALE作为地址锁存的选通信号,以实现低8

位地址的锁存似PSEN信号作为扩展程序存储器的读选通信号似EA信号作为内、外程序

存储器的选择信号;以EA和作为扩展数据存储器和I/O端口的读、写选通信号。执行MOVX

指令时,RD和WR信号分别自动有效。片外数据存储器RAM的读和写由8051的RD(P3.7)

和WR(P3.6)信号控制,而片外程序存储器的输出允许(OE)由读选通PSEN信号控制。

尽管片外数据存储器和片外程序存储器共处同一地址空间,但由于控制信号及使用的数

据传送指令不同,故不会发生总线冲突。

P2

ALE

ATS9S51

RST____

PSN

RD

EAWR

A

DIP40处P

图2数据扩展图

由于现在以8051为内核的单片机几乎都带有内部的FLASH程序存储器。如本设计中

要用到的开关电源模块AT89C51或AT89s51均自带4KB的FLASH程序存储器,有的单片

机带有20KB甚至更大容量的程序存储器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论