51单片机:存储器结构

6 篇文章 0 订阅

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溢出中断入口

注意:

但要注意的是8051内部数据存储器是256byte(字节)。访问低128B可以直接寻址也可以间接寻址,访问8052内部数据存储器高128B时只能间接寻址(MOV @R0、@R1、DPTR),访问特殊功能寄存器区SFR时只能直接寻址(MOV A,80H)。

外部RAM是通过单片机外部总线连接的,有可能在片内。如STC89C58RD+有1280B(字节) 位于片内的外部SRAM。再可以通过这个图了解51单片机的存储器结构

点击看大图

变量定义及其存储模式

C语言中变量要“先声明后使用”。

变量定义格式:

[存储种类]  数据类型  [存储器类型]  变量名表;

存储种类:自动(auto)、外部(extern)、静态(static)、寄存器(register)

存储器类型:

data   可直接寻址的片内数据存储器RAM(128字节)。1个或2个指令周期,访问速度较快。

bdata  可位寻址的片内数据存储器RAM(16字节)。

idata   间接访问的片内数据存储器RAM(256字节)。

pdata  分页寻址的片外存储器RAM(256字节)——不常用。

xdata  片外数据存储器RAM(64k字节)至少3个指令周期。

code   程序存储器ROM(64k字节)

点击看大图

注意:访问片内数据存储器(data,bdata,idata)比访问片外数据存储器(xdata,pdata)相对要快一些,因此可将经常使用的变量至于片内数据储存器,而将规模较大的,或不常使用的数据至于片外数据储存器中。

如果在变量定义时略去存储类型标识符,编译器会自动选择默认的存储类型。编译时使用的存储器模式small、compact或large来规定默认存储器类型。

SMALL:参数及局部变量放入片内数据存储器(data);

COMPACT:参数及局部变量放入分页片外数据存储器(pdata);

LARGE: 参数及局部变量放入片外数据存储器(xdata);

点击看大图

Keil中Option for Target ‘Target 1’选项

51单片机外部程序存储器(ROM)和外部数据存储器(RAM)的总线扩展电路图

点击看大图

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值