单片机的C51编程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机的C51编程课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 C51 编程 课件
- 资源描述:
-
1、1 单片机的C51编程 第一节第一节 概述概述第二节第二节 程序的格式程序的格式第三节第三节 数据类型和存储类型数据类型和存储类型第四节第四节 运算符和表达式运算符和表达式第五节第五节 指针与函数指针与函数 第六节第六节 片内硬件资源的定义片内硬件资源的定义 第七节第七节 程序的基本结构程序的基本结构 第八节第八节 C51C51程序举例程序举例第九节第九节 WindowsWindows环境下环境下C51C51编译器的操作编译器的操作l-2 本章要点 介绍C语言的基础知识。掌握C语言程序的基本结构,学会编制一些简单的单片机应用程序,并能在Windows环境下使用C51编译器进行编译操作。了解C5
2、1编译器与标准C语言在存储模式、片内硬件资源使用等方面的差别。l-3 第一节 概述随着开发工具及集成电路技术的发展,在开发大型的单片机应用系统时,使用高级语言更加有利专门针对8051系列单片机开发出来的C51编译器(简称C51)可编译生成能够在 8051系列单片机上运行的目标程序。目前针对8051系列单片机开发出来的编译器有多种,包括Franklin C51、Keil C51 for windows等l-4 第二节 程序的格式 先从几个实例,了解C语言的程序格式。例9-1 能输出“Welcome to use C51”的C语言程序#include“stdioh”main()printf(“We
3、lcome to use C51 n”);其中main()为主函数,printf为输出函数,stdio.h为头文件,执行这个程序的目的,是在屏幕上输出以下一行信息:Welcome to use C51 l-5 例9-2 求三个数a、b、c的和。#include“stdioh”main()*主函数*int a,b,c,sum;*定义变量*a=12;b=34;c=56;*给变量赋值*sum=a+b+c;*求和*printf(“sum is dn”,sum);*显示结果*执行以上程序,可在屏幕上输出a、b、c的和,并显示:sum is 102l-6 例9-3 从输入的两个数a,b中,求出较大的数的程
4、序。#include“stdioh”int max(int x,int y)*定义max函数,函数返回 值为整型;x,y为形式参 数,整型*int z;if(xy)z=x;else z=y;return(z);*将z的值返回到调用 处*l-7 main()*主函数*int a,b,m;*定义三个整型变量*scanf(“d,d,”&a,&b);*输入变量a和b的值*m=max(a,b);*调用max函数,将返回值m*printf(“max=%d”,m);*输出m的值*程序执行结果是在输入a,b值后,可求出较大的数并赋予变量m。如输入a=3,b=5,则执行结果可显示出 m=5。l-8 从三个例子可
5、看出C语言或C51源程序的基本格式有如下特点:1.C语言程序的书写格式比较自由,一行可以写若干条语句,一个语句也可以写成几行,不管一行写几个语句,每个语句须以“;”结尾。2.程序由一个主函数和若干个其他函数组成,主函数的名字必须为main。程序的执行总是从main函数开始的,其位置无特殊规定。3.C语言程序通过函数调用去执行指定的工作。源程序文件需要包含其他源程序文件的内容时,则要在本程序文件头部用包含命令#include进行“文件包含”处理。l-9 第三节 数据类型和存储类型 一、数据类型 C语言中的数据分为常量和变量,不论常量还是和变量都有几种不同类型,不同类型的数据占用的存储长度不同。1
6、.1.常量和符号常量的类型常量和符号常量的类型 常量指程序运行时其值不能被改变的量,常量可以用一个标识符表示,并称为符号常量。C语言中的常量分为如下几种类型:整型、实型、字符、字符串l-102.2.变量类型变量类型变量名称符号类型数据长度值域范围位型量bit1位0,1字符型有符号signed char 8位-128+127无符号unsigned char8位0255整数型有符号signed int16位-32768+32767无符号unsigned int16位065535长整型有符号signed long32位-231231-1无符号unsigned long32位0232-1浮点型floa
7、t32位3.4E-383.4E+38指针型指针824?对象地址特殊位型sbit10或18位特殊功能寄存器型sfr8025516位特殊功能寄存器型sfr1616065535表 C51变量类型l-11 二、存储类型二、存储类型 存储类型是指该数据在单片机系统中存放的位置,也就是数据的定位方式。存储类型 与存储空间的对应关系 data 直接寻址片内数据存储区,访问速度快(128字节)bdata 可位寻址片内数据存储区,允许位与字节混合访问(16字节)idata 间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)pdata 分页寻址片外数据存储区(256字节)由MOVX R0,A指令访
8、问 xdata 片外数据存储区(64K),由MOVX DPTR,A指令访问 code 代码存储区(64K),由MOVC A,A+DPTR指令访问 表 C51存储类型l-12 C51中定义变量除了定义数据类型外,还应中定义变量除了定义数据类型外,还应定义存储类型定义存储类型例:int data x,y;表示变量x,y 为16位整数并指定存储在片内数据存储区。1.若未定义存储类型,则C51编译器自动选择默认存储类型如下表:存储模式 默认的存储类型 SMALL 默认的存储类型为data,最大为128字节 COMPACT 默认的存储类型为pdata,每页256字节 LARGE 默认的存储类型为xdat
9、a,最大为64K l-13 2.选择变量类型时应尽量选用无符号型,可以减少测试符号的额外操作,可以提高代码效率。3.为使编程时书写简化,数据类型允许用缩写。例:#define uchar uchar unsigned char#define ulong ulong unsigned longl-14 第四节 运算符和表达式 一、算术运算符及其表达式一、算术运算符及其表达式 1.C1.C语言的基本算术运算符语言的基本算术运算符 算术运算符有+、-、*、/、%(%为模运算符,或称求余运算符)。用算术运算符或圆括号将运算对象包括常量、变量、函数、数组等连接起来,形成符合C 语法规则的式子称为算术表达
10、式。如:a*(b-c)+2.3+al-15 2.2.算术运算符的优先级算术运算符的优先级 先乘除模,后加减,括号最优先。3.3.算术运算符的结合性算术运算符的结合性 “自左至右”,即运算对象两侧的算术运算符优先级相同时,先与左边运算符结合。4.4.数据类型不同时的转换数据类型不同时的转换 如果运算符两侧的数据类型不同,则必须转换成同一类型,再进行运算。转换方式有自动转换(默认)和强制转换。强制转换的形式为:类型名)表达式);例例:(double)x;(将x强制转换成double型)注:注:强制转换只转换表达式的值,变量类型不变。l-16 二、关系运算符及其表达式二、关系运算符及其表达式 1.1
11、.六种关系运算符六种关系运算符 (大于)=(大于或等于)=、=、b,因ab的值为“假”,所以x的值为0。b=(a+c)的值为“假”,表达式的值为0;cb的值为“真”,表达式的值为1;l-18 三、逻辑运算符及其表达式三、逻辑运算符及其表达式 1.1.三种三种逻辑运算符逻辑运算符&逻辑与 (两个操作数都为真时,结果才为真,否则 为假。)逻辑或 (只要两个操作数中有一个为真,结果便为 真,否则为假。)!逻辑非 (对操作数的值取反。)&和 要求有两个操作对象,而!是单目运算符,只要求有一个运算对象。l-19 2.2.逻辑运算符的优先级逻辑运算符的优先级 优先顺序为!(非)算术运算符 关系运算符&和。
12、最低为赋值运算符。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&b为0 l-20 四、位操作运算符及其表达式四、位操作运算符及其表达式&按位与 按位或 按位异或 按位取反 位右移 除运算符外,其余位操作运算符都是两目运算符。位运算符操作的对象只能是整型或字符型数据。l-21 1按位与&参与运算的两操作数,只有双方相应的位都为1,结果值中该位为1,否则为0。即 O&O=O,O&
13、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=00110010l-22 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=0
14、0111111B,求a 的值。a=11000000Bl-23 5.5.位左移和位右移位左移和位右移 移位运算时,将左操作数的各二进制位全部左(右)移若干位,所移位数由右操作数决定。移位后留出的空白位补0,溢出的位舍弃。例:a=Ox3E,求a2的值。求得 00001111 即0 x0Fl-24 五、自增减运算符及其表达式五、自增减运算符及其表达式 作用:使变量的值增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
15、=6,j=6)l-25 六、复合运算符及其表达式六、复合运算符及其表达式 C语言中的两目运算符都可以和赋值运算符“=”一起组成复合赋值运算符。使用的复合赋值运算符有以下10种:+=,-=,+=,-=,*=,/=,%=,=,/=,%=,=,&=,=,&=,=,=,=例如 a+=2 等价于 a=a+2。m*=n+1 等价于 m=m*(n+1)。l-26 七、对指针操作的运算符七、对指针操作的运算符&取地址运算符*取内容运算符&可作为取地址运算符,又可作为按位与,若为按位与“&”的两边必须有操作对象。*可作为取内容运算符,还可作为指针变量的标志,但作为指针变量标志时,一定出现在对指针定义中。l-27
16、 第五节 指针与函数 一、指针与指针变量一、指针与指针变量 变量名对应于内存单元的地址,变量值则是放在内存单元中的数据。同时把存放变量x的地址称为指针,使用指针前也必须定义。指针的定义为:char*xpdata char*xp l-28 定义指针与指针变量的注意点 1.指针变量名前面冠以“*”号,如上例*xp,表示xp为指针。2.定义时,应包括被指变量的数据类型、存储类型以及指针变量本身的存储类型。指针变量本身的存储类型,写在语句的开头,或者在*号与变量名之间。3.如果只标明被指变量的数据类型和存储类型,而没有指明指针变量本身的存储类型,则指针变量本身被默认为通用型。l-29 指针与指针变量的
17、定义举例指针与指针变量的定义举例 例:定义一字符变量x,并赋值为6。char data xx=6 例:定义一指针xp,指向x所在的内存单元 data char data*xp或者 char data*data xpxp=&x 定义后要访问x可以用两种办法:1)直接访问,如printf(“d”,x)。2)间接访问,如printf(“d”,*xp)。l-30 二、函数二、函数C51程序是由一个主函数和若干个其他函数所构成,程序中由主函数调用其他函数,其他函数也可以互相调用。主函数其他函数标准库函数自定义函数无参数函数有参数函数程序l-31 1 1无参数函数的定义形式无参数函数的定义形式 类型标识符
18、 函数名()函数体语句 类型标识符用来指定函数返回值的类型。无参数函数一般不带返回值,可以不写类型标识符。例:dis()printf(“okn”);函数名函数体语句l-32 2 2有参数函数的定义形式有参数函数的定义形式 类型标识符 函数名(参数列表及说明)函数体语句例:intmax(int x,int y)int z;/*函数体语句*if(xy)z=x;elsez=y;return(z);类型标识符函数名参数列表及说明l-33 3 3中断处理函数的定义形式中断处理函数的定义形式 void 函数名(void)interrupt n(using m)函数体语句例:void Timer0(void
19、)interrupt 1 using 3 /*函数体*注意:(1)中断函数没有返回值 (2)中断函数不能传递参数 (3)中断函数中调用其他函数,要保证使用 同一个寄存器组 (4)中断处理程序要尽可能短l-34 第六节 片内硬件资源的定义 一、特殊功能寄存器的定义一、特殊功能寄存器的定义 8051系列单片机的片内有21个特殊功能寄存器(简称SFR),地址分散在片内RAM的高端128字节地址80H-0FFH范围内,其中有11个寄存器具有位寻址能力。在C51中使用这些寄存器必须事先予以定义,定义后便可直接访问。l-35 1.1.用用sfrsfr定义字节型特殊功能寄存器的标志符定义字节型特殊功能寄存器
展开阅读全文