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

上传人:豆浆 文档编号:873590 上传时间:2017-05-20 格式:DOC 页数:4 大小:33KB
返回 下载 相关 举报
C51的存储种类和存储器类型_第1页
第1页 / 共4页
C51的存储种类和存储器类型_第2页
第2页 / 共4页
C51的存储种类和存储器类型_第3页
第3页 / 共4页
C51的存储种类和存储器类型_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《C51的存储种类和存储器类型》由会员分享,可在线阅读,更多相关《C51的存储种类和存储器类型(4页珍藏版)》请在金锄头文库上搜索。

1、C51 的存储种类和存储器类型1.自动变量(auto)char chr=a;等价于 auto char chr=a;注意自动变量的作用域在 main 函数和符合语句中分别定义了一个同名的字符型自动变量并输出,结果证明符合语句中自动变量的作用域仅限于符合语句中。#include stdio.hvoid main()char chr=a;char chr=b;printf(%cn,chr);printf(%cn,chr);程序运行结果为ba2.外部变量(extern)C51 语言允许将大型程序分解为若干个独立放入程序模块文件,各个模块可以分别进行编译然后再连接在一起,在这种情况下,如果某个变量要在

2、其他程序模块文件中使用,只要在一个程序文件中将该变量定义为全局变量,而在其他程序模块文件中使用“extern”说明该变量时已经被定义过的变量就可以了。在整个程序中都具有相同名字的外部变量只能在一处进行定义和初始化。#include stdio.hchar chr_1=a;void main()extern char chr_2;printf(%cn,chr_1);printf(%cn,chr_2);char chr_2=b;程序运行结果abchr-1 是一个全局变量,不需要使用 extern 进行声明,而 chr-2 在定义前被使用,因此使用前必须使用 extern 进行声明。3.静态变量(s

3、tatic)分为内部静态变量(又称局部静态变量)和外部静态变量(又称全局静态变量)内部静态变量是在函数内部定义的,与自动变量相比,其作用域同样限于定义内部静态变量的函数内部,但内部静态变量始终是存在的,其初值只是在进入时赋值一次,退出函数后变量的值仍然保存但不能访问。内部静态变量放入用法以及与自动变量的区别#include stdio.hvoid 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_in

4、t+1;a_int=a_int+1;程序运行结果s_int=1 a_int=1s_int=2 a_int=1s_int=3 a_int=1在复合语句中分别定义一个内部静态变量和自动变量,进入复合语句中 3 次,结果显示由于退出复合语句时内部静态变量仍然存在并保存其值,自动变量则不复存在,因此内部静态变量能够累加,而自动变量则不能。4.寄存器变量在变量名前加上存储器种类符号“register” 。不推荐存储器类型存储器类型 与物理存储空间的对应关系DATA 直接寻址片内数据存储器的低 128 字节,访问速度快BDATA DATA 区中可位寻址区域 20H2FH(16 字节) ,允许位与字节混合访

5、问IDATA 间接寻址片内数据存储区(256 字节) ,可访问片内全部 RAM 空间PDATA 外部数据存储区的开头 256 字节,通过 P0 端口的地址对其访问XDATA 片外数据存储区(64KB) ,通过 DPTR 访问CODE 程序存储区(64KB) ,通过 DPTR 访问1.DATA 区是存放临时性传递变量或使用频率较高的变量的理想场所2.SDATA 区其实就是 DATA 区中的位寻址区Unsigned int bdata status;/在 BDATA 区定义一个变量Sbit status_1=status1;不允许在 BDATA 区声明 float 和 double 型的变量3.I

6、DATA 区8051 系列的一些单片机如 8052 附有 128 字节的内部RAM(80HFFH),被称为 IDATA,因为 IDATA 区的地址和 SFR的地址重合,所以通过寻址方式来区分二者,IDATA 区只能通过间接寻址来访问。IDATA 区也可存放使用比较频繁的变量,使用寄存器作为指针进行寻址。4.PADTA 区和 XDATA 区5.CODE 区用来存放可执行代码,还有其他非易失性信息,如查询表。存储模式1.(SMALLA)小模式在该模式下所有变量都默认位于片内数据存储器,这和使用 data 指定存储器类型的作用一样。此模式对变量访问的效率很高,但所有的数据对象和堆栈的总大小不能超过内部 RAM 的大小。2.(COMPACT)紧凑模式所有变量都默认位于片外数据存储器的一页(256 字节) ,但堆栈位于片内数据存储器内,这和使用 PDATA 指定存储器类型的作用一样,该模式适用于变量不超过 256 字节的情况。地址的高字节往往通过端口 2 输出,其值必须在启动代码中设置。这种模式不如 SMALL 模式高效,对变量访问的速度要慢一些。3.(LARGE)模式所有变量都默认位于片外数据存储器内,这和使用 XDATA 指定存储器类型的作用一样,使用数据指针 DPTR 进行寻址,效率较低,会产生更多代码。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号