理论教育 常量和变量-PIC单片机常用模块与实例

常量和变量-PIC单片机常用模块与实例

时间:2023-10-19 理论教育 版权反馈
【摘要】:顾名思义,常量就是不变的量,变量就是会变化的量。常量有两种形式:直接常量和符号常量。也就是说,'a'与“a”是不等价的,'a'是字符常量,“a”是字符串常量。

常量和变量-PIC单片机常用模块与实例

在C语言中,所有的数据类型都有两种形式:一种是常量,另一种是变量。顾名思义,常量就是不变的量,变量就是会变化的量。下面分别详细介绍。

1.常量

在程序执行过程中,其值不发生改变的量称为常量。常量有两种形式:直接常量和符号常量。1)直接常量(又称为字面常量)。直接用数字或引号括起来的字符或字符序列构成的量称为直接常量。例如,

●整数常量:1158、0、-36。

实数常量:1.024、-8.12。

●字符常量:'u'、'A'、'1'。

●字符串常量:“HelloWorld”、“1.0248”、“u”。

字符串的概念。顾名思义,字符串就是一串字符连起来写。在C语言中要注意的是,字符串常量与字符常量的书写是有区别的,字符串常量用英文双引号括起来,字符常量用英文单引号括起来并且字符常量只能包含一个字符。也就是说,'a'与“a”是不等价的,'a'是字符常量,“a”是字符串常量。读者千万要牢记两者的区别。这是初学者经常忽略的问题,会导致程序运行时出现错误。

字符串常量用英文双引号括起来;字符常量用英文单引号括起来并且字符常量只能包含一个字符。

2)符号常量。用一个标识符来表示的一个常量,称此标识符为符号常量。

这里先解释一下什么是标识符。在C语言中,用户可以在一定起名规则下用一串字符来为符号常量、变量、函数、数组、类型、文件等起名字,这个名字术语称之为标识符。

标识符起名规则:必须以英文字母或英文下画线(_)开始,可使用大小写英文字母、数字和英文下画线(_)任意组合。

例如,下一行是几个合法的标识符。

978-7-111-33274-9-Chapter04-15.jpg

而下一行则是几个不合法的标识符。

978-7-111-33274-9-Chapter04-16.jpg

符号常量在使用之前必须先定义,其一般形式为

978-7-111-33274-9-Chapter04-17.jpg

其中,#define是一条预处理命令(预处理命令都以“#”开头),称为宏定义命令(在后面预处理程序中将进一步介绍),其功能是把该标识符定义为其后的常量值。一经定义,以后在源代码中所有出现该标识符的地方均代表该常量值。例如:

978-7-111-33274-9-Chapter04-18.jpg(www.daowen.com)

在此例中,OUT_DATA被定义为0b00001111,这样以后在编译源代码过程中所有出现OUT_DATA的地方均会被编译器以0b00001111替代。下面通过实例运行效果来理解符号常量的功能。

【例4-2】编程使PORTD和PORTB输出同一数据0b00001111。电路如图4-1所示。

设计过程

1)修改S041项目中的main.c的内容,改为如下所示。

978-7-111-33274-9-Chapter04-19.jpg

2)为了能看到此程序的效果,请读者用Proteus ISIS软件打开光盘上的“\Example\Chapter4\S041\sch\led8h.dsn”文件,在图4-1的基础上修改电路图,为PORTB也加入8个LED,这样再运行此程序后就能看到效果了。

3)运行后读者会发现B口显示的内容与D口相同,这说明符号常量OUT_DATA的用途就是被替换为0b00001111。

对于“Project”→“Build(F10)”功能的进一步说明:实际上当用户按快捷键F10的时候,MPLAB依次对源代码做了以下工作:预处理→编译→连接。

●预处理:预处理程序对源代码中的预处理命令进行解释、翻译和替换,使其变成没有#define等预处理命令的源代码。

●编译:编译程序把预处理后的源代码进行编译,生成能在目标计算机上运行的目标文件。

●连接:连接程序把目标文件、库文件、启动代码目标文件等经过特定格式连接生成最终要写入单片机的目标文件。

总结一下符号常量的用法。

●用标识符代表一个常量,称为符号常量。

●习惯上符号常量的标识符全用大写字母,变量标识符只是头字母大写,以示区别。

●符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值

●使用符号常量的好处是含义清楚,能做到“一改全改”。

2.变量

在程序执行过程中,其值可以改变的量称为变量。一个变量应该有一个名字(标识符),在内存中占据一定的存储空间。占用的空间大小取决于此变量的类型,由于C语言中变量类型很多,接下来分别介绍C语言中的基本数据类型和单片机C语言中特殊的数据类型。

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

我要反馈