单片机从入门到实战(视频自学版)
上QQ阅读APP看书,第一时间看更新

2.9 使用数组控制流水灯

2.9.1 数组

实际工作中往往需要对一组数据进行操作,而这一组数据又有一定的联系。若用定义变量的方法,则需要多少个数据就要定义多少个变量,并且难以体现各个变量之间的关系,这种情况若使用数组就会变得简单一些。这一特点在后续章节会多次用到。数组有一维、二维和多维之分,本章只介绍一维数组。

1.一维数组的声明

一维数组的声明方式为:类型说明符 数组名[常量表达式]。例如:

978-7-111-66891-6-Part01-69.jpg

2.一维数组的初始化

数组的初始化(定义)可以采用以下几种方法。

1)在声明数组时对数组的各元素赋初值(这就是定义数组)。例如:

978-7-111-66891-6-Part01-70.jpg

2)只给一部分元素赋初值。例如:

978-7-111-66891-6-Part01-71.jpg

3)如果对数组全部元素都赋了初值,则可以不指定长度。例如:

978-7-111-66891-6-Part01-72.jpg

10个元素都赋了初值,因此也可以写成:

978-7-111-66891-6-Part01-73.jpg

3.一维数组的引用

数组必须先定义,再引用。C语言规定只能引用数组元素,而不能引用整个数组。数组元素的表示方式为:数组名[下标],下标从0开始编号,下标的最大值为元素个数减1。例如,对于数组char zm[ ]={1,3,9,5,11,3,4,5,7,8},zm[0]、zm[1]、zm[2]、zm[3]、zm[4]分别表示数组zm的第1、2、3、4、5个元素,zm[9]就是最后一个元素,值为8。

2.9.2 使用数组控制流水灯的参考程序及解释

1.任务书

同2.6.2节。

2.参考程序

978-7-111-66891-6-Part01-74.jpg

3.部分程序详解

第14~19行:变量i的初值默认为0,当i=0时,进入for循环语句后,由于i<8为真,则不执行i+ +,而直接执行第16行:P0=table[0];,即P0=0xfe;(因为i=0),点亮了第一个灯。延时500ms后,再执行第18行的判断,再执行i++,i的值变为1,再判断i<8是否为真,结果为真,因此执行第16行:P0=table[1];,即P0=0xfd;,点亮了第二个灯……依次点亮各个灯。当i等于7后(8个灯已点亮了一遍),执行到第18行时,需要将i置为0,开始下一轮的循环。