微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC单片机C语言程序设计(2)

PIC单片机C语言程序设计(2)

时间:07-10 来源:互联网 点击:

 五、C语言的标识符和关键字

  一个完整的PIC单片机C语言程序,通常由包含文件(即头文件1,变量定义、变量说明、函数定义、函数体和注释等六部分等组成。

  1.C语言的标识符

  所谓标识符,实际上是一些由程序编写者自定义的名称,类似于PIC单片机汇编语言中给寄存器(RAM)的命名。C语言中所用到的变量名、函数名、数组名、文件名等都是由标识符组成的。

  标识符是由一串字母(常指英语字母)、数字和下线符(或称下划线)组成的字符串。标识符的第一个字符必须是字母或下线符。按照惯例,以下线符开头的标识符是系统程序专用的,程序员最好不用。程序员可将下线符作为分段符使用,如SUM_1。

  同一字母的大小写被视为不同的标识符。即同一字母的大小写是不同的标识符。

  不同的C编译器对标识符的长度有不同的限制。为了避免所编写的源文件能被所有C编译器认可,可将标识符的长度限定在8个字符以内(即1个字节)。

  标识符的命名(即自定义),最好简捷、含意清晰、便于阅读,如用deIay表示延时;用sum表示求和;用loop表示循环等。

  2.C语言的关键字

  关键字,又称保留字,是指那些已由系统作了特殊定义、具有特定含义的标识符。,程序员编写C程序时,可用关键字来对所用函数参数进行说明、定义一些物理量,它们是C语言语句的重要组成部分,有的还直接组成简单语句。因此,用户是不能将此类标识符(关键字)作为自定义标识符使用的。

  C语言的关键字分为三类,即数据类、程序控制类和预处理类,如表1所示。

表1

  表1中所列关键字,读者在编写C程序时,将逐步学会其使用。

  六、C语言的数据类型

  在编写C语言程序时,首先要涉及的是数据描述和功能描述。数据是实现功能的过程,功能是数据运算(或处理)的结果,没有数据,C程序就无法实现单片机规定的功能,可见数据在C语言程序中的重要性。

  C语言的数据类型,有基本型、构造型、指针型三类。对此,笔者将在使用时逐一介绍。

  1.标准型

  标准型数据属于基本型数据,是由C语言本身提供的基本数据类型,结构简单、使用频率高。下面以实例对C语言程序中的标准型数据予以说明。

  标准型数据又分为整型数据、实型数据和字符型数据三种,每种数据又有常量和变量之分。笔者将其分类以表格形式列出,既可供初学者编写C语言程序时查找,亦可与本文中实例程序的注释进行对比学习,以加深对标准型数据的理解。

(1)整型常量。

1.while语句

  (1)格式:while(条件表达式)

  (2)功能:程序运行时,先判断条件表达式,当条件表达式的值为非零(即为“真”)时,执行while语句中的内嵌语句,即先判断条件表达式,再执行语句。当条件表达式为零时,退出循环;若表达式一开始就为0,其while语句一次也不执行;若条件表达式恒为1,则程序在while体内一直循环。

  (3)程序实例2

  1)硬件电路和功能硬件电路同《PIC单片机C语言程序设计(1)》一文的图1(见《电子制作》2009年第10期)。图中的RA0口外接的微动开关KO,作为程序的起动开关。KO未按下时。单片机系统处于等待状态,按一次KO,系统依次进行以下工作:RBO口外接的LEDO点亮→延时→LEDO熄灭→RB2外接的LED2点亮→延时→LED2灭→RB4外接LED4点亮→延时→LED4灭→执行间断语句break终止循环→点亮RB6外接的LED6→回到等待状态,直到RA0外接的微动开关KO再次按下,再重复上述过程。

  2)源文件清单。

  本实例2的程序清单如下(源文件名PIC02.C):

  说明:

  ① 上述程序中,关键字break、continue和return等组成的简单语句的使用是略有区别的。具体区别如下:

  间断语句break:程序运行到此就终止循环,跳出while(1)的循环体,执行该循环体紧接在后面的语句:

  · 继续语句continue:如果把该程序中的break语句换成继续语句continue。程序运行到此便立即执行由while(1)开始功能的程序,即程序在该循环体内不断地运行,等效于不用continue;语句;·return语句:当把该程序中的break换成return语句时,程序运行到此就会立即返回主程序运行。

  读者学习C语言时,一定要将实例2源程序中的关键字“break”分别用“coutinue”和“return”代换并运行程序,同时观察使用三种不同的关键字时LED指示灯的不同状态,方能体会出三者的差异。

  ② 关于带形式参数(简称形参)的延时函数。

实例2所用的延时函数与实例1不同。实例1(见《电子制作》2009年第10期)用的是无参数函数,功能简单,一个函数完成一定的延时。实例2用的是有参数延时函数

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

网站地图

Top