中断是单片机系统重点中的重点,因为有了中断,单片机就具备了快速协调多模块工作的能力,可以完成复杂的任务。本章将首先带领大家学习一些必要的C语言基础知识,然后讲解数码管动态显示的原理,并最终借助于中断系统来完成实用的数码管显示程序。大家对本章节内容要多多研究,要完全掌握并能熟练运用。 1.1C语言的数组 1.1.1数组的基本概念 第四章已经学过变量的基本类型,比如char、int等等。这种类型描述的都是单个具有特定意义的数据,当我们要处理拥有同类意义但是却包含很多个数据的时候,就可以用到数组了,比如我们上节课那个数码管的真值表,就是用一个数组来表达的。 从概念上讲,数组是具有相同数据类型的有序数据的组合,一般来讲,数组定义后满足以下三个条件。 1、具有相同的数据类型; 2、具有相同的名字; 3、在存储器中是被连续存放的。 比如我们上节课定义的那个数码管真值表,如果我们把关键字code去掉,数组元素将被保存在RAM中,在程序中可读可写,同时我们也可以在中括号里边标明这个数组所包含的元素个数,比如: unsignedcharLedChar[16]={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E }; 在这个数组中的每个值都称之为数组的一个元素,这些元素都具备相同的数据类型就是unsignedchar型,他们有一个共同的名字LedChar,不管放到RAM中还是FLASH中,他们都是存放在一块连续的存储空间里的。 有一点要特别注意,这个数组一共有16(中括号里面的数值)个元素,但是数组的单个元素的表达方式——下标是从0开始,因此实际上上边这个数组的首个元素LedChar[0]的值是0xC0,而LedChar[15]的值是0x8E,下标从0到15一共是16个元素。 LedChar这个数组只有一个下标,我们称之为一维数组,还有两个下标和多个下标的,我们称之为二维数组和多维数组。比如unsignedchara[2][3];表示这是一个2行3列的二维数组。在大多数情况下我们使用的是一维数组,对于初学来说,我们先来研究一维数组,多维数组等遇到了再来了解。 1.1.2数组的声明 一维数组的声明格式如下: 数据类型数组名[数组长度]; 1、数组的数据类型声明的是该数组的每个元素的类型,即一个数组中的元素具有相同的数据类型。 2、数组名的声明要符合C语言固定的标识符的声明要求,只能由字母、数字、下划线这三种符号组成,且第一个字符只能是字母或者下划线。 3、方括号中的数组长度是一个常量或常量表达式,并且必须是正整数。 1.1.3数组的初始化数组在进行声明的同时可以进行初始化操作,格式如下: 数据类型数组名[数组长度]={初值列表}; 还是以上节课我们用的数码管的真值表为例来讲解注意事项。 unsignedcharLedChar[16]={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E }; 1、初值列表里的数据之间要用逗号隔开; 2、初值列表里的初值的数量必须等于或小于数组长度,当小于数组长度时,数组的后边没有赋初值的元素由系统自动赋值为0。 3、若给数组的所有元素都赋初值,那么可以省略数组的长度,上节课的例子中我们实际上已经省略了数组的长度。 4、系统为数组分配连续的存储单元的时候,数组元素的相对次序由下标来决定,就是说LedChar[0]、LedChar[1]……LedChar[15]是按照顺序紧挨着依次排下来的。 1.1.4数组的使用和赋值 在C语言程序中,是不能一次使用整个数组的,只能使用数组的单个元素。一个数组元素相当于一个变量,使用数组元素的时候与使用相同数据类型的变量的方法是一样的。比如LedChar这个数组,如果没加code关键字,那么它可读可写,我们可以写成a=LedChar[0]这样来把数组的一个元素的值送个a这个变量,也可以写成LedChar[0]=a这样把a这个变量的值送给数组中的一个元素,以下三点要注意: 1、引用数组的时候,那个方括号里的数字代表的是数组元素的下标,而数组初始化的时候方括号里的数字代表的是这个数组中元素的总数。 2、数组元素的方括号里的下标可以是整型常数,整型变量或者表达式,而数组初始化的时候方括号里的数字必须是常数不能是变量。 3、数组整体赋值只能在初始化的时候进行,程序执行代码中只能对单个元素赋值。 1.2if语句 到目前为止,我们对if语句应该已经不陌生了,前边程序已用过多次了,这里我们系统的介绍一下,方便后边的深入学习。if语句有两个关键字:if和else,把这两个关键字翻译一下就是:“如果”和“否则”。if语句一共有三种格式,我 |