变量 keil存储器类型

变量 keil存储器类型

ID:12320273

大小:39.00 KB

页数:5页

时间:2018-07-16

变量 keil存储器类型_第1页
变量 keil存储器类型_第2页
变量 keil存储器类型_第3页
变量 keil存储器类型_第4页
变量 keil存储器类型_第5页
资源描述:

《变量 keil存储器类型》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、变量keil存储器类型2009-07-2016:24 所提到变量就是一种在程序执行过程中其值能不断变化的量。要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。定义一个变量的格式如下:[存储种类] 数据类型 [存储器类型] 变量名表  在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。存储种类有四种:自动(auto),外部(extern),静态(static)和寄存器(register),缺省类型为自动(auto)。这些存储种类的具体含义和使

2、用方法,将在第七课《变量的存储》中进一步进行学习。  而这里的数据类型则是和我们在第四课中学习到的名种数据类型的定义是一样的。说明了一个变量的数据类型后,还可选择说明该变量的存储器类型。存储器类型的说明就是指定该变量在单片机c语言硬件系统中所使用的存储区域,并在编译时准确的定位。表6-1中是KEILuVision2所能认别的存储器类型。注意的是在AT89c51芯片中RAM只有低128位,位于80H到FFH的高128位则在52芯片中才有用,并和特殊寄存器地址重叠。特殊寄存器(SFR)的地址表请看附录二 AT89c51特

3、殊功能寄存器列表表6-1 存储器类型存储器类型说 明data直接访问内部数据存储器(128字节),访问速度最快bdata可位寻址内部数据存储器(16字节),允许位与字节混合访问idata间接访问内部数据存储器(256字节),允许访问全部内部地址pdata分页访问外部数据存储器(256字节),用MOVX@Ri指令访问xdata外部数据存储器(64KB),用MOVX@DPTR指令访问code程序存储器(64KB),用MOVC@A+DPTR指令访问  如果省略存储器类型,系统则会按编译模式SMALL,COMPACT或LAR

4、GE所规定的默认存储器类型去指定变量的存储区域。无论什么存储模式都能声明变量在任何的8051存储区范围,然而把最常用的命令如循环计数器和队列索引放在内部数据区能显著的提高系统性能。还有要指出的就是变量的存储种类与存储器类型是完全无关的。.数据存储模式存储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域,共三种:1.1.Small模式所有缺省变量参数均装入内部RAM,优点是访问速度快,缺点是空间有限,只适用于小程序。2.2.Compact模式所有缺省变量均位于外部RAM区的一页(256Bytes),具体哪

5、一页可由P2口指定,在STARTUP.A51文件中说明,也可用pdata指定,优点是空间较Small为宽裕速度较Small慢,较large要快,是一种中间状态。3.3.large模式所有缺省变量可放在多达64KB的外部RAM区,优点是空间大,可存变量多,缺点是速度较慢。提示:存储模式在单片机c语言编译器选项中选择。之前提到简单提到sfr,sfr16,sbit定义变量的方法,下面我们再来仔细看看。  sfr和sfr16能直接对51单片机的特殊寄存器进行定义,定义方法如下:    sfr特殊功能寄存器名=特殊功能寄存器地

6、址常数;    sfr16特殊功能寄存器名=特殊功能寄存器地址常数;  我们能这样定义AT89c51的P1口    sfrP1=0x90;//定义P1I/O口,其地址90H  sfr关键定后面是一个要定义的名字,可任意选取,但要符合标识符的命名规则,名字最好有一定的含义如P1口能用P1为名,这样程序会变的好读好多。等号后面必须是常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80H-FFH),具体可查看附录中的相关表。sfr是定义8位的特殊功能寄存器而sfr16则是用来定义16位特殊功能

7、寄存器,如8052的T2定时器,能定义为:    sfr16T2=0xCC;//这里定义8052定时器2,地址为T2L=CCH,T2H=CDH用sfr16定义16位特殊功能寄存器时,等号后面是它的低位地址,高位地址一定要位于物理低位地址之上。注意的是不能用于定时器0和1的定义。  sbit可定义可位寻址对象。如访问特殊功能寄存器中的某位。其实这样应用是经常要用的如要访问P1口中的第2个引脚P1.1。我们能照以下的方法去定义:(1)sbit位变量名=位地址 sbitP1_1=Ox91;这样是把位的绝对地址赋给位变量。同

8、sfr一样sbit的位地址必须位于80H-FFH之间。(2)Sbit位变量名=特殊功能寄存器名^位位置sftP1=0x90;  sbitP1_1=P1^1;//先定义一个特殊功能寄存器名再指定位变量名所在的位置当可寻址位位于特殊功能寄存器中时可采用这种方法(3)sbit位变量名=字节地址^位位置  sbitP1_1=0x90^1;  这种方法其

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。