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) |
if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 45554; var cb_entryId = 1552895; var cb_blogApp = "papam"; var cb_blogUserGuid = "c3f8460b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = 2009/8/24 14:49:00;
C51存储类 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)