单片机c51编程.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《单片机c51编程.ppt》由会员分享,可在线阅读,更多相关《单片机c51编程.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第九章 单片机的C51编程 第一节第一节 概述概述第二节第二节 程序的格式程序的格式第三节第三节 数据类型和存储类型数据类型和存储类型第四节第四节 运算符和表达式运算符和表达式第五节第五节 指针与函数指针与函数 第六节第六节 片内硬件资源的定义片内硬件资源的定义 第七节第七节 程序的基本结构程序的基本结构 第八节第八节 C51程序举例程序举例第九节第九节 Windows环境下环境下C51编译器的操作编译器的操作本章要点 介绍C语言的基础知识。掌握C语言程序的基本结构,学会编制一些简单的单片机应用程序,并能在Windows环境下使用C51编译器进行编译操作。由于8051单片机的应用程序用的是C5
2、1编译器,了解应注意在存储类型、对片内硬件资源的定义等方面与标准C语言的区别。第一节 概述 随着开发工具及集成电路技术的发展,单片机开始使用高级语言。专门针对8051系列单片机开发出来的C51编译器(简称C51)可编译生成能够在 8051系列单片机上运行的目标程序。目前针对8051系列单片机开发出来的编译器有多种,包括Franklin C51、Keil C51 for windows等。返回本章首页第二节 程序的格式 先从几个实例,了解C语言的程序格式。例9-1#include“stdioh”main()printf(“Welcome to using C51 n”);执行结果在屏幕上输出以下
3、一行信息:Welcome to using C51 其中main()为函数,printf为函数,stdio.h为文件例9-2#include“stdioh”main()*主函数*int a,b,c,sum;*定义变量*a=12;b=34;c=56;*给变量赋值*sum=a十b十c;*求和*printf(“sum is dn”,sum);*显示结果*执行结果在屏幕上输出:sum is 102例9-3#include“stdioh”int max(int x,int y)*定义max函数,函数返回值为整型;x,y为形式参数,整型*int z;if(xy)z=x;else z=y;return(z)
4、;*将z的值返回到调用处*main()*主函数*int a,b,m;*定义三个整型变量*scanf(“d,d,”&a,&b);*输入变量a和b的值*m=max(a,b);*调用max函数,将返回值赋给m*printf(“max=%d”,m);*输出m的值*从三个例子可看出C语言或C51源程序的基本格式:1.书写格式自由,一行可以写若干条语句,一个语句也可以写成几行,每个语句须以“;”结尾。2.程序由一个主函数和若干个其他函数组成,主函数的名字必须为main。程序的执行总是从main函数开始的,其位置无特殊规定。3.C语言程序通过函数调用去执行指定的工作。源程序文件需要包含其他源程序文件的内容时
5、,则要在本程序文件头部用包含命令#include进行“文件包含”处理。返回本章首页第三节 数据类型和存储类型 一、数据类型 不同类型的数据占用的存储长度不同 数据分为常量和变量1.常量和符号常量 常量指程序运行时其值不能被改变的量符号常量是代表一个常量的标识符 常量类型:整型、实型、字符、字符串2.2.变量类型变量类型变量名称符号类型数据长度值域范围位型量bit1位0,1字符型有符号signed char 8位-128+127无符号unsigned char8位-32768+32767整数型有符号signed int16位0255无符号unsigned int16位065535长整型有符号si
6、gned long32位-231232-1无符号unsigned long32位232-1浮点型float32位3.4E-383.4E+38指针型指针824对象地址特殊位型sbit10或18位特殊功能寄存器型sfr8025516位特殊功能寄存器型sfr1616065535表 C51变量类型二、存储类型二、存储类型存储类型 与存储空间的对应关系 data 直接寻址片内数据存储区,访问速度快(128字节)bdata 可位寻址片内数据存储区,允许位与字节混合访问(16字节)idata 间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)pdata 分页寻址片外数据存储区(256字节)由
7、MOVX R0,A指令访问 xdata 片外数据存储区(64K),由MOVX DPTR,A指令访问 code 代码存储区(64K),由MOVC A,A+DPTR指令访问 表 C51存储类型表 C51存储类型及其大小存储类型 长度(位)长度(字节)值域,范围 data 81O255(8bit即OOH0FFH)bdata 1idata 81O255(8bit即OOH0FFH)pdata 81O255(8bit 即OOH0FFH)xdata 162O65535(16bit 即0000H0FFFFH)code 162065535(16bit即0000H0FFFFH)C51中定义变量除了定义数据类型外,
8、还应中定义变量除了定义数据类型外,还应定义存储类型定义存储类型例:int data x,y;表示x,y 为16位整数并指定放在片内数据存储区1.若未定义存储类型,则C51编译器自动选择默认存储类型存储模式 默认的存储类型 SMALL 默认的存储类型为data,最大为128字节 COMPACT 默认的存储类型为pdata,每页256字节 LARGE 默认的存储类型为xdata,最大为64K 2.选择变量类型时应尽量选用无符号型,可以减少测试符号的额外操作,可以提高代码效率。3.为使编程时书写简化,数据类型允许用缩写 例:#define ucharuchar unsigned char#defin
9、e ulongulong unsigned long返回本章首页第四节 运算符和表达式 一、算术运算符及其表达式一、算术运算符及其表达式 1.C1.C语言的基本算术运算符语言的基本算术运算符 算术运算符有+、-、*、/、%(%为模运算符,或称求余运算符)用算术运算符和圆括号将运算对象包括常量、变量、函数、数组等连接起来,形成符合C 语法规则的式子称为算术表达式。如:a*(b-c)+2.3+a 2.2.算术运算符的优先级算术运算符的优先级 先乘除模,后加减,括号最优先。3.3.算术运算符的结合性算术运算符的结合性 “自左至右”,即运算对象两侧的算术运算符优先级相同时,先与左边运算符结合。4.4.
10、数据类型不同时的转换数据类型不同时的转换 如果运算符两侧的数据类型不同,则必须转换成同一类型,再进行运算。转换方式有自动转换(默认)和强制转换。强制转换的形式为(类型名)(表达式);例例:(double)x;(将x强制转换成double型)注:注:只转换表达式的值,变量类型不变。二、关系运算符及其表达式二、关系运算符及其表达式 1.1.六种关系运算符六种关系运算符 (大于)=(大于或等于)=、=、b,因ab的值为“假”,所以x的值为0b=(a+c)的值为“假”,表达式的值为0;cb的值为“真”,表达式的值为1;三、逻辑运算符及其表达式三、逻辑运算符及其表达式 1.1.三种三种逻辑逻辑运算符运算
11、符&逻辑与 (两个操作数都为真时,结果才为真,否则 为假)逻辑或 (只要两个操作数中有一个为真,结果便为 真,否则为假)!逻辑非 (对操作数的值取反)&和 要求有两个操作对象,而!是单目运算符,只要求有一个运算对象。2.2.逻辑运算符的优先级逻辑运算符的优先级 优先顺序为!(非)-算术运算符-关系 运算符-&和,最低为赋值运算符。3.3.逻辑表达式逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子称为逻辑表达式。逻辑表达式的值只能是0(假)或1(真)。例:已知a=2,b=3,求!a、a&b、!a&b!a为0(假)a=2非0故为假a&b为1(真)!a&b 为0(假)先执行!a为0故!a&
12、b为0 四、位操作运算符及其表达式四、位操作运算符及其表达式&按位与 按位或 按位异或 按位取反 位右移 除运算符外,其余位操作运算符都是两目运算符。位运算符操作的对象只能是整型或字符型数据。1 1按位与按位与&参与运算的两操作数,只有双方相应的位都为1,结果值中该位为1,否则为0。即 O&O=O,O&l=0,l&O=0,l&l=l 例:a=0 x31,b=0 x56,求ab的值 ab=01110111B2 2按位或按位或 参与运算的两操作数只要双方相应的位中有1,其结果该位便为1,否则为0。即O O=O,O l=1,l O=1,l l=l例:a=0 x37,b=Ox7A求a&b的值。a&b=
13、00110010 3 3按位取反按位取反 对操作数按位取反,即0变l,1变0 例:a=0 x31,b=0 x56,求ab的值 ab=01100111B 4 4按位异或按位异或 参与运算的两操作数,如果对应位的值不同,运算结果该位为1,否则为0。即OO=O,Ol=1,lO=1,ll=0例:a=0 x3FH=00111111B,求a 的值a=11000000B 5.5.位左移和位右移位左移和位右移 移位运算时,将左操作数的各二进制位全部左(右)移若干位,所移位数由右操作数决定。移位后留出的空白位补0,溢出的位舍弃。例:a=Ox3E,求a2的值求得 00001111 即0X0F 五、自增减运算符及其
14、表达式五、自增减运算符及其表达式 作用:使变量的值增1或减l,如:+i i (使用i之前,先使i值增1)-i i (使用i之前,先使i值减1)i+i+(在使用i之后,使i值增l)i-i-(在使用i之后,使i值减1)例:若i=5 则j=i+;(执行后i=6,j=?)j=+i;(I=6,j=6)六、复合运算符及其表达式六、复合运算符及其表达式 C语言中的两目运算符都可以和赋值运算符“=”一起组成复合赋值运算符。使用的复合赋值运算符有以下10种:+=,-=,*=,/=,%=,+=,-=,*=,/=,%=,=,&=,=,&=,=,=,=例如 a+=2 等价于 a=a+2 m*=n+1 等价于 m=m*
15、(n+1)七、对指针操作的运算符七、对指针操作的运算符&取地址运算符*取内容运算符&又能用于按位与,此时“&”的两边 必须有操作对象。*还可作为指针变量的标志,但此时 一定出现在对指针定义中。返回本章首页第五节 指针与函数 一、指针与指针变量一、指针与指针变量 变量名对应于内存单元的地址,变量值则是放在内存单元中的数据。同时把存放变量x的地址称为指针,使用指针前也必须定义。指针的定义:char xdata*dataxp 也可以写成 data char xdata*xp 指针与指针变量的使用指针与指针变量的使用 1.指针变量名前面冠以“*”号,如上例*xp,表示xp为指针。2.定义时,应包括被指
16、变量的数据类型、存储类型以及指针变量本身的存储类型。指针变量本身的存储类型,写在语句的开头,或者在*号与变量名之间。3.如果只标明被指变量的数据类型和存储类型,而没有指明指针变量本身的存储类型,则指针变量本身被默认为通用型。指针与指针变量的使用举例指针与指针变量的使用举例 例:定义一字符变量x,并赋值为6char data xx=6 例:定义一指针xp,指向x所在的内存单元char data*dataxpxp=&x 定义后要访问x可以用两种办法:1)直接访问,如printf(“d”,x)2)间接访问,如printf(“d”,*xp)二、函数二、函数C51程序是由一个主函数和若干个其他函数所构成
17、,程序中由主函数调用其他函数,其他函数也可以互相调用。主函数其他函数标准库函数自定义函数无参数函数有参数函数程序 1 1无参数函数的定义形式无参数函数的定义形式 类型标识符 函数名()函数体语句 类型标识符用来指定函数返回值的类型。无参数函数一般不带返回值,可以不写类型标识符。例:dis()printf(“okn”);2 2有参数函数的定义形式有参数函数的定义形式 类型标识符 函数名(参数列表及说明)函数体语句例:intmax(int x,int y)int z;/*函数体语句*if(xy)z=x;elsez=y;return(z);返回本章首页第六节 片内硬件资源的定义 一、特殊功能寄存器的
18、定义一、特殊功能寄存器的定义 8051系列单片机的片内有21个特殊功能寄存器(简称SFR),地址分散在片内RAM的高端128字节地址80H-0FFH范围内,其中有11个寄存器具有位寻址能力。在C51中使用这些寄存器必须事先予以定义,定义后便可直接访问。1.1.用用sfrsfr定义字节型特殊功能寄存器的标志符定义字节型特殊功能寄存器的标志符 例如:sfr P0=0X80 sfrPCON=0X87 sfrTMOD=0X89 sfrPSW=0XD0 sfrP1=0X90 sfrTCON=0X88 sfrSCON=0X98 这些符号已在文件reg51.h中被定义如果使用#include“reg51.h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 c51 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内