单片机C51语言设计基础.ppt

上传人:za****8 文档编号:13199207 上传时间:2020-06-07 格式:PPT 页数:20 大小:401.56KB
返回 下载 相关 举报
单片机C51语言设计基础.ppt_第1页
第1页 / 共20页
单片机C51语言设计基础.ppt_第2页
第2页 / 共20页
单片机C51语言设计基础.ppt_第3页
第3页 / 共20页
点击查看更多>>
资源描述
单片机C语言设计基础,第5讲,#include/包含特殊功能寄存器库#include/包含I/O函数库voidserial_initial();voidmain(void)inta,b;serial_initial();scanf(“pleaseinputa,b:%d,%d”,预处理命令include功能子函数1delay()函数体功能子函数2light1()函数体主函数main()主函数体,C语言程序组成结构,C程序组成部分,1.C语言程序是由函数构成的,一个C源程序至少包括一个函数(主函数),一个C源程序有且只有一个名为main()的函数,也可能包含其它函数,函数是C程序的基本单位。2.函数后面一定有一对大括号.”,在大括号里书写程序。C语言程序总是从main主函数开始执行的。而不管物理位置上这个main()放在什么地方。主函数通过直接书写语句和调用其它功能子函数来实现有关功能,这些功能子函数可以是由C语言本身提供给的库函数,也可以是用户自己编写的函数。,3.库函数和用户自定义子函数有什么区别?简单地说,库函数就是针对一些经常使用的算法,经前人开发、归纳、整理形成的通用功能子函数集供大家使用。而自己编写的功能子函数则称用户自定义功能子函数,显然,用户自定义功能子函数是用户根据自己需要而编写的。可以看出,使用C语言开发产品,可以大量使用库函数而减少用户自己编写程序的工作量。这样,产品开发的速度和质量是汇编语言绝对不能相比的。KeilC51内部有数百个库函数可供我们使用。调用KeilC51的库函数时只需包含具有该函数说明的相应的头文件即可。,C是模块化设计语言,C程序结构,C是函数式语言必须有且只能有一个名为main的主函数C程序的执行总是从main函数开始,在main中结束函数不能嵌套定义,可以嵌套调用,模块化,函数,函数分类,从用户角度标准函数(库函数):由系统提供用户自定义函数从函数形式无参函数有参函数,使用库函数应注意:1、函数功能2、函数参数的数目和顺序,及各参数意义和类型3、函数返回值意义和类型4、需要使用的包含文件,函数定义格式,函数类型函数名(形参类型说明表)语句部分/*说明部分*/,/*函数名称:函数功能:参数说明:输出说明:设计人:设计时间:*/,中断服务程序,函数名()interruptnusingm函数内部实现.,I/O口定义,sbitbeep=P23;,对被调用函数的要求,、必须是已存在的函数、库函数:#include、用户自定义函数:函数类型说明,宏定义、文件包含,作用:对源程序编译之前做一些处理,生成扩展C源程序种类宏定义#define文件包含#include条件编译#if-#else-#endif等格式:“#”开头占单独书写行语句尾不加分号,宏定义,不带参数宏定义一般形式:#define宏名宏体功能:用指定标识符(宏名)代替字符序列(宏体),宏展开:预编译时,用宏体替换宏名-不作语法检查,宏体可缺省,表示宏名定义过或取消宏体,定义位置:任意(一般在函数外面)作用域:从定义命令到文件结束#undef可终止宏名作用域格式:#undef宏名,宏定义可嵌套,不能递归,例#defineMAXMAX+10(),引号中的内容与宏名相同也不置换,宏定义中使用必要的括号(),文件包含,功能:一个源文件可将另一个源文件的内容全部包含进来一般形式:#include“文件名”或#include,处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的文件作一个源文件编译,直接按标准目录搜索“”先在当前目录搜索,再搜索标准目录可指定路径,被包含的文件内容,源文件(*.c)头文件(*.h),宏定义数据结构定义函数说明等,文件包含可嵌套,1、字符处理库ctype.h2、字符串处理库cstring.h3、标准函数stdlib.h4、数学函数math.h5、绝对地址访问函数absacc.h6、内部函数intrins.h7、变量参数stdarg.h8、全程跳转setjmp.h9、计算结构体成员的偏移量stddef.h,库文件介绍,头文件:reg51.h,/*BYTERegister*/sfrP0=0 x80;sfrP1=0 x90;sfrP2=0 xA0;sfrP3=0 xB0;sfrPSW=0 xD0;sfrACC=0 xE0;sfrB=0 xF0;sfrSP=0 x81;sfrDPL=0 x82;sfrDPH=0 x83;sfrPCON=0 x87;sfrTCON=0 x88;sfrTMOD=0 x89;sfrTL0=0 x8A;sfrTL1=0 x8B;sfrTH0=0 x8C;sfrTH1=0 x8D;sfrIE=0 xA8;sfrIP=0 xB8;sfrSCON=0 x98;sfrSBUF=0 x99;,/*IE*/sbitEA=0 xAF;sbitES=0 xAC;sbitET1=0 xAB;sbitEX1=0 xAA;sbitET0=0 xA9;sbitEX0=0 xA8;/*IP*/sbitPS=0 xBC;sbitPT1=0 xBB;sbitPX1=0 xBA;sbitPT0=0 xB9;sbitPX0=0 xB8;/*P3*/sbitRD=0 xB7;sbitWR=0 xB6;sbitT1=0 xB5;sbitT0=0 xB4;sbitINT1=0 xB3;sbitINT0=0 xB2;sbitTXD=0 xB1;sbitRXD=0 xB0;,/*SCON*/sbitSM0=0 x9F;sbitSM1=0 x9E;sbitSM2=0 x9D;sbitREN=0 x9C;sbitTB8=0 x9B;sbitRB8=0 x9A;sbitTI=0 x99;sbitRI=0 x98;,/*BITRegister*/*PSW*/sbitCY=0 xD7;sbitAC=0 xD6;sbitF0=0 xD5;sbitRS1=0 xD4;sbitRS0=0 xD3;sbitOV=0 xD2;sbitP=0 xD0;/*TCON*/sbitTF1=0 x8F;sbitTR1=0 x8E;sbitTF0=0 x8D;sbitTR0=0 x8C;sbitIE1=0 x8B;sbitIT1=0 x8A;sbitIE0=0 x89;sbitIT0=0 x88;,新关键词,sfr,sbitKeil为能直接仿问51系列单片机而设的新关键词。使用方法sfr变量名=地址值sbit位变量名地址值sbit位变量名SFR名称变量位地址值sbit位变量名SFR地址值变量位地址值,一个小例子:如定义PSW中的OV可以用以下三种方法:sbitOV=0 xd2(1)说明:0 xd2是OV的位地址值sbitOV=PSW2(2)说明:其中PSW必须先用sfr定义好sbitOV=0 xD02(3)说明:0 xD0就是PSW的地址值,用typedef定义类型,功能:用自定义名字为已有数据类型命名类型定义简单形式:typedeftypename;,例typedefintINTEGER;,类型定义语句关键字,已有数据类型名,用户定义的类型名,例typedeffloatREAL;,类型定义后,与已有类型一样使用,例INTEGERa,b,c;REALf1,f2;,说明:1.typedef没有创造新数据类型2.typedef是定义类型,不能定义变量3.typedef与define不同,definetypedef预编译时处理编译时处理简单字符置换为已有类型命名,按定义变量方法先写出定义体如inti;将变量名换成新类型名如intINTEGER;最前面加typedef如typedefintINTEGER;用新类型名定义变量如INTEGERi,j;,typedef定义类型步骤,例定义数组类型inta100;intARRAY100;typedefintARRAY100;ARRAYa,b,c;,例定义指针类型char*str;char*STRING;typedefchar*STRING;STRINGp,s10;,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!