-
单片机教程
,51
单片机
C
语言学习
第六课
变量
上课所提到变量就是一种在程序执
行过程中其值能不断变化的量。
要在程序
中使用变量必须先用标
识符作为变量名,
并指出所用的数据类型和存储模式,
这
样编译系统才能为变量分配相应的存储空间。定义一个变量的格式如下:
[
存储种类
]
数据类型
[
存储器类型
]
变量名表
在定义格式中除了数据类型和变量名表是必要的,
其它都是可选
项。
存储种
类有四种:自动(
auto
)
,
外部(
e
xtern
)
,
静态(
static
)和寄存器(
register
)
,缺
省类型为自动
(
auto)
。这些存储种类的具体含义和用法,将在第七课《变量的存
< br>储》中进一步进行学习。
而这里的数据类型则是和我们在第四课中学习到的名种数据类型的定义是
一样的。
说明了一个变量的数据类型后,
还可选择说明
该变量的存储器类型。
存
储器类型的说明就是指定该变量在
p>
C51
硬件系统中所使用的存储区域,
并在
编译
时准确的定位。表
6
-
1
中是
KEIL
uVi
sion2
所能认别的存储器类型。注意的是在
AT89C51
芯片中
RAM
只有低
< br>128
位,
位于
80H
到
FFH
的高
128<
/p>
位则在
52
芯片中
才有用,并和特殊寄存器地址重叠。特殊寄存器(
SFR
)的
地址表请看附录二
AT89C51
特殊功能寄存器列表
存储器类型
说
明
data
直接访问内部数据存储器
(
128
字节
),
访问速度最快
bdata
可位
寻址内部数据存储器
(
16
字节)
p>
,
允许位与字节混合
访问
< br>
idata
间接访问内部数据存储器(
256
字节)
,允许访问全部内
部地址
pdata
分页访问外
部数据存储器(
256
字节)
,用
p>
MOVX
@Ri
指
令访问
xdata
外部数据存储
器
(64KB)
,用
MOVX
@DPTR
指令访问
code
程序存储器(
64KB
)
,
用
MOVC
@A+DPTR
指令访问
表
6
-
1
存储器类型
如果省略存储器类型,系统则会按编译模式
< br>SMALL,COMPACT
或
LARGE
所规
定的默认存储器类型去指定变量的存储区域。
无
论什么存储模式都可以声明变量
在任何的
8051
存储区范围,然而把最常用的命令如循环计数器和队列索引放在
内部数据区可
以显著的提高系统性能。
还有要指出的就是变量的存储种类与存储
器类型是完全无关的。
SMALL
存储模式把所有函数变量和局部数据段放在
8051
系统的内部数据存
储区这使访问数据非常快,
但
SMALL
存储模式的地址空间受限。在写小型的应
用程序时,变量和数据放在
data
内部数据存
储器中是很好的因为访问速度快,
但在较大的应用程序中
dat
a
区最好只存放小的变量、数据或常用的变量(如循
环计数、数
据索引)
,而大的数据则放置在别的存储区域。
COMPACT
< br>存储模式中所有的函数和程序变量和局部数据段定位在
8051
< br>系统
的外部数据存储区。外部数据存储区可有最多
256
字节(一页)
,在本模式中外
部数据存
储区的短地址用
@R0/R1
。
LARGE
存储模式所有函数和过程的变量和局部数据段都定位在
8051
系统的
外部数据区外部数据区最多可有
64KB
,这要求用
DPTR
数据指针访问数据。
之前提到简单提到
sfr,sfr16,sbit
定义变量的方法,下面我们再来
仔细看看。
-
-
-
-
-
-
-
-
-
上一篇:ZigBee的Z-Stack操作系统
下一篇:跟我学做c#窗体皮肤