资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
PIC单片机C语言入门 认识PIC单片机C语言用C语言来开发单片机系统软件最大的好处是编写代码效率高。软件调试直观、维护升级方便、代码的重复利用率高、便于跨平台的代码移植等等,因此C语编程在单片机系统设计中已得到越来越广泛的应用。但在单片机上用C语言写程序和在PC机上写程序绝对不能简单等同。珊在的PC机资源十分丰富,运算能力强大,因此,程序员在写PC机的应用程序时,几乎不用关心编译后的可执行代码在运行过程中需要占用多少系统资源,也根本不用担忧运行效率有多高。写单片机的C语言程序最关键的一点是单片机的资源非常有限,控制的实时性要求又很高,因此,如果没有对单片机体系结构和硬件资源作详尽的了解,以笔者的愚见认为是无法写出高质量实用性很高的C语程序。本书围绕PIC中档系统单机来展开讨论的,Microchip公司自己没有针对PIC中档系列单片机的C语言编译器,但很多专业的第三方公司有众多支持PIC单片机的C语言编译器提供,常见的有Hitech、CCS、IAR、Bytecraft等公司。其中笔者最常用的是Hitech公司的PICC编译器,它稳定可靠,编译生成的代码效率高,在用PIC单片机进展系统设计和开发的工程师群体中得到广泛认可。其正式完全版软件需要购置,但在其上有限时的试用版供用户评估。另外,Hitech公司针对广阔PIC的业余爱好者和初学者,还提供了完全免费的学习版PICC-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=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 111119for(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,具体什么是整型变量?有何功能?请看数据与数据类型号中的介绍。第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,具体PORTB存放器功能请查看【知识3】PIC单片机I/O接口与其应用。第7行:for(a=1000;a0;a-)。是for循环语句。第821行都与第6、7行相类似,在此就不再重复,int 、while、for等C语言知识接下将一一介绍。 数据与数据类型数据是计算机的对象,任何程序设计都要进展数据处理。具有一定格式的数字或数值称为数据,数据的不同格式称为数据类型。数据类型单精度型float双精度型double整型int实型浮点型字符型char根本类型构造类型枚举类型号enum数组类型结构体类型struct共用体类型union指针类型空类型void在C语言中,数据类型可分为:根本数据类型、构造数据类型、指针类型、空类型四大类,如图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 +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编译器缺省认定double型变量为24位长,但可以改变编译选项改成32位长常量与变量单片机程序中处理的数据有常量和变量两种形式,二者的区别在于:常量的值在程序执行期间是不能发生变化的,而变量的值在程序执行期间可以发生变化。1常量在程序运行的过程中,其值不能改变的量称为常量。常量的数据类型有整型、浮点型、字符型和字符串型。1整型常量可以表示为十进制数、十六进制数或八进制数等,例如:十进制数12、-60等;十六进制数以0x开关,如0x13、0xAB等;八进制数以字母o开关,如o14、o17等。假设要表示长整型,就在数字后面加字母L,如104L、o34L、0Xf340L等。2浮点型常量可以分为十进制表示形式和指数表示形式两种,如0.888、3345.345、123e3、-2.4e-2等。3字符型常量是用单引号括起来的单一字符,如a、9等。4字符串型常量是用双引号括起来的一串字符,如“test、“ok等。字符串是由多个字符连接起来组成的。2变量在程序运行中,其值可以改变的量称为变量。一个变量主要由两局部构成;一个是变量名,一个是变量值。每个变量都有一个变量名,在存中占据一定的存储单元地址,并在该存单元中存放该变量的值。下例为对符号常量和变量进展说明:1#define CONST 602void main()3int variable, result;4variable = 20;5result = variable * CONST;6第1行:#define CONST 60。这一行定义了一个符号常量CONST,其值为60。这样在后面的程序中,但凡出现CONST的地方,都代表常量60。第2行:variable和result就是变量。它们的数据类型为整型int。注意:符号常量与变量的区别在于,符号变量的值在作用域本例中为主函数中,不能改变,也不能用等号赋值,习惯上,总将符号常量名用大写,变量名用小写,以示区别。1变量的定义变量必须先定义后使用,用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。变量的定义格式如下:存储种类 数据类型 存储器类型 变量名表;其中,数据类型和变量名表是必须的,存储种类和存储类型是可选项。存储种类有四种: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为静态的整型变量*/进展变量定义时,应注意以下几点: 允许在一个数据类型标识符后,说明多外一样类型的变量,各变量名之间用逗号隔开; 数据类型标识符与变量名之间至少用一个空格隔开;最后一个变量名后必须以分号“;结尾; 变量说明必须放在变量使用之前,一般放在函数体的开头局部; 在同一个程序中变量不允许重复定义。例如: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为字符型变量,同时赋初值字符a*/long int
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号