微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第11节:变量的定义与赋值语句

第11节:变量的定义与赋值语句

时间:11-22 来源:互联网 点击:

等于号是两码事。

其中b就是右边对象。

其中分号“;”代表一条语句的结束符。

赋值语句与ROM的内在关系。赋值语句是行为,凡是程序的行为指令都存储在单片机的ROM区。C编译器会把一条赋值语句翻译成对应的一条或者几条机器码,机器码指令也是以字节为单位的。下载程序的时候,这些机器码就会被下载进单片机的ROM区。比如以下这行赋值语句:

a=b;

经过C编译器编译后会生成以字节为单位的机器码。这些机器码记录着这些信息:变量a的RAM地址,变量b的RAM地址,以及把b变量RAM地址里面的内容赋值到a变量地址里面的RAM空间。

变量定义的初始化。讲了赋值语句之后,再回过头来讲变量定义的初始化。变量定义之后,等于被C编译器分配了一个RAM空间,那么这个空间里面存储的数据是什么?如果没有刻意给它初始化,那么RAM空间里面存储的数据是不太确定的,是默认的。有些场合,需要在给变量分配RAM空间时就给它一个固定的初始值,这就是变量定义的初始化。变量初始化的语法格式由3部分组成:关键字,变量名赋值,分号。比如:

unsigned char a=9;

其中unsigned char就是关键字。

其中a=9就是变量名赋值。a从被C编译器分配RAM空间那一刻起,就默认是存了9这个数据。

分号”;”就是一条语句的结束符号。

接下来练习一个程序实例。直接复制前面章节中第十节的模板程序,只需要在main函数里编写练习代码,编译后,把程序下载进坚鸿51学习板,通过按S1或者S5按键即可在数码管上观察不同的变量数值。其它部分的模板程序代码就不贴出来了,详细的main函数源代码讲解如下:

void main() //主程序

{

/*---C语言学习区域的开始---------------------------------------------------------------------------*/

unsigned char a; //定义一个变量a,并且分配了一个字节的RAM空间,里面保存的数据是默认值0.

unsigned char b; //定义一个变量b,并且分配了一个字节的RAM空间,里面保存的数据是默认值0.

unsigned char c; //定义一个变量c,并且分配了一个字节的RAM空间,里面保存的数据是默认值0.

unsigned char d=9; //定义一个变量d,并且分配了一个字节的RAM空间,里面保存的数据被初始化成9.

b=3; //把3赋值给变量b,b原来的默认数据是0被覆盖了,此时变量b保存的数值是3

c=b; //把右边变量b的内容复制一份赋值给左边的变量c,c原来的默认数据0被覆盖了,此时,c保存的数值跟b的数值一样,都是3.

GuiWdData0=a; //把变量a这个数值放到窗口变量0里面显示

GuiWdData1=b; //把变量b这个数值放到窗口变量1里面显示

GuiWdData2=c; //把变量c这个数值放到窗口变量2里面显示

GuiWdData3=d; //把变量d这个数值放到窗口变量3里面显示

/*---C语言学习区域的结束---------------------------------------------------------------------------*/

while(1)

{

initial();

key_service();

display_service();

}

}

上坚鸿51学习板观察程序执行的结果:

变量a的数值是0,

变量b的数值是3,

变量c的数值是3,

变量d的数值是9,

下节预告:两个变量的数据交换。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top