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

合集下载

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

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

创作编号: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。

单片机程序存储空间和数据存储空间详解之欧阳术创编

单片机程序存储空间和数据存储空间详解之欧阳术创编

单片机程序程序存储空间(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。

《单片机原理及应用》课件01-51单片机基本结构与存储器分配

《单片机原理及应用》课件01-51单片机基本结构与存储器分配

内中断
并行口
外中断
P0 P1 P2 P3
串口模块 TXD RXD
中断模块 INT0 INT1
P0.0~P0.7
P2.0~P2.7
VCC (+5V)
GND
RAM地址 锁存器
RAM
通道0驱动器
通道0锁 存器
通道2驱动器
通道2锁 存器
ROM/ EPROM
程序地址寄存器
PSEN ALE
EA RST
B寄存器 ACC TMP2
片内地址空间:RAM 128B(00H-7FH) SFR 128B(80H-FFH)
128B SFR
128B RAM
FFH 21个SFR分布 在80H-FFH
83个可寻址位
80H 7FH
用户、
堆栈区
30H 2FH
位寻址区
20H 1FH
工作寄存器区
00H
内部RAM组织结构
10
所有的RAM区(位 寻址区、工作寄 存器区)都可以 用于存放数据, 故也称为数据缓 存寄存器
特殊功能寄存器(SFR)
▼特殊功能寄存器SFR(专用寄存器)
专用于控制、选择、管理、存放单片机内部各功能 部件的工作方式、条件、状态、结果的寄存器。
▼不同的SFR管理不同的硬件模块,负责不同的功 17 能——各司其职
换言之:要让单片机实现预定的功能,必须有相应 的硬件和软件,而软件中最重要的一项工作就是对 SFR写命令(要求)。
4 堆栈指针SP
堆栈:
在片内RAM中,指定一个专门的区域来存放某 些特别的数据,它遵循先进后出和后进先出 (LIFO/FILO)的原则,这个RAM区叫堆栈。
功用:
22

单片机C语言 必知的数据存储与程序编写知识 附单片机应用编程知识介绍

单片机C语言 必知的数据存储与程序编写知识 附单片机应用编程知识介绍

一、五大内存分区内存分成5个区,它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。

1、栈区(StaCk):FIFo就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。

里面的变量通常是局部变量、函数参数等。

2、堆区(heap):就是那些由new分配的内存块,它们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。

如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。

3、自由存储区:就是那些由malloc等分配的内存块,它和堆是十分相似的,不过它是用free 来结束自己的生命。

4、全局/静态存储区:全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。

5、常量存储区:这是一块比较特殊的存储区,它们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改,而且方法很多)code/data/stack内存主要分为代码段,数据段和堆栈。

代码段放程序代码,属于只读内存。

数据段存放全局变量,静态变量,常量等,堆里存放自己malloc或new出来的变量,其他变量就存放在栈里,堆栈之间空间是有浮动的。

数据段的内存会到程序执行完才释放。

调用函数先找到函数的入口地址,然后计算给函数的形参和临时变量在栈里分配空间,拷贝实参的副本传给形参,然后进行压栈操作,函数执行完再进行弹栈操作。

字符常量一般放在数据段,而且相同的字符常量只会存一份。

二、C语言程序的存储区域1、由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。

编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。

2、C语言编写的程序经过编译-连接后,将形成一个统一文件,它由几个部分组成。

单片机存储器

单片机存储器

单片机存储器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个非常特殊的、固定的单元,这些单元所存放的内容是有特定要求的。

C51数据类型和存储空间

C51数据类型和存储空间

关于单片机存储器的问题,idata,data,badata,xdata,pdata,code,片内存储区,片外存储区关于51单片机内存问题,一直是个疑惑大家的问题,因为51单片机是个很另类的单片机。

下面我给楼主讲解一下:51单片机之所以另类,是因为,他寻址内存的空间,不是靠总线,是用指令的方式。

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快一倍,代码也小的很多。

1.1 单片机的内部资源.doc

1.1 单片机的内部资源.doc

这节课的标题是点亮LED,但是需要大家了解的单片机基础知识的内容也非常多,特别是对于初学者,刚开始要在头脑中建立一个单片机的概念,课程最后通过点亮一个LED小灯来增加初学者对实验的好奇心和自信心。

1.1 单片机的内部资源在这里我所讲到的单片机内部资源,和传统单片机书籍讲单片机内部结构不同,我这里讲到的内部资源,是指我们作为单片机用户,单片机提供给我们可使用的一些内容。

总结起来,主要是三大资源:1、FLASH(程序存储空间,早期单片机是OTPROM)2、RAM(数据存储空间)3、SFR(特殊功能寄存器)在早期的技术里边,主要是用OTPROM(One Time Programable Read-Only Memory,即一次可编程只读存储器)来存储单片机的程序,随着技术的发展,FLASH的以其可重复擦写且大容量低成本的优点成为绝大多数单片机的程序存储器。

对于单片机来说FLASH最大的意义是断电后数据不丢失,这个概念类似于我们电脑的硬盘,你看我们保存了电影、文档、音乐等文件,我们把电源关掉后,下次重新开电脑,所有的文件都还照样存在。

RAM是单片机的数据存储空间,用来存储程序运行过程中产生的和需要的数据,和我们电脑的内存是一个概念,其实最典型的比喻是我们的计算器,我们用计算器计算个加减法,一些中间的数据都会保存在RAM里边,关电后数据丢失,所以我们每次打开计算器,都是从归零开始计算。

但是他的优点第一是读写速度非常快,第二是理论上是可无限次写入的,即寿命无限,不管程序怎么运行怎么读写它都不会坏的。

第三个资源是SFR,特殊功能寄存器。

这个概念大家可能刚开始理解不了,但是一定要记住。

单片机有很多很多功能,每个功能都会配一个或多个SFR,我们就是通过对SFR的读写来实现单片机的多种多样的功能的。

讲到这里,我们来了解一下51单片机。

通常我们一说到51单片机,指的都是兼容Intel MCS-51体系架构的一系列单片机。

单片机存储器PPT课件

单片机存储器PPT课件

外部数据存储器访问时序
.
17
单片机扩展外部数据存储器连接实例
常用RAM芯片:Intel 6116(2KB×8)、6264(8KB ×8)、62256(32KB×8)。
8051扩展数据存储器6116
.
18
(2KB RAM)
3.3.3 单片机扩展存储器实用电路(数据存储器+程序存
储器)
单片机连接 8KB EPROM 2764 和 8KB RAM 6264 各一片
1
1
组3
.
18H~1FH
7
通用寄存器一般有两种使用方法: 一、用寄存器的符号来表示; 二、用单元地址来表示。
例:若MOV A, R0 与 MOV A, 00H指令是等同的 (问:此时隐含给出的RS1、RS0为?)
.
8
❖ 内部RAM——位寻址区
片内20H~2FH字节单元,即可 作为一般的RAM区使用进行字节操 作,也可以对单元中的每一位进行 位操作,共有16个字节寻址单元, 按位计算有128位,位地址为: 00H~7FH
例:清除位地址00H单元
CLR 00H ;对某位清0
MOV 20H, #00H ;
或 AND 20H, #00H
.
9
❖ 内部RAM——用户RAM区 单元地址为30H~7FH。共80个字节单元。
注意:对于用户RAM区,只能以存储单元(字节 地址)的形式来使用,一般用作堆栈区。
.
10
(2)内部数据存储器中高128字节
.
19
单片机外接EEPROM电路的存储器电路
EEPROM 既能作为程序存储器又能作数据存储器。 将程序存储器与数据存储器的空间合二为一。
片外存储器 读信号 = PSEN · RD
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机程序程序存储空间(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的地址空间内任意跳转,但不能使程序从程序存储器空间转移到数据存储器空间。

程序存储器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值超过0FFFH(4K)时,单片机就要自动的转向片外的ROM存储器且从1000H单元开始执行程序(无法使用片外ROM的低4K 空间)。

6.当程序超过4K时,有两种使用程序存储器ROM的方法:①设置EA=0,使用外部ROM。

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

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

程序存储器六个特殊的单元:在ROM中有六个单元具有特定功能。

0000H单元:复位时程序计数器PC所指向的单元,因此用来存放程序中的第一条指令;0003H单元:外部中断/INT0的矢量入口地址;000BH单元:定时器T0溢出中断的矢量入口地址;0013H单元:外部中断/INT1的矢量入口地址;001BH单元:定时器T1的溢出中断矢量入口地址;0023H单元:串行口接收、传送的中断矢量入口地址。

矢量入口单元:在编写中断程序时,写入对应的“跳板指令”单片机第一条指令的两个特征:①存放在ROM的0000H单元;②必须是“跳转指令”以跳过下面的5个中断矢量,转到后面的真正的主程序入口0100H单元。

ORG 0000H LJMP 0100HORG 0100HSTART: MOV A,#00H∶∶∶∶∶∶∶∶END外部程序存储器:当单片机使用外ROM存储器时(扩展系统),必须设定/EA=0,此时单片机的端口功能就要发生相应的改变:① P0、P2作为外部ROM的地址和数据总线;②使用引脚/psen信号来选通外部ROM的数据三态输出。

程序存储器RAM的片内和片外寻址无论在物理上还是逻辑上,系统中RAM 都可分为两个独立空间:内部和外部RAM。

由不同的指令来访问。

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

内部RAM从功能上将256B空间分为二个不同的块:1.低128B的RAM块;2.高128B的SFR(Special Function Register )块。

在低128B的RAM存储单元中又可划分为:1.工作寄存器区;2.位寻址区;3.通用存储数据的“便签区”。

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

注意:一般的教科书里RAM大小是指默认用户RAM,但是很少有特别说明的C51:片内用户RAM有128字节(位于片内所有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统一编制,共享地址,通过指令的寻址方式不同来进行区分。

对于数据存储器,分为内部数据存储器(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),地址也是从0x0000-0xFFFF的,而且这里的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信号控制。

尽管片外数据存储器和片外程序存储器共处同一地址空间,但由于控制信号及使用的数据传送指令不同,故不会发生总线冲突。

图2数据扩展图由于现在以8051为内核的单片机几乎都带有内部的FLASH程序存储器。

如本设计中要用到的开关电源模块AT89C51或AT89S51均自带4KB的FLASH程序存储器,有的单片机带有20KB甚至更大容量的程序存储器。

因此在单片机开发中,很少用专门的程序存储器芯片来扩展外部程序存储器,通常也没有必要。

寻址空间为什么会最大64KB 程序存储?单片机的P0.0 做为低位地址线,P2.0作为高位地址线的时候,就总共有16 根地址线,也就是可以寻址2的16次方地址,也就是65536 (64K)地址。

8位的单片机指的是数据总线的宽度,也就是说传输的数据最高是8位宽度,和地址总线没关系的。

8051的单片机P0 口作为地址和数据总线复用,P2 口只能作为地址扩展接口使用。

别把这地址宽度和数据宽度这两个概念搞混了。

相关文档
最新文档