现在我们知道了,不同的数据实际上是占用的单元格不同,8个单元格就是char,16个坑就是int,32坑就是long. 在实际应用中,可能有很多char,比如char1,char2,char3...,也很多int1,int2,int3...,也有很多long1,long2,long3等等。这么多的变量,我们能不能归个类。比如把单元格长度相同的放在一起,比如char1,char2,char3等,这样就产生了数组的概念。那么如何把这些相同长度的单元格变量放在一起呢,也就是说如何定义一个数组呢?
一维数组的定义方式如下:
类型说明符 数组名 [常量表达式]
类型说明符: 表示你想把什么长度单元格的变量放在一起,比如是char,int还是long
数组名: 给你定义的数组取个名字,数组标识符
常量表达式: 表示你定义的数组中装有多少个元素,也就是数组长度
比如char a[4]; 说明字符型数组a,有4个元素
既然定义了数组,那么如何访问数组中的元素呢?比如我要访问数组a的第二个元素,
a[0] 表示数组的第一个元素
a[1]就表示数组的第二个元素
依次类推。
现在我们举个例子如何在单片机编程中使用数组,
如何在单片机编程中使用数组
定义一个数组,将数组中各元素的值给P1端口实现流水灯的功能
/*目的: 练习如何在单片机编程中使用数组
1. 定义一个数组
2. 给数组赋值
3. 把数组中各元素的值给P1端口实现流水灯的功能
*/
#include "reg52.h"
typedef unsigned char uchar;
typedef unsigned char chararray[8];//定义一个新的数组类型,它有8个元素,数据类型为unsigned char
void delayUs (unsigned char t);
void delayMs(unsigned char t);
void main(void)
{
chararray a ={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf ,0xbf ,0x7f};
while(1)
{
uchar i;
P1=a[0];
for (i=0;i<8;i++)
{
P1=a;
delayMs(100);
}
for (i=7;i>0;i--)
{
P1=a;
delayMs(100);
}
}
}
void delayUs (uchar t)
{
while(--t);
}
void delayMs(uchar t)
{
while(--t)
{
delayUs(245);
delayUs(245);
}
}
|