单片机第4章c51编程课件.ppt
《单片机第4章c51编程课件.ppt》由会员分享,可在线阅读,更多相关《单片机第4章c51编程课件.ppt(111页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4 4章章 单片机的单片机的C C语言编程语言编程4.1 C514.1 C51的程序结构的程序结构4.2 C514.2 C51的数据类型及运算符的数据类型及运算符4.3 C514.3 C51的函数的函数4.4 C514.4 C51本章要点本章要点 介绍介绍C C语言的基础知识。语言的基础知识。掌握掌握C C语言程序的基本结构,学会编制一些简单的单片机应语言程序的基本结构,学会编制一些简单的单片机应用序,并能在用序,并能在WindowsWindows环境下使用环境下使用C51C51编译器进行编译操作。编译器进行编译操作。由于由于80518051单片机的应用程序用的是单片机的应用程序用的是C5
2、1C51编译器,应注意在存编译器,应注意在存储类型、对片内硬件资源的定义等方面与标准储类型、对片内硬件资源的定义等方面与标准C C语言的区别。语言的区别。概述概述 单片机单片机C51C51语言是由语言是由C C语言继承而来的。语言继承而来的。和和C C语言不同的是,语言不同的是,C51C51语言运行于单片机平台,而语言运行于单片机平台,而C C语言语言则运行于普通的桌面平台。则运行于普通的桌面平台。C51C51语言具有语言具有C C语言结构清晰的优点,便于学习,同时具有语言结构清晰的优点,便于学习,同时具有汇编语言的硬件操作能力。汇编语言的硬件操作能力。对于具有对于具有C C语言编程基础的读者
3、,能够轻松地掌握单片机语言编程基础的读者,能够轻松地掌握单片机C51C51语言的程序设计。语言的程序设计。4.1 C514.1 C51的程序结构的程序结构 C51C51程序结构同程序结构同ANSI CANSI C一样,必须有一个主函数一样,必须有一个主函数main()main(),从主函数,从主函数mainmain()()开始执行程序,默认情况下主函数是一个开始执行程序,默认情况下主函数是一个“死循环死循环”结构,不停地结构,不停地循环执行。循环执行。例:例:C51C51程序基本结构程序基本结构在此处定义全局变量在此处定义全局变量;/所有函数都可以使用所有函数都可以使用void main()/
4、*void main()/*定义主函数定义主函数*/在此处定义局部变量在此处定义局部变量;/;/只能在本函数范围内使用只能在本函数范围内使用 bgn:bgn:goto bgn;goto bgn;用用“/”/”符号开头来注释一行,如符号开头来注释一行,如“/变量声明变量声明”。用用“/*”/*”符号开头,并以符号开头,并以“*“*/”/”符号结束。采用这种方法,可以对符号结束。采用这种方法,可以对C51C51源程序中的任何部分进行注释,如源程序中的任何部分进行注释,如“/*/*声明整型变量声明整型变量count count*/”*/”。一、注释说明一、注释说明返回返回返回返回 库函数是编译系统系
5、统的标准函数。在使用时,只需在源程序的库函数是编译系统系统的标准函数。在使用时,只需在源程序的开始处使用预处理命令开始处使用预处理命令#include#include将有关的头文件包含进来即可。将有关的头文件包含进来即可。下面便介绍下面便介绍C51C51常用库函数。常用库函数。n本证库函数本证库函数 n直接访问存储区宏定义直接访问存储区宏定义 n字符串操作库函数字符串操作库函数 n字符转换和字符分类库函数字符转换和字符分类库函数 n数学库函数数学库函数 n输入输出库函数输入输出库函数 二、头文件包含命令二、头文件包含命令格式:格式:#include#include (一)、本征库函数(一)、本
6、征库函数 头文件头文件intrins.h_crol_crol_,_cror_cror_:将将charchar型变量循环向左(右)移动指定位数后返回。型变量循环向左(右)移动指定位数后返回。_iror_iror_,_irol_irol_:将将intint型变量循环向左(右)移动指定位数后返回。型变量循环向左(右)移动指定位数后返回。_lrol_lrol_,_lror_lror_:将将longlong型变量循环向左(右)移动指定位数后返回。型变量循环向左(右)移动指定位数后返回。_nop_nop_:相当于插入汇编指令相当于插入汇编指令NOPNOP。_testbit_testbit_:相当于相当于J
7、BC bitvarJBC bitvar测试该位变量并跳转同时清除。测试该位变量并跳转同时清除。_chkfloat_chkfloat_:测试并返回源点数状态。测试并返回源点数状态。(二)、直接访问存储区的宏定义(二)、直接访问存储区的宏定义 C51C51编译器提供了一组宏定义来对编译器提供了一组宏定义来对5151系列单片机的系列单片机的codecode、datadata、pdatapdata和和xdataxdata空间进行绝对寻址。规定只能以无符号数方式访问,定空间进行绝对寻址。规定只能以无符号数方式访问,定义了义了8 8个宏定义:个宏定义:CBYTECBYTE以字节形式对以字节形式对codec
8、ode区寻址,区寻址,DBYTEDBYTE以字节形式对以字节形式对datadata区寻址区寻址 PBYTEPBYTE以字节形式对以字节形式对pdatapdata区寻址,区寻址,XBYTEXBYTE以字节形式对以字节形式对xdataxdata区寻址,区寻址,CWORDCWORD以字形式对以字形式对codecode区寻址,区寻址,DWORDDWORD以字形式对以字形式对datadata区寻址,区寻址,PWORDPWORD以字形式对以字形式对pdatapdata区寻址,区寻址,XWORDXWORD以字形式对以字形式对xdataxdata区寻址。区寻址。这些函数原型放在这些函数原型放在absacc.h
9、absacc.h文件中。使用时须用预处理命令把文件中。使用时须用预处理命令把该头文件包含到文件中,形式为:该头文件包含到文件中,形式为:#include#include 。访问形式如下:访问形式如下:宏名宏名 地址地址 宏名为宏名为CBYTECBYTE、DBYTEDBYTE、PBYTEPBYTE、XBYTEXBYTE、CWORDCWORD、DWORDDWORD、PWORDPWORD或或XWORDXWORD。地址为存储单元的绝对地址,一般用十六进制形式表示。地址为存储单元的绝对地址,一般用十六进制形式表示。注意:注意:CWORDCWORD、DWORDDWORD、PWORDPWORD和和XWORD
10、XWORD地址地址 中的地址不是所访问中的地址不是所访问存储单元的实际地址,所访问存储单元的地址存储单元的实际地址,所访问存储单元的地址=2*=2*地址,地址,WORDWORD类类型为两个字节型为两个字节 (三)、字符串操作(三)、字符串操作 头文件头文件string.hstring.h,包括字符串比较、连接、复制、统计字符串,包括字符串比较、连接、复制、统计字符串长度、查找定位字符等功能函数等。长度、查找定位字符等功能函数等。(四)、字符转换和字符分类(四)、字符转换和字符分类 头文件头文件stype.h,包括判断类别,如:,包括判断类别,如:isdigit,islower和和isupper
11、等等功能函数等。功能函数等。#include“ctype.h”#include“ctype.h”Void main()Void main()Char c,cupp;Char c,cupp;Bit i;Bit i;c=h;c=h;/执行后执行后c=0 x86c=0 x86 i=isdigit(c)i=isdigit(c);/执行后执行后i=0;i=0;cupp=_toupper(c);cupp=_toupper(c);/执行后执行后 cupp=0 x48,cupp=0 x48,即即HH的的ASCIIASCII码码#include“math.h”#include“math.h”Void main(
12、)Void main()int x,y;int x,y;flaot z;flaot z;Begin:x=-100;Begin:x=-100;y=abs(x)y=abs(x);/执行后执行后y=100;y=100;z=log10(y);z=log10(y);/执行后执行后 z=2z=2Goto begin;Goto begin;三、宏定义三、宏定义宏定义语句属于宏定义语句属于C51C51语言的预处理命令,使用宏定义可以使变量的书写语言的预处理命令,使用宏定义可以使变量的书写简化,增加程序的可读性、可维护性和可移植性。简化,增加程序的可读性、可维护性和可移植性。简单的宏定义格式如下:简单的宏定义格
13、式如下:#define#define 宏替换名宏替换名 宏替换体宏替换体例如:例如:#define uchar unsigned char#define uchar unsigned char在编译时可由在编译时可由C51C51编译器把编译器把“unsigned char”unsigned char”用用“uchar”uchar”来替代来替代返回返回返回返回 变量变量在程序运行中其值可以改变的量。在程序运行中其值可以改变的量。一个变量由变量名和变量值构成,变量名即是存贮单元地址一个变量由变量名和变量值构成,变量名即是存贮单元地址的符号表示,而变量的值就是该单元存放的内容。定义一个变量,的符号表
14、示,而变量的值就是该单元存放的内容。定义一个变量,编译系统就会自动为它安排一个存贮单元,具体的地址值用户不编译系统就会自动为它安排一个存贮单元,具体的地址值用户不必在意。必在意。变量的定义的一般格式为变量的定义的一般格式为 数据类型数据类型 存储类型存储类型 变量名变量名 C51C51中定义变量除了定义数据类型外,还应定义存储类型中定义变量除了定义数据类型外,还应定义存储类型 例:例:int data x,y;int data x,y;表示表示x,y x,y 为为1616位整数并指定放位整数并指定放在片内数据存储区在片内数据存储区四、全局变量与局部变量定义四、全局变量与局部变量定义intint
15、i,j;i,j;/整型变量整型变量charcharch;ch;/字符型变量字符型变量short int short int shi;shi;/短整型变量短整型变量unsigned int unsigned int ut;ut;/无符号整型变量无符号整型变量float float fset,st;fset,st;/浮点型变量浮点型变量1、数据类型数据类型 C51编译器兼容编译器兼容ANSI C,支持,支持ANSI C的基本数据类型,并对的基本数据类型,并对数据类型进行了扩展数据类型进行了扩展 (1)C51支持的支持的ANSI C数据类型数据类型变量名称变量名称符号符号类型类型数据长度数据长度值域
16、范围值域范围位型量位型量bit1位位0,1字符型字符型有符号有符号signed char 8位位-128+127无符号无符号unsigned char8位位0255整数型整数型有符号有符号signed int16位位-32768+32767无符号无符号unsigned int16位位065535长整型长整型有符号有符号signed long32位位-231231-1无符号无符号unsigned long32位位232-1浮点型浮点型float32位位3.4E-383.4E+38 sfr16sfr16 变量可以访问指定地址的变量可以访问指定地址的1616位位SFRSFR 格式:格式:sfr16
17、sfr16 变量名变量名=变量地址变量地址 变量地址为变量地址为1616位特殊功能寄存器的低位特殊功能寄存器的低8 8位地址。位地址。例如:例如:sfr16 T2=0XCC;sfr16 T2=0XCC;sfr T2-L=0XCC;sfr T2-L=0XCC;sfr T2-H=0XCD;sfr T2-H=0XCD;定义定义sfr16sfr16和和sfrsfr类型的变量用于访问单片机定时器类型的变量用于访问单片机定时器2 2的的1616位位计数寄存器计数寄存器 sbitsbit 变量可以访问可位寻址的变量可以访问可位寻址的SFRSFR中的某一位中的某一位 格式:格式:sbitsbit变量名变量名=
18、位地址位地址 sbitsbit变量名变量名=SFR=SFR地址地址 位序号位序号 sbitsbit变量名变量名=Sfr=Sfr变量变量 位序号位序号 sbitsbit变量名变量名=Sfr16=Sfr16变量变量 位序号位序号 例如:例如:sfr P0=0X80;sfr P0=0X80;sbit P0-0=0X80;sbit P0-0=0X80;sbit sbit P0-1=P01P0-1=P012 2、存储类型、存储类型 (1 1)程序存储器程序存储器 如某变量需要存放在程序存储器中,定义时用存储类型标识符如某变量需要存放在程序存储器中,定义时用存储类型标识符codecode,程序运行中不可以
19、改变用,程序运行中不可以改变用codecode定义的变量的值定义的变量的值 (2 2)数据存储器)数据存储器 内部数据存储器内部数据存储器 DataData:片内数据存储区的低:片内数据存储区的低128128字节中,直接寻址,访问速度快字节中,直接寻址,访问速度快 bdata bdata:可位寻址片内数据存储区,允许位与字节混合访问:可位寻址片内数据存储区,允许位与字节混合访问(16(16字节字节),必须定义为全部变量,必须定义为全部变量 idata idata:片内数据存储区整个(:片内数据存储区整个(256256字节)字节),间接访问,间接访问存储类型存储类型 与存储空间的对应关系与存储空
20、间的对应关系 data data 直接寻址片内数据存储区,访问速度快直接寻址片内数据存储区,访问速度快(128(128字节字节)bdata bdata 可位寻址片内数据存储区,允许位与字节混合访问可位寻址片内数据存储区,允许位与字节混合访问(16(16字节字节)idata idata 间接寻址片内数据存储区,可访问片内全部间接寻址片内数据存储区,可访问片内全部RAMRAM地址空间地址空间(256256字节)字节)pdata pdata 分页寻址片外数据存储区分页寻址片外数据存储区(256(256字节字节)由由MOVX R0MOVX R0,A A指令访指令访问问 xdata xdata 片外数据
21、存储区片外数据存储区(64(64K)K),由,由MOVX DPTRMOVX DPTR,A A指令访问指令访问 code code 代码存储区代码存储区(64(64K)K),由,由MOVC A,A+DPTRMOVC A,A+DPTR指令访问指令访问 表表 C51C51存储类型存储类型存储模式存储模式 默认的存储类型默认的存储类型 SMALL SMALL 默认的存储类型为默认的存储类型为datadata,最大为,最大为128128字节字节 COMPACT COMPACT 默认的存储类型为默认的存储类型为pdatapdata,每页,每页256256字节字节 LARGE LARGE 默认的存储类型为默
22、认的存储类型为xdataxdata,最大为,最大为6464K K 3 3、存储模式存储模式 小模式,紧凑模式,大模式小模式,紧凑模式,大模式 变量若未定义存储类型,则变量若未定义存储类型,则C51C51编译器自动选择默认存储类型编译器自动选择默认存储类型返回返回返回返回六、局部变量定义六、局部变量定义局部变量的定义与全局变量定义的格式是一样的,区别在于定义的位置不同局部变量的定义与全局变量定义的格式是一样的,区别在于定义的位置不同全局变量定义放在全局变量定义放在mainmain函数前面。函数前面。局部变量定义放在相应的函数里面。局部变量定义放在相应的函数里面。返回返回返回返回1 1、赋值运算符
23、、赋值运算符 赋值运算符赋值运算符“=”=”格式如下:变量格式如下:变量=表达式;表达式;执行时先计算出右边表达式的值,然后赋给左边的变量。执行时先计算出右边表达式的值,然后赋给左边的变量。例如:例如:x=0 xFFx=0 xFF;/*/*将将8+98+9的值赋绐变量的值赋绐变量x*/x*/x=y=5 x=y=5;/*/*将常数将常数5 5同时赋给变量同时赋给变量x x和和y*/y*/在在C51C51中,允许在一个语句中同时给多个变量赋值,赋值顺序自中,允许在一个语句中同时给多个变量赋值,赋值顺序自右向左。右向左。七、执行语句七、执行语句(一)运算符(一)运算符2、算术运算符及其表达式、算术运
24、算符及其表达式 算术运算符有算术运算符有+、-、*、/、%(%为模运算符,或称求余运算符为模运算符,或称求余运算符)例、例、void main()void main()unsigned int var1=27,var2=31,rlt0,rlt1;unsigned int var1=27,var2=31,rlt0,rlt1;var1+;var1+;var2-;var2-;rlt0=var1+var2;rlt0=var1+var2;rlt1=var2-var1;rlt1=var2-var1;rlt1=var1*var2;rlt1=var1*var2;rlt1=var1/var2;rlt1=var1
25、/var2;rlt1=var1%var2;rlt1=var1%var2;3 3、关系运算符及其表达式、关系运算符及其表达式 (大于大于);(=(=(大于或等于大于或等于);=(var2var1var2);result=result=(var1=var2var1=var2);result=result=(var1var2 var1var2);result=result=(var1=var2 var1=var2);goto bgn;goto bgn;4 4、逻辑运算符及其表达式、逻辑运算符及其表达式&逻辑与逻辑与 (两个操作数都为真时,结果才为真,否则两个操作数都为真时,结果才为真,否则 为假为假
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 c51 编程 课件
限制150内