PI-C单片机C语言学习入门实例

上传人:不*** 文档编号:88050430 上传时间:2019-04-17 格式:DOC 页数:25 大小:250KB
返回 下载 相关 举报
PI-C单片机C语言学习入门实例_第1页
第1页 / 共25页
PI-C单片机C语言学习入门实例_第2页
第2页 / 共25页
PI-C单片机C语言学习入门实例_第3页
第3页 / 共25页
PI-C单片机C语言学习入门实例_第4页
第4页 / 共25页
PI-C单片机C语言学习入门实例_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《PI-C单片机C语言学习入门实例》由会员分享,可在线阅读,更多相关《PI-C单片机C语言学习入门实例(25页珍藏版)》请在金锄头文库上搜索。

1、#*PIC单片机C语言入门1.2.1 认识PIC单片机C语言用C语言来开发单片机系统软件最大的好处是编写代码效率高。软件调试直观、维护升级方便、代码的重复利用率高、便于跨平台的代码移植等等,因此C语编程在单片机系统设计中已得到越来越广泛的应用。但在单片机上用C语言写程序和在PC机上写程序绝对不能简单等同。珊在的PC机资源十分丰富,运算能力强大,因此,程序员在写PC机的应用程序时,几乎不用关心编译后的可执行代码在运行过程中需要占用多少系统资源,也基本不用担心运行效率有多高。写单片机的C语言程序最关键的一点是单片机内的资源非常有限,控制的实时性要求又很高,因此,如果没有对单片机体系结构和硬件资源作

2、详尽的了解,以笔者的愚见认为是无法写出高质量实用性很高的C语程序。本书围绕PIC中档系统单机来展开讨论的,Microchip公司自己没有针对PIC中档系列单片机的C语言编译器,但很多专业的第三方公司有众多支持PIC单片机的C语言编译器提供,常见的有Hitech、CCS、IAR、Bytecraft等公司。其中笔者最常用的是Hitech公司的PICC编译器,它稳定可靠,编译生成的代码效率高,在用PIC单片机进行系统设计和开发的工程师群体中得到广泛认可。其正式完全版软件需要购置,但在其网站上有限时的试用版供用户评估。另外,Hitech公司针对广大PIC的业余爱好者和初学者,还提供了完全免费的学习版P

3、ICC-Lite编译器套件。它的使用方式与完全版相同,只是支持的PIC单片机型号限制在PIC16F84、PIC16F877和PIC16F628等几款。这几款Flash型的单片机因其所具备的丰富的片上资源而最适用于单片机学习入门,因此,笔者建议感兴趣的读者可以从PICC-Lite入手掌握PIC单片机的C语言编程。我们一起来认识训练项目2跑马灯的仿真与演示的程序LEDS.C。1#includepic.h2int a;/定义整型变量a3void main( )4TRISB=0X00;/定义端口B为输出模式5while(1)/while循环语句6PORTB=0XFE;/1111 1110 7for(a

4、=1000;a0;a-);/for循环语句8PORTB=0XFD;/1111 11019for(a=1000;a0;a-);/for循环语句10PORTB=0XFB;/1111 101111for(a=1000;a0;a-);/for循环语句12PORTB=0XF7;/1111 011113for(a=1000;a0;a-);/for循环语句14PORTB=0XEF;/1110 111115for(a=1000;a0;a-);/for循环语句16PORTB=0XDF; /1101 111117for(a=1000;a0;a-);/for循环语句18PORTB=0XBF;/1011 111119

5、for(a=1000;a0;a-);/for循环语句20PORTB=0X7F;/0111 111121for(a=1000;a0;a-);/for循环语句22 23说明:第1行:#includepic.h是文件包含语句,表示把语句中指定文件的全部内容复制到此处,与当前的源程序文件链接成一个源文件。该语句中指定的文件pic.h是Hitech-PICC编译器提供的头文件,保存在“C:HT-PICinclude”路径下,该文件包含了对PIC单片机特殊功能寄存器SFR和位名称的定义。在编写每一个程序时,首先编写的一条语句就是#includepic.h。第2行:int a。是定义一个整型变量a,具体什么

6、是整型变量?有何功能?请看数据与数据类型号中的介绍。第3行:void main( )。定义主函数void main( )。其是C语言程序中必不可少的主函数,也是程序开始执行的第一个函数。函数一般分成两个部分,一个部分为函数名:main,另一个部分为函数体:从第4行的到23行的为止。第4行:TRISB=0X00。是给单片机的B端口方向寄存器赋值,使B端口数据方向为输出方向,具体TRISB寄存器功能请查看【知识链接3】PIC单片机I/O接口及其应用。第5行:while(1)。是while( ) 循环语句。第6行:PORTB=0XFE。是给单片机的B端口寄存器赋值,使B端口寄存器为0XFE,具体PO

7、RTB寄存器功能请查看【知识链接3】PIC单片机I/O接口及其应用。第7行:for(a=1000;a0;a-)。是for循环语句。第821行都与第6、7行相类似,在此就不再重复,int 、while、for等C语言知识接下将一一介绍。1.2.2 数据与数据类型数据是计算机的对象,任何程序设计都要进行数据处理。具有一定格式的数字或数值称为数据,数据的不同格式称为数据类型。数据类型单精度型(float)双精度型(double)整型(int)实型(浮点型)字符型(char)基本类型构造类型枚举类型号(enum)数组类型结构体类型(struct)共用体类型(union)指针类型空类型(void)在C语

8、言中,数据类型可分为:基本数据类型、构造数据类型、指针类型、空类型四大类,如图1-2-1所示。图1-2-1 C语言的数据类型在进行PIC单片机程序设计时,支持的数据类型与编译器相关。Hitech-PICC编译器所支持的数据类型如表1-2-1所示,其遵循Little-endian标准,多字节变量的低字节放在存储空间的低地址,高字节放在高地址。表1-2-1 Hitech-PICC编译器所支持的数据类型序号数据类型名称长度(位数)值 域1位类型bit1B0或1 2有符号字符型char8B-128 +1273无符号字符型unsigned char8B0 2554有符号整型short16B-32768

9、+327675无符号整型unsigned short16B0 655356有符号整型int 16B-32768 +327677无符号整型unsigned int16B0 655358有符号长整型long32B-2 147 483 648 +2 147 483 6479无符号长整型unsigned long32B0 4294 967 29510浮点型float24B-2 147 483 648 +2 147 483 64711双精度浮点型double24B或32B-8 388 608 +8 388 607 或-2 147 483 648 +2 147 483 647注:Hitech-PICC编译

10、器缺省认定double型变量为24位长,但可以改变编译选项改成32位长1.2.3 常量与变量单片机程序中处理的数据有常量和变量两种形式,二者的区别在于:常量的值在程序执行期间是不能发生变化的,而变量的值在程序执行期间可以发生变化。1常量在程序运行的过程中,其值不能改变的量称为常量。常量的数据类型有整型、浮点型、字符型和字符串型。(1)整型常量可以表示为十进制数、十六进制数或八进制数等,例如:十进制数12、-60等;十六进制数以0x开关,如0x13、0xAB等;八进制数以字母o开关,如o14、o17等。若要表示长整型,就在数字后面加字母L,如104L、o34L、0Xf340L等。(2)浮点型常量

11、可以分为十进制表示形式和指数表示形式两种,如0.888、3345.345、123e3、-2.4e-2等。(3)字符型常量是用单引号括起来的单一字符,如a、9等。(4)字符串型常量是用双引号括起来的一串字符,如“test”、“ok”等。字符串是由多个字符连接起来组成的。2变量在程序运行中,其值可以改变的量称为变量。一个变量主要由两部分构成;一个是变量名,一个是变量值。每个变量都有一个变量名,在内存中占据一定的存储单元(地址),并在该内存单元中存放该变量的值。下例为对符号常量和变量进行说明:1#define CONST 602void main( )3int variable, result;4v

12、ariable = 20;5result = variable * CONST;6第1行:#define CONST 60。这一行定义了一个符号常量CONST,其值为60。这样在后面的程序中,凡是出现CONST的地方,都代表常量60。第2行:variable和result就是变量。它们的数据类型为整型(int)。注意:符号常量与变量的区别在于,符号变量的值在作用域(本例中为主函数)中,不能改变,也不能用等号赋值,习惯上,总将符号常量名用大写,变量名用小写,以示区别。(1)变量的定义变量必须先定义后使用,用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间

13、。变量的定义格式如下:存储种类 数据类型 存储器类型 变量名表;其中,数据类型和变量名表是必须的,存储种类和存储类型是可选项。存储种类有四种:auto(自动变量)、extern(外部变量)、static(静态变量)和register(寄存器变量)。默认类型为auto(自动变量)。例如:int a ;/*定义a为整型变量*/int m,n;/*定义m和n为整型变量*/float x,y,z;/*定义x,y,z单精度实型变量*/char ch;/*定义ch为字符变量*/long int t;/*定义t为长整型变量*/static int r;/*定义r为静态的整型变量*/进行变量定义时,应注意以下

14、几点: 允许在一个数据类型标识符后,说明多外相同类型的变量,各变量名之间用逗号隔开; 数据类型标识符与变量名之间至少用一个空格隔开; 最后一个变量名后必须以分号“;”结尾; 变量说明必须放在变量使用之前,一般放在函数体的开头部分; 在同一个程序中变量不允许重复定义。例如:int x,y,z;int a,b,x; /*变量x被重得定义*/(2)变量的初始化在定义变量的同时可以给变量赋初值,称为变量的初始化。变量初始化的一般格式为:数据类型标识符 变量名1=常量1,变量名2=常量2,变量名n=常量n;例如:int m=3,n=5; /*定义m和n为整型变量,同时m,n分别赋初值3,5*/float x=0,y=0,z=0; /*定义x,y,z为单精度实型变量,同时x,y,z都赋初值为0*/char ch=a; /*定义ch为字符型

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号