C51的存储种类和存储器类型.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C51的存储种类和存储器类型,存储器种类,存储器的种类,存储器类型,s7200存储器类型符号,存储器,铁电存储器,网络存储器,存储器回收,网络硬盘存储器

C51的存储种类和存储器类型 自动变量(auto) char chr=‘a’;等价于 auto char chr=‘a’; 注意自动变量的作用域 在main函数和符合语句中分别定义了一个同名的字符型自动变量并输出,结果证明符合语句中自动变量的作用域仅限于符合语句中。 #include stdio.h void main() { char chr=a; { char chr=b; printf(%c\n,chr); } printf(%c\n,chr); } 程序运行结果为 b a 外部变量(extern) C51语言允许将大型程序分解为若干个独立放入程序模块文件,各个模块可以分别进行编译然后再连接在一起,在这种情况下,如果某个变量要在其他程序模块文件中使用,只要在一个程序文件中将该变量定义为全局变量,而在其他程序模块文件中使用“extern”说明该变量时已经被定义过的变量就可以了。 在整个程序中都具有相同名字的外部变量只能在一处进行定义和初始化。 #include stdio.h char chr_1=a; void main() { extern char chr_2; printf(%c\n,chr_1); printf(%c\n,chr_2); } char chr_2=b; 程序运行结果 a b chr-1是一个全局变量,不需要使用extern进行声明,而chr-2在定义前被使用,因此使用前必须使用extern进行声明。 静态变量(static) 分为内部静态变量(又称局部静态变量)和外部静态变量(又称全局静态变量) 内部静态变量是在函数内部定义的,与自动变量相比,其作用域同样限于定义内部静态变量的函数内部,但内部静态变量始终是存在的,其初值只是在进入时赋值一次,退出函数后变量的值仍然保存但不能访问。 内部静态变量放入用法以及与自动变量的区别 #include stdio.h void main() { char i; for(i=0;i3;i++) { static int s_int=1; int a_int=1; printf(s_int=%d ,s_int); printf(a_int=%d,a_int); printf(\n); s_int=s_int+1; a_int=a_int+1; } } 程序运行结果 s_int=1 a_int=1 s_int=2 a_int=1 s_int=3 a_int=1 在复合语句中分别定义一个内部静态变量和自动变量,进入复合语句中3次,结果显示由于退出复合语句时内部静态变量仍然存在并保存其值,自动变量则不复存在,因此内部静态变量能够累加,而自动变量则不能。 寄存器变量 在变量名前加上存储器种类符号“register”。不推荐 存储器类型 存储器类型 与物理存储空间的对应关系 DATA 直接寻址片内数据存储器的低128字节,访问速度快 BDATA DATA区中可位寻址区域20H~2FH(16字节),允许位与字节混合访问 IDATA 间接寻址片内数据存储区(256字节),可访问片内全部RAM空间 PDATA 外部数据存储区的开头256字节,通过P0端口的地址对其访问 XDATA 片外数据存储区(64KB),通过DPTR访问 CODE 程序存储区(64KB),通过DPTR访问 .DATA区是存放临时性传递变量或使用频率较高的变量的理想场所 SDATA区其实就是DATA区中的位寻址区 Unsigned int bdata status;//在BDATA区定义一个变量 Sbit status_1=status^1; 不允许在BDATA区声明float和double型的变量 IDATA区 8051系列的一些单片机如8052附有128字节的内部RAM(80H~FFH),被称为IDATA,因为IDATA区的地址和SFR的地址重合,所以通过寻址方式来区分二者,IDATA区只能通过间接寻址来访问。IDATA区也可存放使用比较频繁的变量,使用寄存器作为指针进行寻址。 PADTA区和XDATA区 CODE区用来存放可执行代码,还有其他非易失性信息,如查询表。 存储模式 (SMALLA)小模式 在该模式下所有变量都默认位于片内数据存储器,这和使用data指定存储器类型的作用一样。此模式对变量访问的效率很高,但所有的数据对象和堆栈的总大小不能超过内部RAM 的大小。 (COMPACT)紧凑模式 所有变量都默认位于片外数据存储器的一页(256字节),但堆栈位于片内数据存储器内,这和使用PDATA指定存储器类型的作用一样,该

文档评论(0)

xingkongwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档