单片机C语言基础.ppt

上传人:p** 文档编号:175866 上传时间:2023-03-21 格式:PPT 页数:45 大小:2.54MB
下载 相关 举报
单片机C语言基础.ppt_第1页
第1页 / 共45页
单片机C语言基础.ppt_第2页
第2页 / 共45页
单片机C语言基础.ppt_第3页
第3页 / 共45页
单片机C语言基础.ppt_第4页
第4页 / 共45页
单片机C语言基础.ppt_第5页
第5页 / 共45页
单片机C语言基础.ppt_第6页
第6页 / 共45页
单片机C语言基础.ppt_第7页
第7页 / 共45页
单片机C语言基础.ppt_第8页
第8页 / 共45页
单片机C语言基础.ppt_第9页
第9页 / 共45页
单片机C语言基础.ppt_第10页
第10页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机C语言基础.ppt》由会员分享,可在线阅读,更多相关《单片机C语言基础.ppt(45页珍藏版)》请在第壹文秘上搜索。

1、第二章 C51知识 C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。C C语言作为一种非常方便的语言而得到广泛语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用的支持,很多硬件开发都用C C语言编程,如:语言编程,如:各种单片机、各种单片机、DSPDSP、ARMARM等等. .C C语言程序本身不依赖于机器硬件系统,基语言程序本身不依赖于机器硬件系统,基本

2、上不作修改就可将程序从不同的单片机中本上不作修改就可将程序从不同的单片机中移植过来。移植过来。C C提供了很多数学函数并支持浮点运算,开提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可发效率高,故可缩短开发时间,增加程序可读性和可维护性。读性和可维护性。 C-51C-51的特点的特点C-51C-51与与ASM-51ASM-51相比,有如下优点:相比,有如下优点:1.1. 对单片机的指令系统不要求了解,仅对单片机的指令系统不要求了解,仅要求对要求对8051 8051 的存贮器结构有初步了解;的存贮器结构有初步了解;2.2. 寄存器分配、不同存贮器的寻址及数寄存器分配、不

3、同存贮器的寻址及数据类型等细节可由编译器管理;据类型等细节可由编译器管理;3.3. 程序有规范的结构,可分成不同的函程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;数,这种方式可使程序结构化;4.4. 提供的库包含许多标准子程序,具有提供的库包含许多标准子程序,具有较强的数据处理能力;较强的数据处理能力;5.5. 由于具有方便的模块化编程技术,使由于具有方便的模块化编程技术,使已编好程序可容易地移植;已编好程序可容易地移植;例子认识例子认识C程序程序#include sbit A5=P10 x04;int main(void) /用户代码 void delay_1s(); retu

4、rn 0; 一、主程序(程序入口) int main(void) /用户代码 return 0; 注:1、C程序模块都是以“”开头“”结尾,程序为函数主函数、子函数 2、每一行必须有结束号“;” 3、养成注释程序的习惯 “/”注释该行 “ /* -段落-*/”注解一段二、头文件(编程预处理)#include 注:定义一些通用引脚及函数注:定义一些通用引脚及函数 三、自定义函数(子函数)常用、重复引用的功能集成可用任何文本编辑软件编写,最后保存扩展名为.C的程序源文件其值可以改变的量称为变量。 一个变量应该有一个名字,在内存中占据一定的存储单元。变量应该先定义后使用。要区分变量名和变量值是两个不

5、同的概念。a=3 变量3存储值存储单元地址a注:变量名a代表地址,编译系统自动分配,用户不可见0 x40一、一、C C5151的变量类型的变量类型1 1、基本数据类型、基本数据类型类型类型符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整型整型字符型字符型实型实型有有无无(signed) int16-3276832767(signed) short16-3276832767(signed) long32-2147483648214748364716unsigned int0655353204294967295unsigned long intunsigned short int16

6、065535有有float323.4e-383.4e38有有double641.7e-3081.7e308有有char8-128127无无unsigned char802552、变量类型的定义、变量类型的定义格式格式 : 变量类型变量类型 + 变量名变量名例如: int a,b; /定义a,b为整型变更 long sheng1,sheng2;/长整型 Float c,d; /浮点(有小数) Double e,f; /双精度 char a ;/有符号字符型 Unsigned char b;无符号字符型 注:变量类型为规定的类型;变量的名称自由起,但通常要通俗,并要遵守如下规则c语言变量命名:数字

7、、字母、下划线,都可以为变量命名。做为变量名的开头不能为数字,如 3a_是错的,而a_3或_a3是正确变量名不能为关键字,像ifelseprintf 等等都不能 标准C表1标准C表2C51扩展3 3、C C5151的数据类型扩充定义的数据类型扩充定义sfr:sfr:特殊功能寄存器声明特殊功能寄存器声明sfr16:sfrsfr16:sfr的的1616位数据声明位数据声明sbit:sbit:特殊功能位声明特殊功能位声明bitbit: :位变量声明位变量声明1sfr 特殊功能寄存器。这也是C 51编译器的一种扩充数据类型,利用它可以访问8051单片机的所有内部特殊功能寄存器。sfr型数据占用一个内存

8、单元,其取值范围0255。2sfr16 16位特殊功能寄存器。它占用两个内存单元,取值范围是065535。3sbit 可寻址位。这也是C51编译器的一种扩充数据类型,利用它可以访8051单片机内部RAM中的可寻址位或特殊功能寄存器中的可寻址位。4.bit 位标量。这是位标量。这是C 51编译器的一种扩充数据类型,利用它可定义编译器的一种扩充数据类型,利用它可定义一个位标量,但一个位标量,但不能定义位指针,也不能定义位数组不能定义位指针,也不能定义位数组。 例:例:sfr SCON = 0X98;sfr SCON = 0X98; sfr16 T2 = 0 xCC; sfr16 T2 = 0 xC

9、C; sbit OV = PSW2 sbit OV = PSW24 4、数据类型修饰词、数据类型修饰词1)、data:固定指前面0 x00-0 x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小2)、code定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改,对应的还有data是存入RAM的意思。4 4、数据类型修饰词、数据类型修饰词3)、4 4、数据类型修饰词、数据类型修饰词4)、5、变量的赋值 int a,b; /定义a,b为整型变量 long sheng1,sheng2;/长整型 float c,d; /浮点(有小数) double e,f; /双精度

10、char g ;/有符号字符型 Unsigned char h;无符号字符型定义赋值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-51C-51的包含的头文件的包含的头文件通常有通常有: :reg51.h reg52.h math.h reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absacc.hctype.h stdio.h stdlib.h absacc.h常用有常用

11、有: :reg51.h reg52.hreg51.h reg52.h (定义特殊功能寄存器和位寄存器);(定义特殊功能寄存器和位寄存器); math.h math.h (定义常用数学运算);(定义常用数学运算); 二、二、C-51C-51的运算符的运算符1 1、算术运算符、算术运算符+ - + - * * / / % % (加(加 减减 乘乘 除除 求余求余 )说明:说明:+:自加运算符:自加运算符 自减运算符自减运算符2.2.逻辑运算逻辑运算将将进行运算,进行运算,结果为只有结果为只有3.3.关系运算关系运算运算结果运算结果只有只有4.4.位运算位运算位操作,注意与逻辑运算的区别1)2).3

12、).4)、5)、 二、二、C-51C-51流程控制流程控制 与标准与标准C C语言基本相同:语言基本相同: if if 选择语言选择语言 switch/case switch/case 多分支选择语言多分支选择语言 while while 循环语言循环语言 for for 循环语言循环语言 do-while do-while 循环语言循环语言 1 1、if if 条件选择语句条件选择语句1)、单分支语句 int a,b,max; max=a; if (maxb) max=a; else max=b;3)、多分支语句依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句

13、之外继续执行程序。 如果所有的表达式均为假,则执行语句n+1。然后继续执行后续程序。int a=10;If(a0 & a=2 & a-5 & a=8 & a0) delay1s(); P0=P0; i-; main() int i,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)步;若其值

14、为假(0),则结束循环,转到第5)步。3) 求解表达式3。4) 转回上面第2)步继续执行。5) 循环结束,执行for语句下面的一个语句Sum=0;for(i=1; i0; i-) /空语句,想想这段代码有什么用空语句,想想这段代码有什么用 附:for循环的嵌套main() int i, 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(表达式)作用:作用:循环循环执行一段代码执行一段代码这个循环与这个循环

15、与while循环的不同在于循环的不同在于:它先执行循环中它先执行循环中的语句的语句,然后再判断表达式是否为真然后再判断表达式是否为真, 如果为真则继如果为真则继续循环;如果为假续循环;如果为假, 则终止循环。因此则终止循环。因此, do-while循环至少要执行一次循环语句循环至少要执行一次循环语句main() int i,sum=0; i=1; do sum=sum+i; i+; while(i=100) printf(%dn,sum);例子例子6、“?”操作语句操作语句格式格式 语句1 ? 语句2:语句3:先计算语句1,若为真,则计算(输出)语句2,否则输出语句3Y输出什么值?7、循环体的退出、循环体的退出(一)、(一)、break语句语句、当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句、当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句, 通常break语句总是与if语句联在一起。即满足条件时便跳出循环。(二)、(二)、continue语句语句continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > .NET

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

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