首页 理论教育 51单片机C编程:常量和变量

51单片机C编程:常量和变量

时间:2023-10-11 理论教育 版权反馈
【摘要】:符号常量须用关键字“const”来修饰,定义格式示例如下:const doubleP1=3.14.5926;编译时,符号量被视为一个常量,不被分配内存空间。所以声明符号常量时须赋初值。一般都是将变量定义为“date”型。4)变量名可用任意合法的标识符。

51单片机C编程:常量和变量

1.常量

在程序运行过程中,其值不能被改变的量称为常量。

(1)整型常量。整型常量通常可以表示为以下几种形式:

十进制整数:如1234、-5678、0等。

十六进制整数:以0x开头的数是十六进制数,如程序中出现的0x123表示十六进制数123H,相当于十进制数291。x用小写或大写都可以。

(2)字符型常量。详见第五章知识链接。

(3)实型常量。如110.38,3.14e-3等。由于实型数据占用的存储空间较大,一般尽量避免采用实型。本书不作介绍。

注意符号常量

编程时常用一些符号来代替常量的值,这样的符号叫做“符号常量”。符号常量的可用英文的全称或简写,也可用汉语拼音,但不能用系统的关键词。要尽量做到“见名知意”,这样有利于阅读。符号常量须用关键字“const”来修饰,定义格式示例如下:

const doubleP1=3.14.5926;

编译时,符号量被视为一个常量,不被分配内存空间。在程序执行过程,遇到该符号常量,将用其定义时的初值来代替。所以声明符号常量时须赋初值。

用宏定义也可以定义符号常量,如下:

#define LEDON 0xfe

上述语句就是宏定义语句,编译时,LEDON都会用0xfe代替。这样做的好处是:见名知意(例如我们用LEDON表示LED点亮,名字的意义很清楚。注:本例中0xfe为点亮LED的具体数据。硬件的连接不同,则数据不一样)。

2.变量

变量在程序的执行过程,会占用单片机内存(RAM)的空间。

(1)变量是在程序执行过程中其值可以改变的量。C语言程序中的每一个变量都必须有一个标识符作为它的变量名。在使用一个变量之前,必须先对该变量进行定义,指出它的数据类型和存储模式,以便编译系统为它分配相应的存储单元。(www.xing528.com)

(2)C51中对变量进行定义的格式如下:

[存储种类]数据类型[存储器类型]变量名表;

解释如下:

1)“存储种类”和“存储器类型”是可选项。变量的存储种类有四种:自动变量(auto)、全局变量、静态变量(static)、寄存器(register),详见表2-2。

2)变量的数据类型有位(bit)、有符号字符型(signed char)、无符号字符型(un-signed)、有符号整型(signed int)、无符号整型(unsigned int)和浮点型等。

2-2 变量的4种存储种类

978-7-111-46996-4-Part01-53.jpg

(续)

978-7-111-46996-4-Part01-54.jpg

3)存储器类型。C51编译器还允许说明变量的存储器类型。KeilC51编译器完全支持8051系列单片机的硬件结构,可以访问其硬件系统的所有部分。对每个变量可以准确地赋予其存储器类型,从而可使其能在单片机系统内准确地定位。如果省略存储器类型,则默认将存储器类型定义为“date”型,在该类型下,可直接访问单片机内部数据存储器,访问速度最快。一般都是将变量定义为“date”型。

例如:unsigned intx,y;该语句定义了无符号整形变量x和y,省略了存储种类和存储器类型。

定义变量注意事项:

定义变量时,只要值域(数值范围)够用,就应尽量定义使用较小的数据类型,如char型、bit型,因为较小的数据类型占用的内存单元较小。例如,若x的值是1,当将x定义为unsignedint型时,占用两个字节的存储空间,若定义为unsignedchar型,则只占用1B的存储空间,若定义为bit型,则只占用1bit的存储空间。

51系列单片机是8位机,进行8位数据运算要比16位及更多位数的数据的运算快得多,所以要尽量用char型。

如果满足需要,尽量使用unsigned(即无符号)的数据类型,因为单片机处理有符号的数据时,要对符号进行判断和处理,运算速度会变慢。由于单片机的速度比不上PC,单片机又是工作在实时状态,所以任何可以提高效率的措施都要重视。

4)变量名可用任意合法的标识符。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈