C51数据的存储类型

C51数据的存储类型

C51的存储类型与8051存储空间的对应关系如表

存储器类型长度/位对应单片机存储器
bdata1片内RAM,位寻址区,共128位(也能字节访问)
data8片内RAM,直接寻址,共128B
idata8片内RAM,间接寻址,共256B
pdata8片外RAM,分页间址,共256B
xdata16片外RAM,间接寻址,共64K
code16ROM区域,间接寻址,共64K

对于8051系列单片机来说,访问片内的RAM比访问片外的RAM的速度要快很多,所以对于经常使用的变量,应该置于片内RAM,即用bdata、data、idata来定义;对于不常使用的变量或规模较大的变量,应该置于片外RAM中,即用pdata、xdata来定义

例如:

bit bdata my_fiag;
char data var0;
float idata x,y,z;
unsigned int padta temp;
unsigend char xdata array[3][4];

如果用户不对变量的存储类型进行定义,C51的编译器采用默认的存储类型。默认的存储类型由编译命令中的存储模式指令限制。C51支持的存储模式如下表

存储模式默认存储类型特点
smalldata直接访问片内RAM;堆栈在片内RAM中
compactpdata用R0和R1间址片外分页RAM;堆栈在片内RAM中
largexdata用DPTR间址片外RAM,代码长,效率低

例如:

char var;	/*在small模式中,var定位data存储区*/
			/*在compact模式中,var定位pdata存储区*/
			/*在large模式中,var定位xdata存储区*/

在Keil C51μ Vision 4平台下,设置模式存储的步骤如下:工程建立好后,使用菜单Project->Option for Target‘Target1’,出现对话框后点击Target标签,其中的Memory Model用于设置RAM的置用情况,有3个选项:small是所有的变量都在单片机的内部RAM中;Compact变量存储在外部RAM里,使用8位间接寻址;Large变量存储在外部RAM中,使用16位间接寻址,可以使用全部外部的扩展RAM

arge变量存储在外部RAM中,使用16位间接寻址,可以使用全部外部的扩展RAM

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值