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

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

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

SM为扩展名)。一个程序必须有且只能有一个名为main的函数,即是主函数main( )程序运行时,总是从主函数main( )开始执行的。

  2.C语言函数

  C语言程序的基本单位是函数。C语言程序必须有且只能有一个名为main的主函数。主函数可以调用其他函数,其他函数也可相互调用。被调用的函数可以是系统提供的库函数,也可以是程序设计者自己编写的函数——对于MCU (如PIC单片机),所用的大多是自己编写的函数。一个函数由函数头和函数体两部分组成,每个函数的形式都相同。

  (1)函数头由函数名(自定义名)、函数标志——( ),即一对圆括号,以及参数表,又称函数形式参数名和参数说明(定义形式参数类型)组成。

  前两项必须有,如主函数main( ),后两项为即可选项。注意:函数名可包括函数类型和函数名字等。

  (2)函数体由一对花括号:{}括起来,括号内由若干语句组成。这些语句有两种类型:一类是说明语句,又称变量定义,其作用是定义函数中用到的变量;另一类是执行语句,又称函数功能的执行部分。

  用于完成一定的功能,即算法处理。注意:有的函数没有变量定义部分,但有若干执行语句。而在特定的情况下,则既无声明部分,也无执行部分,如:

  Dump( )

  {}

  这是一个空函数。什么也不做,它也是合法的函数。

  再有,每个语句和数据定义的最后,必须有一个分号“;”(#define……的不加分号)。分号是C语言环境首先接触到的基本符号,在以后的文章中我们还会深入介绍这些符号的用途。

(3)赋值运算符赋值号“=”,即赋值运算符。

  赋值运算符有三种表达形式,这里先介绍一种简单的赋值运算符。

  格式:变量=表达式。

  功能:先计算出表达式值(有些表达式已有结果,勿需计算),并将该值赋给等式左端的变量。赋值运算符是按照“自右而左”的顺序进行作业的。例如:

  PORTB=0X0 3

  TRISB=0×0 0

  TRISA=0X0 F (0X代表十六进制)

  分别执行以下操作:把等式右边的0X0 3送给等式左边的端口寄存器PORTB口,即B口低两位为高电平,其余6位为低电平;把0X0 0送给方向寄存器TRISB,即设置B口为输出;把0×0 F送给方向寄存器TRISA,即设置A 口低四位为输入,高四位为输出。

  3.PIC16F84A点灯电路和C语言程序

  下面以控制PIC16F84A单片机端口寄存器PORTB口外接的8只LED任一位的亮灭为例,介绍相关C语言程序的编写。电路如图1所示。

  笔者使用的是MPLAB tDE V7 40集成开发环境及PICC编译器,所生成的C语言源程序又称源文件。

  在编写C的源程序时,需要定义硬件的标志头文件(也称包含头文件或头文件)。因为用户经常使用的标准寄存器地址和其位地址都被定义在Pic h标志头文件中,按C语言编译器编译源程序的语法规则,在编写C语言程序时,必须使用#include语句,把这个pic.h头文件包含到自己的源程序中。即对于PIC中级产品的单片机,C语言程序的开头是固定格式#includepic.h>。编译器在编译处理#includepic.h>语句时,会把pic.h的内容。复制到你的源程序中,这样PICC才认为用户使用的标准寄存器的端口地址和端1:3的位地址已经被定义,源程序就会合法地使用这些标准寄存器及其对应的位。关于MPLAP IDE V7.4和picc编译器,在后文还会详细介绍。

  4.PIC单片机端口寄存器的位定义

  这里介绍的PIC单片机端口的位定义,属于需要背诵的内容。

  以PIRTB为例,PIC单片机端口寄存器的位(即8位)定义,实写如下:

  5.延时函数

  PiC单片机C语言中的延时函数(即延时一定值),有多种等效的编写,这里介绍一种最简延时函数,在后文中,我们还会详细介绍各种延时函数。

  函数中的K为给定的整形值

6.C语言程序清单

  PIC16F84A单片机PORTB口外接8只LED间亮和位1、2、6外接的LED分别点亮的程序清单如下(源文件名PIC01.C):

  说明:以上是一个完整的,可执行图1 LED点灯的C程序,主要由端口寄存器PORTB 1:3的位定义,延时函数delay ()定义; 主函数main()、延时函数void delay( )及各种语句等组成。

  该C程序第三行以符号“∥”开头的说明文是一个注释,它可在一行内写完,亦可分多行写完。注释可写在程序的任何位置,用于帮助阅读和理解程序。说明程序的相关功能、注意事项,以及说明有关算法等。注释应尽可能简捷。在编译时,注释不产生代码。C程序还可用“ ”开头到“ ”结尾之间的内容作注释,与符号“∥”开头的注释是等效的。

  上述程序的第一行,是引导程序开始的用#in—clude语句的头文件。

第二行是PIC

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

网站地图

Top