锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

单片机C51存储器类型及存储模式

时间:2022-10-10 00:00:00 存储器集成电路的工作参数

描述

单片机(Microcontrollers)它是一种具有数据处理能力的集成电路芯片,采用超大型集成电路技术CPU、随机存储器RAM、只读存储器ROM、多种I/O一个小而完统、定时器/计数器等功能集成在硅片上,形成一个小而完美的微型计算机系统。如今应用最广泛的是C51单片机,典型有80台C51和89c51单片机。今天主要以C以单片机存储类型和存储模式为中心的话题。

1、80C51存储器的结构

程序存储器的搜索范围为64KB(PC或DPTR)电影中数据存储器的搜索范围为256B,80H-FFH片外数据存储器片外数据存储器的搜索范围为64KB(DPTR、P2、@Ri)

图1 80C51程序存储系统结构

2a62d350a72354c409974fdecfb850f5.png

图2 80C51数据存储器系统结构

2.程序存储器及其操作

程序存储器用于存储应用程序和表格常数。在设计中,应用程序根据要求选择容量,最大容量为64KB。单片机复位时,PC指针从0000H地址开始执行,应用程序第一条指令的入口必须是0000H。程序存储器中有一些固定的中断入口地址,其他程序不得放置,而应放置中断服务程序,如表2所示.3所列。

表1 固定中断入口地址的程序存储器

程序存储器的操作包括:

(1)程序指令的独立操作:按PC指针顺序操作。

(2)表哥常数的查表操作:使用MOVC指令。

3.数据存储器及其操作

3.1块内数据存储器的结构

数据存储器的结构如图所示。

3.2片数据存储器的应用特性

(1)复用特性:除工作寄存器和位置搜索单元有固定空间外,其他未使用的可作为数据缓冲区。

(2)复位特性:复位时SP=07H、PSW=00H,故栈底在07H,工作寄存器为0组。

(2)活动推栈:程序运行中,SP可随意设置。

3.3片内数据存储器的操作

(1)直接寻址操作,如:

MOV 30H, #50H; 30H-#50H

(2)间接寻址操作,如:

MOV R0, #30H; 30H赋给R0

MOV A, @R0; A-((R0))

(3)位置地址空间操作,如:

SETB 00H; 20H的D0位置1

(4)工作寄存器的选择操作,如:

MOV PSW, #18H; RS1、RS0置成11

(5)堆栈操作,如:

MOV SP, #70H; 栈底设在70H

3.4个外数据存储器的操作

使用MOVX命令只能与A交换数据。

(1)读入数据

MOVX A, @TPDR

MOVX A, @Ri

(2)写入数据

MOVX @TPTR, A

MOVX @Ri, A

比如片外567FH累加器A中使用单元数写TPDR指针操作如下:

MOV DPTR, #567FH

MOVX A, @DPTR

用R0间接寻址操作为:

MOV R0, #7FH

MOV P2, #56H

MOVX A, @R0

4.C51存储类型《?XML:NAMESPACE PREFIX = O /》

对于片外扩展的接口,可根据硬件形成的地址使用#define定义:

#define unsigned char xdata adAddr_at_0x2000;/*将片外接口地址定义为2000H*/

C51编译器支持80C51及其衍生系列的系统结构,并提供80C访问所有存储区域。表1中列出的存储类型可以清楚地将每个变量分配到指定的存储空间。

表1 C51存储类型与80C存储空间的关系

对内部数据存储器的访问比对外部数据存储器的访问快许多,因此应当将频繁使用的变量放在内部数据存储器,而把较少使用的变量放在外部数据存储器中。

以下是各种存储器变量的声明。

(1)程序存储器变量:程序存储器的数据无法修改,跳转向量或表格通常存储在该区域,存储器类型符合code。

例如:unsigned char code text[] = “ENTER PARAMETER”;

(2)内部数据存储器据存储器变量:可以在机器周期中直接搜索,所以常用的变量放在data区域。存储类型标识data。

例如:unsigned char data flag; /*声明无符号字节变量直接在内部搜索*/

(3)内部数据存储器的间接搜索变量:以8位寄存器为指针搜索内部存储器。存储类型符合idata。

例如:unsigned char idata buffer[8]; /*声明无符号字节数组内部间接寻址*/

(4)位置搜索内部数据存储器变量:是内部数据存储器的位置搜索区域。位置变量对所需位置操作的数据非常有用,其存储类型符合要求bdata。

注:位置搜索变量应声明为全局变量,否则编译将出错。

例如:unsigned char bdata bStatue; /*定义电影中可位寻址的位变量RAM中*/

sbit statue_0 = bStatue^0; /*定义位变量bStatue第三符号地址*/

bit可用于访问的数据类型bdata存储类型标识声明的变量位。

外部数据存储器的声明存储器的声明与前面的例子相似。

如果存储类型符号遗漏在变量声明中,则默认存储类型将自动选择。默认存储类型应用于所有不能分配存储器的全局变量、静态变量、函数自变量和自动变量。默认存储类型取决于编译过程中的存储模式。这与普通C语言不同。

5.C51的存储器模式

存储模式确定了无明确存储类型的函数自变量、自动变量和默认存储类型。编译器可以控制指令Small,Compact和Large指定编译过程中的存储模式。在默认存储类型之前,用存储类型标记符明确声明变量。

(1)Small模式

所有变量默认位于80C使用51内部数据存储器data清楚地声明存储类型符号是相同的。该模式的变量访问非常有效,但所有数据对象和堆栈都必须适用于内部RAM。由于使用的堆栈空间取决于不同函数嵌套的深度,因此对堆栈的尺寸有严格的要求。

(2)Compact模式

所有变量默认位于外部数据存储器的一页(256B)内,这和使用pdata明确声明存储器类型符是相同的。地址高字节通常设置P编译器无法设置此端口,因此必须在启动代码中手动设置。该模型最多能容纳2566B变量,这个限制是变量R0、R1间接寻址。该模型效率低下Small变量访问速度不如模式效率Small但比模式快Large模式快。

(3)Large模式

所有变量默认位于外部数据存储器中,并使用xdata清楚地声明存储器类型的标识符是相同的。数据指针用于寻址(DPRT),变量访问效率低,特别是对于多字节变量,该模式的数据访问比Small模式和Compact模型生成的代码很多。

常用Small该模式可以生成最快、最紧凑、最有效的代码。变量的存储位置通常可以明确指定。仅当使用时Small模式不适合应用或操作Compact模式和Large模式。

打开APP阅读更多精彩内容

点击阅读全文

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章