




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,第二章C51知识,C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。,.,C语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用C语言编程,如:各种单片机、DSP、ARM等.C语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。C提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。,C-51的特点,.,C-51与ASM-51相比,有如下优点:1.对单片机的指令系统不要求了解,仅要求对8051的存贮器结构有初步了解;2.寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;3.程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;4.提供的库包含许多标准子程序,具有较强的数据处理能力;5.由于具有方便的模块化编程技术,使已编好程序可容易地移植;,.,例子认识C程序,#includesbitA5=P10 x04;intmain(void)/用户代码voiddelay_1s();return0;voiddelay_1s()/代码,一、主程序(程序入口)intmain(void)/用户代码return0;注:1、C程序模块都是以“”开头“”结尾,程序为函数主函数、子函数2、每一行必须有结束号“;”3、养成注释程序的习惯“/”注释该行“/*-段落-*/”注解一段,二、头文件(编程预处理),#include注:定义一些通用引脚及函数,三、自定义函数(子函数),常用、重复引用的功能集成,可用任何文本编辑软件编写,最后保存扩展名为.C的程序源文件,.,其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。变量应该先定义后使用。要区分变量名和变量值是两个不同的概念。,注:变量名a代表地址,编译系统自动分配,用户不可见,0 x40,.,一、C51的变量类型,1、基本数据类型,类型,符号,关键字,数的表示范围,所占位数,整型,字符型,实型,有,无,(signed)int,16,-3276832767,(signed)short,16,-3276832767,(signed)long,32,-21474836482147483647,16,unsignedint,065535,32,04294967295,unsignedlongint,unsignedshortint,16,065535,有,float,32,3.4e-383.4e38,有,double,64,1.7e-3081.7e308,有,char,8,-128127,无,unsignedchar,8,0255,.,2、变量类型的定义,格式:变量类型+变量名,例如:inta,b;/定义a,b为整型变更longsheng1,sheng2;/长整型Floatc,d;/浮点(有小数)Doublee,f;/双精度chara;/有符号字符型Unsignedcharb;无符号字符型,注:变量类型为规定的类型;变量的名称自由起,但通常要通俗,并要遵守如下规则,c语言变量命名:数字、字母、下划线,都可以为变量命名。做为变量名的开头不能为数字,如3a_是错的,而a_3或_a3是正确变量名不能为关键字,像ifelseprintf等等都不能,.,标准C表1,.,标准C表2,.,C51扩展,.,3、C51的数据类型扩充定义,sfr:特殊功能寄存器声明sfr16:sfr的16位数据声明sbit:特殊功能位声明bit:位变量声明,.,1sfr特殊功能寄存器。这也是C51编译器的一种扩充数据类型,利用它可以访问8051单片机的所有内部特殊功能寄存器。sfr型数据占用一个内存单元,其取值范围0255。2sfr1616位特殊功能寄存器。它占用两个内存单元,取值范围是065535。3sbit可寻址位。这也是C51编译器的一种扩充数据类型,利用它可以访8051单片机内部RAM中的可寻址位或特殊功能寄存器中的可寻址位。4.bit位标量。这是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。,.,例:sfrSCON=0X98;sfr16T2=0 xCC;sbitOV=PSW2,.,4、数据类型修饰词,1)、data:固定指前面0 x00-0 x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小,2)、code定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改,对应的还有data是存入RAM的意思。,例如:chardataa;/a变量存在上述RAM中intdatadisp;/disp变量存在上述RAM中,例如:ucharcodeyima=/把数码管位数据(因为不变)写入ROM0 xeb,0 x88,0 xb3,0 xba,0 xd8,0 x7a,0 x7b,0 xa8,0 xfb,0 xfa;,.,4、数据类型修饰词,3)、,.,4、数据类型修饰词,4)、,.,5、变量的赋值,inta,b;/定义a,b为整型变量longsheng1,sheng2;/长整型floatc,d;/浮点(有小数)doublee,f;/双精度charg;/有符号字符型Unsignedcharh;无符号字符型,定义,赋值,a12;a=0 xff;a=0 x00;b=0;b=08;b=03;C=0.214;c=-0.36;d=12e3;e=12e-12;g=10;G=A;h=200;,注:A为字符常量,为该字符的ASCII代码,.,附,.,C-51的包含的头文件,通常有:reg51.hreg52.hmath.hctype.hstdio.hstdlib.habsacc.h常用有:reg51.hreg52.h(定义特殊功能寄存器和位寄存器);math.h(定义常用数学运算);,.,二、C-51的运算符1、算术运算符+-*/%(加减乘除求余),说明:,.,+:自加运算符自减运算符,.,2.逻辑运算,将两个布尔量进行运算,结果为只有0或1的布尔量,.,3.关系运算,运算结果只有0或1的布尔量,.,4.位运算,位操作,结果还是一个数,注意与逻辑运算的区别,1),.,2).,3).,4)、,.,5)、,.,.,二、C-51流程控制,与标准C语言基本相同:if选择语言switch/case多分支选择语言while循环语言for循环语言do-while循环语言,.,1、if条件选择语句,1)、单分支语句,inta,b,max;max=a;if(maxb)max=a;elsemax=b;,.,3)、多分支语句,依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1。然后继续执行后续程序。,.,inta=10;If(a0,.,2、switch语句,switch(表达式)case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default:语句n+1;,格式,计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。,在使用switch语句时还应注意以下几点:在case后的各常量表达式的值不能相同,否则会出现错误。在case后,允许有多个语句,可以不用括起来。各case和default子句的先后顺序可以变动,而不会影响程序执行结果。default子句可以省略不用。,.,main()floata,b;charc;printf(inputexpression:a+(-,*,/)bn);scanf(%f%c%f,例子,在使用switch语句时还应注意以下几点:(1)在case后的各常量表达式的值不能相同,否则会出现错误。(2)在case后,允许有多个语句,可以不用括起来。(3)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。(4)default子句可以省略不用。,.,3、while语句,格式while(表达式)语句,while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句,作用:循环执行一段代码,.,例子:While(1)P00 xff;delay1s();P0=0 x00;delay1s();,While(1)delay1s();P0=P0;,inti=100;While(i0)delay1s();P0=P0;i-;,main()inti,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%dn,sum);,.,4、for语句,格式for(表达式1;表达式2;表达式3)语句,作用:循环执行一段代码,它的执行过程如下:1)先求解表达式1。2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步。3)求解表达式3。4)转回上面第2)步继续执行。5)循环结束,执行for语句下面的一个语句,.,Sum=0;for(i=1;i0;i-)/空语句,想想这段代码有什么用,.,附:for循环的嵌套main()inti,j,k;for(i=0;i2;i+)for(j=0;j2;j+)for(k=0;k2;k+)printf(“%d%d%dn,i,j,k);,.,、do-while语句,形式为:do语句while(表达式),作用:循环执行一段代码,这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句,.,main()inti,sum=0;i=1;dosum=sum+i;i+;while(i5?1:0;,Y输出什么值?,.,7、循环体的退出,(一)、break语句,、当break用于开关语句switch中时,可使程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国妥必来片行业投资前景及策略咨询研究报告
- 以患者为中心的医疗保险费用优化策略
- 2025年六安市金安区区属国有企业公开招聘人34名员笔试参考题库附带答案详解
- 销售2月工作总结(28篇)
- 区块链技术在金融领域的安全性应用
- 区块链在医疗信息追溯中的应用
- 办公医疗培训溶栓药物的认知与操作
- 创新型医疗器械供应链管理的未来趋势
- 静脉曲张射频消融治疗
- 2025至2031年中国大马锡行业投资前景及策略咨询研究报告
- “三个代表”重要思想
- 科技论文写作第八章(讨论部分)课件
- 水平三(五年级)体育《篮球:单手肩上投篮》说课稿课件
- 链家买卖合同 链家买卖合同标准版(五篇)
- 上肢后区、脊柱区的局部解剖与操作-人体局解剖学-课件-07
- 医用计量器具目录(含强检)
- 年产3万吨乙酸乙酯-毕业设计说明书
- 光伏电缆的敷设
- 胎心监护操作考核标准
- C#实验c-图书管理系统源代码
- 上海小学牛津英语3BM3U3-Seasons
评论
0/150
提交评论