-
第五课
常量
上一节我们学习了
KEIL
C51<
/p>
编译器所支持的数据类型。而这些数据类型又是怎么
用在常量和变
量的定义中的呢?又有什么要注意的吗?下面就来看看吧。晕!你还区分
不清楚什么是常
量,什么是变量。
常量是在程序运行过程中不能改变值的量,而变量是
< br>可以在程序运行过程中不断变化的量。
变量的定义可以使用所有
< br>C51
编译器支持的数
据类型,而
常量的数据类型只有整型、浮点型、字符型、字符串型和位标量
。这一节我
们学习常量定义和用法,而下一节则学习变量。
常量的数据类型说明是这样的
1
.
整型常
量
可以表示为十进制如
123,0
,-
89
等。十六进制则以
0x
开头如
0x34,-0x3B
等。长整型就在
p>
数字后面加字母
L
,如
104L
,
034L
,
0xF340
等。
2
.
浮点型
常量
可分为十进制和指数表示形式。
十进制由
数字和小数点
组成,
如
0.888,3345.345,0.0
等,
整数或小数部分为
0
,
可
以省略但必须有小数点。
指数表示形式为
[±]数字
[.
数字]e[±]数字
,
[]
中的内容为可选项,其中内容根据
具体情况可有可无,但其余部分必须有
,
如
p>
125e3,7e9,-3.0e-3
。
3
.
字符型
常量
是
单引号
内的字符,如
'a','d'
等,不可以显示的控制字符,可以
在该字符前面加一个反斜杠
组成
专用转
义字符
。常用转义字符表请看表
5
-<
/p>
1
。
转义字符
o
n
r
t
b
f
'
含义
空字符
(NULL)
换行符
(LF)
回车符
(CR)
水平制表符
(HT)
退格符
(BS)
换页符
(FF)
单引号
双引号
反斜杠
表
5
-
1
常用转义字符表
ASCII
码(
16/10
进制)
00H/0
0AH/10
0DH/13
09H/9
08H/8
0CH/12
27H/39
22H/34
5CH/92
4
.
字符串
型常量
由
双引号
内的字符组成,如
p>
等。当引号内的没有字
符时,为空字符串。
在使用特殊字符时同样要使用转义字符如双引号。在
C
中字符串
常
量是做为字符类型数组来处理的,
在存储字符串时系统会在字
符串尾部加上
o
转义字符
以作为该字符
串的结束符。
字符串常量
和字符常量<
/p>
'A'
是不同的,前者在存储时多占
用一
个字节的字间(存放
o
)。
5
.
位标量,
它的值是一个二进制。
p>
常量可用在不必改变值的场合,
如固定的数据表,
< br>字库等。
常量的定义方式有几种
,
下面来加以说明。
#difine False 0x0;
//
用预定义语句可以定义常量
#difine True 0x1;
//
< br>这里定义
False
为
0,Tr
ue
为
1
//
在程序中用到
< br>False
编译时自动用
0
替换
,同理
True
替换为
1
unsigned int
code
a=100;
//
这一句用
code
把
a
定义在程序存储器中并赋值
const
unsigned int
c=100;
//
用
const
p>
定义
c
为无符号
i
nt
常量并赋值
以上两句它们的值都
保存在程序存储器中,
而程序存储器在运行中是不允许被修改
的
,所以如果在这两句后面用了类似
a=110
,
a++
这样的赋值语句,编译时将会出错。
说了一通还不如写个程序来实验一下吧。写什么程序呢
?跑马灯!对,就写这个简
单易懂的吧,这个也好说明典型的常量用法。先来看看电路图
吧。它是在我们上一课的
实验电路的基础上增加
6
个
LED
组成的,也就是用
P1
口的全部引脚分别驱动一个
LED
,
电路如图
5
-
1
所示。
新建一个
RunLED
的项目,主程序如下:
#include
预处理文件里面定义了特殊寄存器的名称如
P1
口定义为
P1
void main(void)
{
//
定义花样数据
const unsigned char design[32]=
{0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0x7F,0xBF,0xDF,0xEF,0xF7,
0xFB,0xFD,0xFE
,0xFF,0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0,
0xE7,0xDB,0