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

合集下载

MCS-51单片机内部数据存储器RAM结构详解

MCS-51单片机内部数据存储器RAM结构详解

MCS-51 单片机内部数据存储器RAM 结构详解内部数据存储器低128 单元
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 提供了就近存储数据的便利,有利于提高单片机的运算速度。

此外,使用通用寄存器还能提高程序编制的灵活性,因此,在单片机
的应用编程中应充分利用这些寄存器,以简化程序设计,提高程序运行速。

51 单片机片内 256 字节数据存储器的结构划分以及对应的寻址方式

51 单片机片内 256 字节数据存储器的结构划分以及对应的寻址方式

51 单片机片内256 字节数据存储器的结构划分以及对应的寻址方式1. 引言1.1 概述在现代电子技术的快速发展下,单片机已经成为各种电子设备中必不可少的核心控制部件之一。

而51单片机作为最常用的单片机之一,其内部结构和功能一直备受关注。

本文将主要探讨51单片机中的一个重要组成部分——256字节数据存储器,介绍其结构划分以及对应的寻址方式。

1.2 文章结构本文总共包含五个部分。

首先是引言部分,介绍文章的概述、结构和目的。

第二部分将详细阐述51单片机中256字节数据存储器的结构划分,强调其在整个单片机系统中的重要性。

第三部分将着重介绍对应于256字节数据存储器的寻址方式,包括直接寻址方式、间接寻址方式和寄存器间接寻址方式等。

第四部分将通过具体实例来探讨256字节数据存储器在不同应用场景下的使用方法和优化方案。

最后一部分是结论和展望,在对前文进行总结基础上,提出未来研究方向和发展建议。

1.3 目的本文旨在深入探讨51单片机中256字节数据存储器的结构划分和对应的寻址方式,通过具体实例的分析,揭示其在不同应用场景下的优势和应用方法。

希望通过本文的研究和讨论,读者能够更好地理解和应用256字节数据存储器,为单片机系统设计提供有益的参考和指导。

2. 51单片机片内256字节数据存储器的结构划分2.1 片内数据存储器的重要性在嵌入式系统设计中,片内数据存储器是非常重要的组成部分。

它用于存储程序指令、变量数据以及其他运行时需要使用的临时数据。

片内数据存储器的规模和结构会直接影响到系统性能和资源利用率。

2.2 51单片机中的256字节数据存储器概述51单片机是一款广泛应用于各种电子设备中的经典单片机。

其中包含了一个256字节大小的片内数据存储器,用于存储程序指令和变量数据。

这256字节数据存储器可以被划分为不同的区域,每个区域有不同的功能和使用方式。

下面将介绍这些区域以及其对应功能。

2.3 256字节数据存储器的物理结构划分在51单片机中,256字节数据存储器可以被划分为以下几个区域:1) SFR(特殊功能寄存器)区域:这个区域占据了部分地址空间,用于保存各种特殊功能寄存器的值。

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

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

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之间的一个代码地址。

例如:ORG5000HTAB:DB22H,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是0to255范围内的一个idata存储器地址。

idata与data 重合低128字节,有的地方只有DATA表示256字节的片内RAM,某data 是0to65535范围内的一个某data存储器地址。

51单片机基本结构详解

51单片机基本结构详解

51单片机基本结构详解51单片机(也称为8051单片机)是一种8位微控制器,由Intel公司于1980年代推出。

它是目前市场上最广泛使用的低成本单片机之一,被广泛应用于各个领域,包括家电、工业控制、仪器仪表等。

本文将详细介绍51单片机的基本结构。

一、51单片机的总体结构51单片机的总体结构主要分为五个部分,包括中央处理器(CPU)、存储器、IO口、定时器/计数器以及串行通信接口。

1. 中央处理器(CPU)51单片机中心的核心是一个8位的CPU,负责执行指令集中的操作。

它包括一个累加器(Accumulator)用于存放运算结果,以及一组寄存器用于存放操作数和地址。

2. 存储器51单片机的存储器主要包括内部RAM和内部ROM。

内部RAM用于存放程序和数据,容量通常较小,而内部ROM则用于存储不变的程序指令。

3. IO口51单片机提供了多个通用IO口,用于与外部设备进行数据交互。

这些IO口既可以作为输入口用于接收外部信号,也可以作为输出口用于发送信号控制外部设备。

4. 定时器/计数器51单片机内置的定时器/计数器模块可用于产生精确的时间延时和计数应用。

它能够协助实现各种时间相关的功能,如PWM输出、测速和脉冲计数等。

5. 串行通信接口51单片机的串行通信接口可用于与其他设备进行数据的串行传输。

常见的串行通信协议包括UART、SPI和I2C等。

二、51单片机的工作原理51单片机的工作原理可以概括为以下几个步骤:1. 程序存储器中的指令被复制到内部RAM中。

2. CPU从内部RAM中取出指令并执行。

3. 根据指令的要求,CPU可能会与IO口、定时器/计数器或串行通信接口进行数据交互。

4. 执行完指令后,CPU将结果存回内部RAM或IO口。

三、51单片机的应用领域51单片机由于其成本低、技术成熟、易于开发和应用广泛等优点,被广泛应用于各个领域。

1. 家电控制51单片机可以用于家电控制,如空调、洗衣机、电视机等。

MCS-51单片机的存储器组织结构

MCS-51单片机的存储器组织结构

MCS-51 单片机的存储器组织结构
特点:哈佛结构,程序存储器与数据存储器分开,两者各有一个相互独
立的64K(0x0000 ~ 0xFFFF)的寻址空间(准确地说,内部数据存储器与外部数据存储器不是一回事)。

程序存储器:
①用于存放程序(可执行的二进制代码映像文件,包括程序中的数据信息),还包括初始化代码等固件。

②为只读存储器。

注意,这里的只读,是指单片机(CPU)在正常工作时对其的访问方式是只读的;而现在大多数单片机的程序存储器(不管是内部还
是外部)都采用了FLASH ROM,来取代以前所用的ROM、E2PROM 等,可方便地进行在线编程(ISP)。

③标准8051 的内部程序存储器大小为4KB(0x0000 ~ 0x0FFF);而具体的
51 核的兼容单片机的内部ROM 大小需要参考其Datasheet,例如
P89C51RA2xx 的内部程序存储器是8K 的Flash。

④内部、外部存储器统一编址,在软件设计上(指令系统中)没有差别;是否使用外部程序存储器是通过引脚EA 在硬件电路上控制的:不使用外部程
序存储器时,EA=0(接地);如果扩展了外部程序存储器,则使EA=1,当寻址
到内部存储空间以外时,会自动转向外部程序存储器空间(与扩展外部程序存。

51单片机存储器结构介绍

51单片机存储器结构介绍

51单片机存储器结构介绍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从外部程序存储器读取程序。

51单片机存储器内部结构

51单片机存储器内部结构

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从外部程序存储器读取程序。

51单片机基本结构详解

51单片机基本结构详解

51单片机基本结构详解1.什么是单片机单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU 、随机存储器RAM 、只读存储器ROM 、多种I/O 口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调试电路电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。

图1-1 单片机外形图2.单片机的引脚排列常用的单片机有40个引脚,其排列和功能如图2-1所示。

外ROM读选通信号外接晶体引线端地址锁存控制引脚内外ROM选择引脚21222324252627282930313233343536373839402019181716151413121110987654321VSS XTAL1XTAL2T1/P3.5TO/P3.4TXD/P3.1RXD/P3.0RST/VPD P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0INT0/P3.2INT1/P3.3P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0VCC EA/VPP ALE/PROG PSEN RD/P3.7WR/P3.6电源引脚接地引脚复位信号P1口P0口P3口P2口图2-1单片机的引脚排列和功能3.单片机最小系统单片机最小系统是单片机正常工作的最小硬件要求,包括供电电路、时钟电路、复位电路,如图3-1所示。

图3-1 单片机的最小应用系统判断单片机芯片及时钟系统是否正常工作有一个简单的办法,就是用万用表测量单片机晶振引脚(18、19脚)的对地电压,以正常工作的单片机用数字万用表测量为例:18脚对地约2.24V ,19脚对地约2.09V 。

对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为零,可以用导线短时间和+5V 连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路有问题。

51单片机存储器结构介绍

51单片机存储器结构介绍

MCS-51单片机存储器结构从用户的角度上,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(低128单元用户RAM 和高128单元SFR区)作用:作数据缓冲器用。

一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。

那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。

程序相当于给微处理器处理问题的一系列命令。

其实程序和数据一样,都是由机器码组成的代码串。

只是程序代码则存放于程序存储器中。

MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。

(对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的EA端必须接地。

强制CPU从外部程序存储器读取程序。

)对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC 值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。

MCS-51单片机的内部存储器

MCS-51单片机的内部存储器
② AC(PSW.6)——辅助进位标志位。在加减运算中,当有低4 位 向 高 4 位 进 位 或 借 位 时 , AC 由 硬 件 置 位 , 否 则 AC 位 被 清 “0”。在进行十进制数运算时需要十进制调整,此时要用 到AC位状态进行判断。
③ F0(PSW.5)——用户标志位。这是一个由用户自定义的标 志位,用户根据需要用软件方法置位或复位。例如用它来控 制程序的转向。
4. 堆栈类型
向上生长型和向下生长型。MCS-51的堆栈是向上生长的。
5. 堆栈使用方法
① 调用子程序或中断时,返回地址(断点)自动进栈。程序返回时, 断点再自动弹回PC。
② 使用专用的堆栈操作指令,进行进出栈操作。保护现场(PUSH); 恢复现场(POP)。
1.4 内部程序存储器
MCS-51单片机的程序计数器PC为16位,因此可以寻址的 地址空间为64KB。8051和8751单片机内部有4KB字节 ROM/EPROM程序存储器(0000H~0FFFH),1000H~FFFFH是外 部扩展程序存储器地址空间。而8052单片机内部有8KB ROM程 序存储器,同样可以扩展到64KB。在64KB程序存储器中,有6 个地址单元具有特殊功能。
3. 堆栈指示器
堆栈共有两种操作:进栈和出栈。
但不论是数据进栈还是出栈,都是对堆栈的栈顶单元进行的, 即对堆栈栈顶单元的写和读操作。为了指示栈顶地址,所以 要设置堆栈指示器SP。SP的内容就是堆栈栈顶的存储单元地 址。
MCS-51单片机由于堆栈设在内部RAM上,因此SP是一个8位 寄存器。实际上SP就是专用寄存器的一员。系统复位后,SP 的内容为07H,但由于堆栈最好在内部RAM的30H~7FH单元中 开辟,所以在程序设计时,应注意把SP值初始化为30H。SP的 内容一旦确定,栈顶的位置就确定了。

51单片机存储器结构介绍

51单片机存储器结构介绍

51单片机存储器结构介绍单片机是一种微型电脑芯片,他能够实现数字信号的处理和控制。

而存储器是单片机的核心组成部分之一,用于存储程序指令和数据。

本文将介绍51单片机的存储器结构。

一、内部存储器1. 代码存储器(ROM)代码存储器是用来存放程序指令的地方,它通常具有只读的特点,因此称之为只读存储器(Read-Only Memory)。

在51单片机中,常见的ROM有EPROM、EEPROM和Flash。

其中,EPROM需要使用紫外线擦除后才能进行写入操作,而EEPROM和Flash则支持电子擦除和写入操作。

2. 数据存储器(RAM)数据存储器用于存储程序中的数据,可以进行读取和写入操作。

51单片机中的RAM分为内部RAM和外部RAM两种类型。

内部RAM 是静态随机存储器(SRAM),容量通常较小,但读取速度快。

而外部RAM则可以通过外部接口来扩展存储容量。

二、外部存储器除了内部存储器之外,51单片机还支持外部存储器的连接,以扩展存储容量。

1. 并行存储器并行存储器是指通过并行接口与单片机进行数据交换的存储器,常见的有静态随机存储器(SRAM)、动态随机存储器(DRAM)和闪存等。

并行存储器的访问速度较快,但通信线路和引脚较多,连接复杂。

2. 串行存储器串行存储器是通过串行接口与单片机进行数据交换的存储器,常见的有串行EEPROM和串行闪存等。

串行存储器相对于并行存储器来说,引脚和通信线路较少,连接较为简单,但访问速度相对较慢。

三、存储器扩展技术1. 存储器芯片选择在实际应用中,我们需要根据需求选择合适的存储器芯片。

不同的存储器芯片具有不同的特性,比如容量大小、访问速度、耗能情况等,需要根据具体需求进行选择。

2. 存储器接口设计单片机与存储器之间的通信需要通过特定的接口进行连接。

在设计存储器接口时,需要考虑接口的引脚数目、速度要求、稳定性等因素,并且保证接口与存储器芯片的电气特性匹配。

3. 存储器管理技术存储器管理是针对大容量存储器的一种管理方法,用于提高存储效率和数据存取速度。

51单片机的程序存储器和数据存储器

51单片机的程序存储器和数据存储器

51单片机的程序存储器和数据存储器51单片机是一种常见的嵌入式微控制器,具备程序存储器和数据存储器,广泛应用于各个领域。

程序存储器用于存储和执行程序,而数据存储器用于储存运行过程中的变量和数据。

本文将详细介绍51单片机的程序存储器和数据存储器的特点和使用方法。

一、程序存储器程序存储器是51单片机中用于存储程序代码的地方。

它通常在芯片内部,有多种形式,常见的有ROM(只读存储器)和Flash(闪存)两种。

1. ROM存储器ROM存储器可以被写入一次,之后不能再改变。

它通常用于存储经常使用的不变的代码,例如启动程序、中断向量表等。

ROM存储器具有较高的稳定性和可靠性,在操作过程中不易出错。

但是,由于其只能被写入一次,因此对于频繁需要修改的程序代码来说,使用ROM存储器并不方便。

2. Flash存储器Flash存储器是一种可擦写的存储器,它可以多次写入和擦除。

这使得在51单片机的开发过程中,可以方便地修改和更新程序代码。

Flash存储器的优点是灵活性高,容易更新,但相对而言,稳定性较差,可能会出现擦除错误或写入错误的情况。

在使用Flash存储器时,需要注意以下几点:(1)在写入过程中,应该保证电源的稳定性,避免写入过程中电压异常导致写入错误。

(2)应该合理规划Flash存储器的中存储空间的物理布局,以方便程序的定位和管理。

(3)由于Flash存储器的写入次数是有限的,因此要尽量减少对其频繁的擦写。

二、数据存储器数据存储器是51单片机中用于存储程序运行中的变量和数据的地方。

它可以读取和写入,是程序运行和数据处理的重要组成部分。

数据存储器通常分为RAM(随机访问存储器)和SFR(特殊功能寄存器)两种。

1. RAM存储器RAM存储器是一种易读写的存储器,其存储空间较大,可以存储较多的变量和数据。

RAM存储器的读写速度较快,对于频繁读写的数据可以更快地进行处理。

但是,RAM存储器对电源的稳定性要求较高,断电会导致存储的数据丢失。

MCS-51单片机存储器结构

MCS-51单片机存储器结构

MCS-51单片机存储器结构MCS-51的存储器可分为四类:【1】外部程序存储器ROM 【2】外部数据存储器RAM【3】内部程序存储器ROM一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。

那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(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 串行中断地址区。

51单片机的程序存储器和数据存储器

51单片机的程序存储器和数据存储器

一、51单片机的程序存储器结构1.内部结构单片机内部的程序存储器用于存储单片机工作时候的程序,单片机内部专门设置一个16位的程序计数器(PC),用于知识下一时刻单片机要执行的程序在ROM 空间中的地址位置,即可以存储64Kb空间大小。

程序存储器物理上可以分为片内程序存储器和片外存储器,不同单片机型号有不同的片内程序存储器空间大小。

例如8051单片机片内有4Kb的ROM,那当控制线取0时,PC访问的前4kb空间是片内的ROM;当控制线为0时候,PC访问的是片外的ROM。

2.程序存储器的7个特殊地址51单片机复位后,PC的内容是0000H,即为系统程序的启动地址。

51单片机内部有6个中断源,6个中断源介绍及地址如下所示:中断源之间只间隔8个存储单元,这是不足以存放中断程序的,所以这是中断入口地址,后续有中断服务函数。

二、51单片机的数据存储器数据存储器(RAM)存储单片机运行期间所需要的数据和临时生成的数据。

从物理上分为片内RAM和片外RAM(片外RAM是通过16位的地址总线访问,所以片外RAM也是64kb)。

1.片内数据存储器厂家根据不同的任务要求和需求定义不同的任务块,如下所示:工作寄存器组:一共有32个字节,也被称为通用寄存器,用于临时寄存8个信息,工作寄存器组分为4个组别,每组有R0-R7一共8个数据信息。

位寻址区:一共有16个字节,128位,该区域每一位可按照位于方式使用,这128位会重新分配工作地址。

一般RAM区域:用户编程可以使用的RAM,当然,前两个单元未使用的空间,用户也可以使用。

堆栈区和堆栈指针:先进后出、后入先出的原则进行管理的一段存储区域函数的调用就是一个堆栈操作,如下图所示:为实现堆栈“先入后出,后入先出”数据处理,51单片机内部设置了一个堆栈指针SP。

特殊功能寄存器:专用于控制、管理片内算术逻辑部件等功能模块工作,用户编程时可以直接给特殊功能寄存器设定值。

51单片机内部有包括PC在内19个特殊功能寄存器,如下所示:CPU专用寄存器:累加器A(E0H),寄存器B(F0H),程序状态寄存器PSW(D0H),堆栈寄存器SP(81H),数据指针DPTR(82H、83H)2.片外数据存储器51单片机内部RAM空间不够时候,就通过总线来扩展片外ram,最多可以扩展64KB.。

51单片机程序存储器和数据存储器

51单片机程序存储器和数据存储器

51 单片机程序存储器和数据存储器
为了保证程序能够连续地执行下去,CPU 必须具有某些手段来确定一条指令的地址。

程序计数器PC 正是起到了这种作用,所以通常又称其为指令地址计数器。

在程序开始执行前,必须将其起始地址。

即程序的第一条指令所在的内存单元地址送入PC。

当执行指令时,CPU 将自动修改PC 的内容,使之总是保存将要执行的下一个条指令的地址。

由于大多数都是按顺序执行的,所以修改的过程只是简单的加1 操作。

下面我们看看8051 的存储器系统:(此章非常重要,请仔细理解)
8051 序列单片机与一般微机的存储器配置方式不相同。

一般微机通常只有一个地址空间,ROM 和RAM 可以随意安排在这一地址范围内不同的空间,即ROM 和RAM 的地址同在一个队列里分配不同的地址空间。

CPU 访问存储器时,一个地址对应唯一的存储单元,可以是ROM 也可以是RAM,并用同类访问指令。

此种存储器结构称普林斯顿结构。

8051 的存储器在物理结构上分程序存储器空间和数据存储器空间。

有四个存储空间:片内程序存储器和片外程序存储空间以及片内数据存储器和片外数据存储器。

这种程序存储器和数据存储器分开的结构形式,称为哈佛结构。

但从用户使用的角度,8051 存储器地址空间分为三类:
1、片内,片外统一编址0000HFFFFH 的64K 字节的程序存储器地址空间,用16 位地址;。

51单片机的结构

51单片机的结构

51单片机的结构51单片机是指一种集成了中央处理器、存储器和各种输入输出接口的单片集成电路。

它由Intel公司于1980年推出,采用了Harvard架构,是一种典型的8位单片机,无论在学校教学还是工业控制领域都得到了广泛的应用。

一、内部结构51单片机的内部结构主要由中央处理器、存储器和输入输出接口组成。

1. 中央处理器51单片机的中央处理器包含一个8位的累加寄存器A、一个8位的B寄存器、一个16位的程序计数器PC以及各种控制寄存器。

其中累加寄存器A是数据处理的核心,用于存储运算的结果。

B寄存器可用作直接寻址时的源操作数或目的操作数。

2. 存储器51单片机的存储器主要分为程序存储器和数据存储器。

程序存储器用于存储程序的指令,通常采用只读存储器(ROM)的形式。

数据存储器用于存储程序中的数据,包括RAM和各种寄存器。

3. 输入输出接口51单片机的输入输出接口包括通用输入输出口(GPIO)、串行通信口(UART)、定时器/计数器等。

GPIO用于与外部器件进行数据交互,可用于输入和输出。

UART用于与其他设备进行串行通信,常用于与计算机进行通信。

定时器/计数器可用于计时和定时中断控制。

二、工作原理51单片机的工作原理可以简单概括为:接收指令、执行指令、更新PC。

1. 接收指令51单片机从程序存储器中读取指令,并将指令暂存在指令寄存器中。

指令寄存器会将指令的地址信息传递给地址寄存器,以便读取下一条指令。

2. 执行指令51单片机根据指令的类型和操作码,执行相应的操作。

这可能涉及到对寄存器或存储器的读取、写入、算术运算、逻辑运算等。

执行的结果通常会存储在累加寄存器A中。

3. 更新PC在执行完一条指令后,51单片机会自动更新程序计数器PC的值,使其指向下一条要执行的指令地址。

这样就能够实现程序的顺序执行。

三、应用领域51单片机广泛应用于各个领域,包括嵌入式系统、家电控制、汽车电子、工业自动化等。

1. 嵌入式系统51单片机作为一种低成本、低功耗、易于开发和集成的微处理器,被广泛应用于嵌入式系统中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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区分配一个字节的变量。

同样对于指针变量的声明,因涉及到指针变量本身的存储位置和指针所指向的存储区
位置不同而进行相应的存储区类型关键字的
使用如:
uchar xdata * data pstr
是指在内ram区分配一个指针变量("*"号后的data关键字的作用),而且这个指针本身指向xdata区("*"前xdata关键字的作用),
可能初学C51时有点不好懂也不好记。

没关系,我们马上就可以看到对应“*”前后不同的关键字的使用在编译时出现什么情况。

......
uchar xdata tmp[10]; //在外ram区开辟10个字节的内存空间,地址是外ram的0x0000-0x0009
......
第1种情况:
uchar data * data pstr;
pstr=tmp;
首先要提醒大家这样的代码是有bug的, 他不能通过这种方式正确的访问到tmp空间。

为什么?我们把编译后看到下面的汇编
代码:
MOV 0x08,#tmp(0x00) ;0x08是指针pstr的存储地址
看到了吗!本来访问外ram需要2 byte来寻址64k空间,但因为使用data关键字(在"*"号前的那个),所以按KeilC编译环境来说
就把他编译成指向内ram的指针变量了,这也是初学C51的朋友们不理解各个存储类型的关键字定义而造成的bug。

特别是当工程中的
默认的存储区类为large时,又把tmp[10] 声明为uchar tmp[10] 时,这样的bug是很隐秘的不容易被发现。

第2种情况:
uchar xdata * data pstr;
pstr = tmp;
这种情况是没问题的,这样的使用方法是指在内ram分配一个指针变量("*"号后的data 关键字的作用),而且这个指针本身指向
xdata区("*"前xdata关键字的作用)。

编译后的汇编代码如下。

MOV 0x08,#tmp(0x00) ;0x08和0x09是在内ram区分配的pstr指针变量地址空间
MOV 0x09,#tmp(0x00)
这种情况应该是在这里所有介绍各种情况中效率最高的访问外ram的方法了,请大家记住他。

第3种情况:
uchar xdata * xdata pstr;
pstr=tmp;
这中情况也是对的,但效率不如第2种情况。

编译后的汇编代码如下。

MOV DPTR, #0x000A ;0x000A,0x000B是在外ram区分配的pstr指针变量地址空间
MOV A, #tmp(0x00)
MOV @DPTR, A
INC DPTR
MOV A, #tmp(0x00)
MOVX @DPTR, A
这种方式一般用在内ram资源相对紧张而且对效率要求不高的项目中。

第4种情况:
uchar data * xdata pstr;
pstr=tmp;
如果详细看了第1种情况的读者发现这种写法和第1种很相似,是的,同第1 种情况一样这样也是有bug的,但是这次是把pstr分
配到了外ram区了。

编译后的汇编代码如下。

MOV DPTR, #0x000A ;0x000A是在外ram区分配的pstr指针变量的地址空间
MOV A, #tmp(0x00)
MOVX @DPTR, A
第5种情况:
uchar * data pstr;
pstr=tmp;
大家注意到"*"前的关键字声明没有了,是的这样会发生什么事呢?下面这么写呢!对了用齐豫的一首老歌名来说就是“请跟我
来”,请跟我来看看编译后的汇编代码,有人问这不是在讲C51吗?为什么还要给我们看
汇编代码。

C51要想用好就要尽可能提升C51
编译后的效率,看看编译后的汇编会帮助大家尽快成为生产高效C51代码的高手的。

还是看代码吧!
MOV 0x08, #0X01 ;0x08-0x0A是在内ram区分配的pstr指针变量的地址空间
MOV 0x09, #tmp(0x00)
MOV 0x0A, #tmp(0x00)
注意:这是新介绍给大家的,大家会疑问为什么在前面的几种情况的pstr指针变量都用2 byte空间而到这里就用3 byte空间了
呢?这是KeilC的一个系统内部处理,在KeilC中一个指针变量最多占用3 byte空间,对于没有声明指针指向存储空间类型的指针,
系统编译代码时都强制加载一个字节的指针类型分辩值。

具体的对应关系可以参考KeilC的help中C51 User's Guide。

第6种情况:
uchar * pstr;
pstr=tmp;
这是最直接最简单的指针变量声明,但他的效率也最低。

还是那句话,大家一起说好吗!编译后的汇编代码如下。

MOV DPTR, #0x000A ;0x000A-0x000C是在外ram区分配的pstr指针变量地址空间
MOV A, #0x01
MOV @DPTR, A
INC DPTR
MOV DPTR, #0x000A
MOV A, #tmp(0x00)
MOV @DPTR, A
INC DPTR
MOV A, #tmp(0x00)
MOVX @DPTR, A
这种情况很类似第5种和第3种情况的组合,既把pstr分配在外ram空间了又增加了指针类型的分辨值。

相关文档
最新文档