单片机应用技术广西电力职业技术学院动力工程系C语言编程基础主讲:谢祥强单片机应用技术问题:C语言作为一种流行的程序设计语言,它是如何用来编写程序的?即将揭开你的庐山真面目,期待中……C语言编写程序的方法写出来的程序是什么样子?C程序在什么样的环境下运行?这些问题都是作为初学者心中的疑问,将在本章的讲解中得到解决。引子单片机应用技术第1章C语言概述本章难点C语言的特点C语言程序的基本结构算法及其描述方法结构化程序设计的方法本章要点算法及其描述方法单片机应用技术1.11.21.31.4C语言的发展及特点C语言程序的基本结构算法及其描述程序设计方法第1章C语言概述单片机应用技术程序设计语言的发展机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000加10010000减用助记符号描述的指令系统如ADDA,B面向机器的语言程序设计是数据被加工的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装;对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象1.1C语言的发展及特点单片机应用技术C语言发展过程产生背景产生过程时间:1972~1973地点:美国贝尔实验室目的:UNIX操作系统设计人:Ken.Thompson和Dennis.M.RitchieC标准标准C:K&R合著《TheCProgrammingLanguage》ANSIC:1983年87ANSIC:1987年1990年国际标准的ANSIC单片机应用技术C语言特点语言简洁、紧凑、灵活运算符和数据类型丰富程序设计结构化、模块化生成目标代码质量高可移植性好中级语言单片机应用技术1.11.21.31.4C语言的发展及特点C语言程序的基本结构算法及其描述程序设计方法第1章C语言概述单片机应用技术1.2C51程序的基本结构#includereg51.h//头文件包含,定义特殊功能寄存器#defineucharunsignedchar//定义用uchar表示unsignedchar#defineuintunsignedint//定义用uint表示unsignedintsbitLED=P1^0;//定义用LED=P1^0(P1.0)//下面是定义延时函数voidDelayMS(uintx)//括号内的uintx为形式参数{uchari;//定义i为无符号(uchar)变量8位二进数while(x--)//while循环语句{for(i=0;i120;i++);}}P1.0控制LED闪烁程序单片机应用技术//下面是主函数(程序)voidmain()//主函数开头{while(1)//while循环语句{LED=~LED;//P1.0取反,0变1,1变0DelayMS(150);//调用延时函数}}单片机应用技术格式特点关键字必须用小写字母,大小写敏感不使用行号可使用空行和空格常用锯齿形书写格式main(){……………….…………………………..…………..……………….………………………….……………….………………..}main(){inti,j,sum;sum=0;for(i=1;i10;i++){for(j=1;j10;j++){sum+=i*j;}}printf(“%d\n”,sum);}优秀程序员的素质之一:使用TAB缩进{}对齐有足够的注释有合适的空行单片机应用技术结构特点函数与主函数程序由一个或多个函数组成必须有且只能有一个主函数main()程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。程序语句C程序由语句组成用“;”作为语句终止符注释/**/为注释,不能嵌套不产生编译代码例:/*Thisisthemain/*ofexample1.1*/*/非法编译预处理命令单片机应用技术1.11.21.31.4C语言的发展及特点C语言程序的基本结构算法及其描述程序设计方法第1章C语言概述单片机应用技术用流程图描述算法用一些图框表示各种操作的算法描述方法。特点:用图形描述算法,直观形象,易于理解。ANSI规定了一些常用的流程图符号(如图1-1所示)。起止框输入输出框判断框处理框流程线连接点注释框图1.1常用的流程图符号单片机应用技术流程图描述算法的三种基本结构顺序结构:选择结构:循环结构当型直到型图1.2顺序结构AB图1.3选择结构ABP成立不成立图1.4当型循环结构AP成立不成立图1.5直到型循环结构AP成立不成立单片机应用技术1.11.21.31.4C语言的发展及特点C语言程序的基本结构算法及其描述程序设计方法第1章C语言概述单片机应用技术1.4程序设计方法程序设计的一般步骤分析问题并确定数据结构算法设计编写程序上机调试整理写出文档资料结构化程序设计方法自顶向下,逐步细化模块化设计结构化编码单片机应用技术广西电力职业技术学院动力工程系第2章C51基本数据类型、运算符与表达式主讲:谢祥强单片机应用技术19问题:人类的语言书写时,不同国家有不同的要求,基本的如:有哪些数据是规定可用的,可进行什么样的运算和加工?C中的数据和操作用字要求格式要求标点要求C语言作为一种计算机语言,在用于编程时,C语言中对数据的类型,哪些操作运算是合法的,都进行了相关的规范和要求。引子单片机应用技术自增、自减运算符的使用运算符优先级别混合表达式运算类型转换时的误差第2章数据类型、运算符和表达式本章难点C语言的基本数据类型变量的定义及使用运算符的运算规则、优先级别表达式的构成规则和计算数据类型转换的意义和实质本章要点单片机应用技术2.12.22.32.42.5C语言的数据类型常量与变量整型数据实型数据字符型数据本章主要内容单片机应用技术2.62.72.8算术运算符与算术表达式赋值运算符与赋值表达式位运算符本章主要内容单片机应用技术232.1C语言的数据类型序号数据类型名称长度取值范围1unsignedchar无符号字符型单字节0~2552signedchar有符号字符型单字节-128~+1273unsignedint无符号整型双字节0~655354signedint有符号整型双字节-32768~+327675unsignedlong无符号长整型4字节0~42949672956signedlong有符号长整型4字节-2147483648~+21474836477folat浮点型4字节±1.175494E-38~±3.402823E+388*指针型1~3字节对象的地址9bit位类型位0或110sfr特殊功能寄存器单字节0~25511sfr1616位特殊功能寄存器双字节0~6553512sbit可寻址位位0或1单片机应用技术2.12.22.32.42.5C语言的数据类型常量与变量整型数据实型数据字符型数据本章主要内容单片机应用技术25一般用大写字母是宏定义预处理命令,不是C语句如#definePRICE30常量定义:程序运行时其值不能改变的量(即常数)分类:符号常量:用标识符代表常量定义格式:#define符号常量常量例符号常量举例#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf(total=%d,total);}运行结果:total=300单片机应用技术26标识符定义:用来标识变量、常量、函数等的字符序列命名原则:只能由字母、数字、下划线组成,且第一个字符必须是字母或下划线大小写敏感不能使用关键字见名知意不宜混淆如l与I,o与0长度:VC6.0为255个字符例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3charab_above$123M.D.John3days#33char$123ab2.2变量单片机应用技术27编译程序根据变量定义为其分配指定字节的内存单元…...地址inta=1,b=-3,c;abc2字节2字节2字节地址地址…...内存1-3随机数变量概念:其值可以改变的量变量名与变量值变量定义的一般格式:数据类型变量1[,变量2,…,变量n];变量初始化:定义时赋初值例:inta,b,c;floatdata;决定分配字节数和数的表示范围合法标识符例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;intx=y=z=1;变量的使用:先定义,后使用例1intstudent;stadent=19;//Undefinedsymbol‘statent’infunctionmain例2floata,b,c;c=a%b;//Illegaluseoffloatingpointinfunctionmain变量定义位置:一般放在函数开头main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;printf(“data=%f\n”,data);}变量定义可执行语句单片机应用技术2.12.22.32.42.5C语言的数据类型常量与变量整型数据实型数据字符型数据本章主要内容单片机应用技术29三种形式:十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x或0X开头,后跟0~9,a~f,A~F表示.如0x123,0Xff例12与12L例30000为int型65536为longint型整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是longint型常量问题:0123=()100x123=()100Xff=()1083291255问题:0123=()100x123=()100Xff=()102.3整型数据(int)整型常量(整常数,双字节16位二进制数)单片机应用技术30占字节数随机器不同而不同,一般占一个机器字short≤int≤long2.3整型数据(int)整型变量单片机应用技术2.12.22.32.42.5C语言的数据类型常量与变量整型数据实型数据字符型数据本章主要内容单片机应用技术32表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,1.2E-3.5实型常量的类型默认double型在实型常量后加字母f或F,认为它是float型2.4实型数据(float)实型常量(实数或浮点数,占4字节)单片机应用技术33float:占32位,提供7位有效数字double:占64位,提供16位有效数字longdouble:占64位,提供16位有效数字例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/2.4实型数据实型变量单片机应用技术2.12.22.32.42.5C语言的数据类型常量与变量整型数据实型数据字符型数据本章主要内容单片机应用技术352.5字符型数据(char)字符型数据:(8位二进制数表示)分为unsignedchar与signedcharUnsignedchar是无符号数:表达的数据范围是0~255signedchar是有符号数:最高为符号位,0表示正数,1表示负数,负数是用补码表示的。所以表示的范围是:-128~+127单片机应用技术2.62.72.8算术运算符与算术表达式赋值运算符与赋值表达式位运算符本章主要内容单片机应用技术37学习运算符应注意:运算符功能与运算量关系要求运算量个数要求运算量类型运算符优先级别结合方向结果的类型2.6算术运算符和算术表达式单片机应用技术38算术运算符和表达式基本算术运算符:+-*/%说明:两整数相除,结果为整数%是求余运算,要求两侧均为整型数据例5/2=-5/2.0=例5%2=-5%2=1%10=5%1=5.5%2例5/2=2-5/2.0=-2.5例