在路上...

The development of life
我们一直都在努力,有您的支持,将走得更远...

站内搜索: Google

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
C51存贮器类型
 C51编译器完全支持8051微处理器及其系列的结构,可完全访问MCS-51硬件系统所有部分。每个变量可准确地赋予不同的存贮器类型(data,idata,pdata,xdata,code)。访问内部数据存贮器(idata)要比访问外部数据存贮器(xdata)相对要快一些,因此,可将经常使用的变量置于内部数据存贮器中,而将较大及很少使用的数据单元置于外部数据存贮器中。
 
 

存贮器类型


描 述


data


直接寻址内部数据存贮器,访问变量速度最快(128bytes)


bdata


可位寻址内部数据存贮器,允许位与字节混合访问(16 bytes)


iIdata


间接寻址内部数据存贮器,可访问全部地址空间(256bytes)


pPdata


分页(256bytes)外部数据存贮器,由操作码MOVX @Ri访问


xdata


外部数据存贮器(64K),由MOVX @DPTR访问


code


代码数据存贮器(64K),由MOVC @A+DPTR访问



变量说明举例:

data char charvar;

char code msg[]=ENTER PARAMETER:;

unsigned long xdata array[100];

float idata x,y,z;

unsigned char xdata vector[10][4][4];

sfr p0=0x80;

sbit RI="0x98";

char bdata flags;

sbit flago="flags"^0;

如果在变量说明时略去存贮器类型标志符,编译器会自动选择默认的存贮器类型。默认的存贮器类型进一步由控制指令SMALL、COMPACT和LARGE限制。例如:如果声明char charvar,则默认的存贮器模式为SMALL,charvar放在data存贮器;如果使用COMPACT模式,则charvar放入idata存贮区;在使用LARGE模式的情况下,charvar被放入外部存贮区或xdata存贮区。

存贮器模式

存贮器模式决定了自动变量和默认存贮器类型,参数传递区和无明确存贮区类型的说明。在固定的存贮器地址变量参数传递是C51的一个标准特征,在SMALL模式下参数传递是在内部数据存贮区中完成的。LARGRE和COMPACT模式允许参数在外部存贮器中传递。C51同时也支持混合模式,例如在LARGE模式下生成的程序可将一些函数分页放入SMALL模式中从而加快执行速度。



存贮器模式


描 述


SMALL


参数及局部变量放入可直接寻址的内部寄存器(最大128bytes,默认存贮器类型是DATA)


COMAPCT


参数及局部变量放入分页外内部存贮区(最大256bytes,默认存贮器类型是PDATA)


LARGE


参数及局部变量直接放入外部数据存贮器(最大64K,默认存贮器类型是XDATA)

posted on 2009-08-24 14:49  palam  阅读(911)  评论(0编辑  收藏  举报