片机C语言程序设计.ppt
《片机C语言程序设计.ppt》由会员分享,可在线阅读,更多相关《片机C语言程序设计.ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机原理及其接口技术单片机原理及其接口技术主目录主目录上一页上一页下一页下一页结结 束束第第7章章单片机单片机C语言程序设计语言程序设计教学目标教学目标7.1 7.1 单片机单片机C51C51语言概述语言概述7.2 C517.2 C51语言基本语法语言基本语法 7.3 C517.3 C51语言程序设计语言程序设计本章小结本章小结思考题与习题思考题与习题单片机原理及其接口技术单片机原理及其接口技术主目录主目录上一页上一页下一页下一页结结 束束7.1单片机单片机C51语言概述语言概述7.1.1 单片机支持的高级语言单片机支持的高级语言7.1.2 C51语言特点语言特点单片机原理及其接口技术单片机
2、原理及其接口技术主目录主目录上一页上一页下一页下一页结结 束束7.1.1单片机支持的高级语言单片机支持的高级语言程序设计程序设计高级语言高级语言PL/MPL/MBASICBASICC C51 51 是能够利用单片机所有特性是能够利用单片机所有特性直接控制硬件的唯一语言直接控制硬件的唯一语言,对于一些需要直接控制硬件的场合,汇编语言是必不可少的。对于一些需要直接控制硬件的场合,汇编语言是必不可少的。但汇编语言但汇编语言不是一种结构化的程序设计语言不是一种结构化的程序设计语言,对于较复杂的单,对于较复杂的单片机应用系统,它的片机应用系统,它的编写效率很低编写效率很低。语言适用于简单编程而语言适用于
3、简单编程而对编程效率、运行速度要求不对编程效率、运行速度要求不高高的场合,的场合,80528052单片机内固化有单片机内固化有BASICBASIC语言解释器。语言解释器。是一种结构化的语言,很象是一种结构化的语言,很象PASCALPASCAL,PL/MPL/M编译器好象汇编译器好象汇编器一样产生紧凑的机器代码,可以说是高级汇编语言,但编器一样产生紧凑的机器代码,可以说是高级汇编语言,但它不支它不支持复杂的算术运算,无丰富库函数支持持复杂的算术运算,无丰富库函数支持,学习,学习PL/MPL/M无异于学习一种无异于学习一种新的语言。新的语言。是一种通用的程序设计语言,其是一种通用的程序设计语言,其
4、代码率高,数据类型代码率高,数据类型及运算符丰富,并具有良好的程序结构及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设,适用于各种应用的程序设计,是目前使用最广的单片机编程语言。计,是目前使用最广的单片机编程语言。汇编语言汇编语言BASICBASICPL/MPL/MC C5151语言语言 单片机的单片机的C C语言编程称为语言编程称为C51C51编程编程,C51语言本身不依语言本身不依赖机器硬件,不要求编程者对硬件深入了解,赖机器硬件,不要求编程者对硬件深入了解,应用应用C51C51编编程具有以下优点:程具有以下优点:1 1语言简洁、紧凑,使用方便、灵活。语言简洁、紧凑,使用方便、灵
5、活。2 2运算符、运算符、数据结构数据结构丰富。丰富。3 3结构化程序设计结构化程序设计。4 4可以直接对计算机硬件进行操作可以直接对计算机硬件进行操作。5 5生成的目标代码质量高,程序执行效率高生成的目标代码质量高,程序执行效率高。6 6可移植性好可移植性好。7.1.2C51语言特点语言特点 用用C语言开发系统可以语言开发系统可以大大缩短开发周期,明显增强程序的可读性,大大缩短开发周期,明显增强程序的可读性,便于改进和扩充便于改进和扩充。而针对。而针对8051的的C51语言日趋成熟,成为了专业化的实用语言日趋成熟,成为了专业化的实用高级语言。高级语言。单片机原理及其接口技术单片机原理及其接口
6、技术主目录主目录上一页上一页下一页下一页结结 束束1.1.对单片机的指令系统不要求了解,仅要求对对单片机的指令系统不要求了解,仅要求对8051 8051 的存贮器结构有初步了解;的存贮器结构有初步了解;2.2.寄存器分配、不同存贮器的寻址及数据类型等细寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;节可由编译器管理;3.3.程序有规范的结构,可分成不同的函数,这种方程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;式可使程序结构化;4.4.提供的库包含许多标准子程序,具有较强的数据提供的库包含许多标准子程序,具有较强的数据处理能力;处理能力;5.5.由于具有方便的模块化编
7、程技术,使已编好程序由于具有方便的模块化编程技术,使已编好程序可容易地移植;可容易地移植;C-51C-51与与ASM-51ASM-51相比,有如下优点:相比,有如下优点:单片机原理及其接口技术单片机原理及其接口技术主目录主目录上一页上一页下一页下一页结结 束束7.2 C51语言基本语法语言基本语法 7.2.1 C51语言的函数及程序结构语言的函数及程序结构7.2.2 C51语言的数据类型及存储类型语言的数据类型及存储类型7.2.3 C51语言的运算符语言的运算符7.2.4 C51语言的语句语言的语句 C51语言的指针语言的指针7.2.7 中断函数、头文件及绝对地址访问中断函数、头文件及绝对地址
8、访问7.2.5 C51语言的数组语言的数组实战实战1实战实战2实战实战3实战实战4实战实战5实战实战6实战实战7单片机原理及其接口技术单片机原理及其接口技术主目录主目录上一页上一页下一页下一页结结 束束C51C51函数的一般格式函数的一般格式 类型类型 函数名(参数表)函数名(参数表)声明语句声明语句;执行语句执行语句;同同C语言程序一样,语言程序一样,C51采用函数结构,采用函数结构,每个每个C51语言程序由一个或多个函数组成。语言程序由一个或多个函数组成。7.2.1 C51语言的函数及程序结构语言的函数及程序结构单片机原理及其接口技术单片机原理及其接口技术主目录主目录上一页上一页下一页下一
9、页结结 束束 其中,函数往往由其中,函数往往由“函数定义函数定义”和和“函数体函数体”两个两个部分组成部分组成。函数定义部分包括有函数类型、函数名、形式函数定义部分包括有函数类型、函数名、形式参数说明等参数说明等,函数名后面必须跟一个圆括号(),形式参,函数名后面必须跟一个圆括号(),形式参数在()内定义。函数体由一对花括号数在()内定义。函数体由一对花括号“”组成,在组成,在“”的内容就是函数体。如果一个函数内有多个花括号,的内容就是函数体。如果一个函数内有多个花括号,则最外层的一对则最外层的一对“”为函数体的内容。为函数体的内容。函数体内包含若函数体内包含若干语句,一般由两部分组成:声明语
10、句和执行语句。干语句,一般由两部分组成:声明语句和执行语句。声明声明语句用于对函数中用到的变量进行定义。语句用于对函数中用到的变量进行定义。也可能对函数体也可能对函数体中调用的函数进行声明。中调用的函数进行声明。执行语句由若干语句组成,用来执行语句由若干语句组成,用来完成一定功能。完成一定功能。当然也有的函数体仅有一对当然也有的函数体仅有一对“”,其中,其中内部既没有声明语句,也没有执行语句。这种函数称为空内部既没有声明语句,也没有执行语句。这种函数称为空函数。函数。C C语言的语句规则:语言的语句规则:1.1.每个变量必须每个变量必须先说明后引用先说明后引用。2.2.书写时格式十分自由,书写
11、时格式十分自由,一行可以书写多条语句一行可以书写多条语句,一一个语句也可以多行个语句也可以多行书写。但每个语句必须以书写。但每个语句必须以“;”结尾结尾。3.3.注释用注释用/*/*/或者或者/表示。表示。4.“”4.“”花括号必须成对花括号必须成对,位置随意,多个花括号可,位置随意,多个花括号可同行书写,也可逐行书写同行书写,也可逐行书写。5.5.区分大小写字母。区分大小写字母。为层次分明,增加可读性,同一层的为层次分明,增加可读性,同一层的“”花括对齐,花括对齐,采用逐层缩进方式书写。采用逐层缩进方式书写。单片机原理及其接口技术单片机原理及其接口技术主目录主目录上一页上一页下一页下一页结结
12、 束束 与一般与一般C C语言的结构相同:语言的结构相同:1 1、C51C51语言的函数语言的函数以以“”开始,以开始,以“”结束结束3 3、有且只有一个、有且只有一个main()main()函数,以函数,以main()main()函数为函数为程序入口,中间可以调用其他函数,最后在程序入口,中间可以调用其他函数,最后在mainmain()()函数结束函数结束2 2、程序体中包含若干语句还可以包含若干函、程序体中包含若干语句还可以包含若干函数,均以数,均以;号结束号结束。4 4、函数放置顺序可随意,但是、函数放置顺序可随意,但是调用之后的函数调用之后的函数需要先声明需要先声明。C C语言程序的组
13、成结构:语言程序的组成结构:全局变量全局变量说明说明 /*/*可被各函数引用可被各函数引用*/mainmain()()/*/*主函数主函数*/局部变量局部变量说明说明 /*/*只在本函数引用只在本函数引用*/执行语句执行语句(包括函数调用语句包括函数调用语句););fun1fun1(形式参数表形式参数表)/*/*函数函数1*/1*/形式参数说明形式参数说明 局部变量说明局部变量说明 执行语句执行语句(包括调用其他函数语句包括调用其他函数语句)funnfunn(形式参数表形式参数表)/*/*函数函数n*/n*/形式参数说明形式参数说明 局部变量说明局部变量说明 执行语句执行语句 ucharkey
14、scan(void)/按键扫描函数按键扫描函数,返回返回4个按键值个按键值XXXXXXX;returnkey;/返回按键值:返回按键值:keyvoidmain(void)uchari;while(1)i=keyscan();/按键扫描函数按键扫描函数ucharkeyscan(void)/按键扫描函数按键扫描函数,返回返回4个按键值个按键值XXXXXXX;returnkey;/返回按键值:返回按键值:keyucharkeyscan(void);/声明函数声明函数voidmain(void)uchari;while(1)i=keyscan();/按键扫描函数按键扫描函数7.2 C51语言基本语法语
15、言基本语法 C51语言的函数及程序结构语言的函数及程序结构 C51语言的数据类型及存储类型语言的数据类型及存储类型7.2.3 C51语言的运算符语言的运算符7.2.4 C51语言的语句语言的语句 C51语言的指针语言的指针7.2.7 中断函数、头文件及绝对地址访问中断函数、头文件及绝对地址访问7.2.5 C51语言的数组语言的数组实战实战1实战实战2实战实战3实战实战4实战实战5实战实战6实战实战7单片机原理及其接口技术单片机原理及其接口技术主目录主目录上一页上一页下一页下一页结结 束束7.2.2 C51语言的数据类型及存储类型语言的数据类型及存储类型 C51C51的数据有常量和变量之分。的数
16、据有常量和变量之分。在程序运行中在程序运行中其值不变其值不变的量。的量。可以为十进制数、可以为十进制数、十六进制数十六进制数(用用0 x0 x表示表示,汇汇编后缀编后缀H)H)、字符、字符(括起括起)和字符串型常量和字符串型常量(“”“”括起括起)。用符号表示常量,符号常用大写表示,此符号用符号表示常量,符号常用大写表示,此符号需用宏定义指令需用宏定义指令(#define)(#define)对其进行定义对其进行定义(相当于汇编的相当于汇编的“EQU”EQU”伪指令伪指令)。#define AA 100 ;相当于;相当于AA EQU 100 常量常量 数值型常量数值型常量:符号型常量符号型常量:
17、单片机原理及其接口技术单片机原理及其接口技术主目录主目录上一页上一页下一页下一页结结 束束 在程序运行中其在程序运行中其值可以改变的量值可以改变的量,常用,常用小写字母表示。一个变量由两部分组成:变量名和变量值。小写字母表示。一个变量由两部分组成:变量名和变量值。定义一个变量,编译系统就会自动为它安排一个存贮区,具定义一个变量,编译系统就会自动为它安排一个存贮区,具体的地址值体的地址值 ,用户不必在意。,用户不必在意。变量变量 在在C51C51中,变量在使用前必须对变量进行定义,指出中,变量在使用前必须对变量进行定义,指出变量的数据类型和存储模式。以便编译系统为它分配相应变量的数据类型和存储模
18、式。以便编译系统为它分配相应的存储单元。定义的格式如下:的存储单元。定义的格式如下:nC51的变量声明的一般格式如下 数据类型数据类型 存储类型存储类型 变量名变量名 =初值初值;n例如:unsigned char code Flag=0 x0f;声明一个无符号的char型变量Flag,赋初值0 x0f;所在的存储空间在的ROM中。C C语言中的基本数据类型语言中的基本数据类型类型类型符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整整型型字字符符型型实实型型有有无无(signed)int16-3276832767(signed)short16-3276832767(signed)
19、long32-2147483648214748364716unsignedint0655353204294967295unsignedlongintunsignedshortint16065535有有float32有有char8-128127无无unsignedchar802551.176E383.40E+38一、一、C51C51的数据类型的数据类型:表明该数据有无符号、位数多少位,整数还是小表明该数据有无符号、位数多少位,整数还是小数等信息数等信息(续续)C51)C51的数据类型扩充定义的数据类型扩充定义sfr:sfr:特殊功能寄存器声明特殊功能寄存器声明sfr16:sfr16:sfrsfr
20、的的1616位数据声明位数据声明sbit:sbit:特殊功能位声明特殊功能位声明bitbit:位变量声明位变量声明例:例:sfr SCON=0 x98;sfr SCON=0 x98;sfr16 T2=0 xCC;sfr16 T2=0 xCC;sbit OV=PSW sbit OV=PSW 2;2;bit keyscanflag=1 bit keyscanflag=1;二、二、C51C51数据的存储类型:数据的存储类型:存储存储类型类型寻址空间寻址空间数据数据长度长度值域范围值域范围data直接寻址片内直接寻址片内RAM低低128B,访问速度快,访问速度快80127idata间接寻址访问的片内间
21、接寻址访问的片内RAM,允许访问全,允许访问全部片内部片内RAM80255bdata片内片内RAM的可位寻址区(的可位寻址区(20H2FH)10127pdata用用Ri间接访问的片外间接访问的片外RAM的低的低256B80255xdata用用DPTR间接访问的片外间接访问的片外RAM,允许访,允许访问全部问全部64k片外片外RAM16065535code程序存储器程序存储器ROM64k空间空间16065535指明变量所处的单片机的存储器区域情况。指明变量所处的单片机的存储器区域情况。MCS-51存储器结构图存储器结构图(a)程序存储器地址分配;程序存储器地址分配;(b)数据存储器地址分配数据存
22、储器地址分配FFFFHFFFFH1000H1000H外部外部ROM0000H0000H内部内部ROMEA=1EA=1外部外部ROMEA=0EA=0工作工作寄存器区寄存器区 位寻位寻 址区址区 数据数据 缓冲区缓冲区00H00H20H20H30H30H80H80H外部外部RAM0000H0000HFFFFHFFFFH0FFFH0FFFHSFR2FH2FH7FH7FHFFHFFH1FH1FH00FFH单片机原理及其接口技术单片机原理及其接口技术主目录主目录上一页上一页下一页下一页结结 束束 C51的变量声明的一般格式如下的变量声明的一般格式如下 数据类型数据类型 存储类型存储类型 变量名变量名=初
23、值初值,;例如:例如:unsigned char code Flag=0 x0f;就是声明一个无符号的就是声明一个无符号的char型变量型变量Flag,并,并给他赋初值为给他赋初值为0 x0f;并且声明他所在的存储;并且声明他所在的存储空间在片内统一编址的空间在片内统一编址的ROM中。中。声明中,如果声明中,如果没有没有存储类型存储类型,则数据默认,则数据默认的存储空间为的存储空间为data型,也就是在片内型,也就是在片内RAM中。中。单片机原理及其接口技术单片机原理及其接口技术主目录主目录上一页上一页下一页下一页结结 束束char data var;/*字符变量字符变量var定位在片内定位在
24、片内RAM区区char code MSG=ENTER PARAMETER:/*字符数组定位在程序存贮区字符数组定位在程序存贮区*/unsigned long xdata array100;/*无符号长型数组在片外无符号长型数组在片外RAM区,每区,每 元素占元素占4bytes*/float idata x,y,z;/*实型变量实型变量x,y,z,在片内用间址访问的内部,在片内用间址访问的内部RAM区区*/bit lock;/*位变量位变量lock定位在片内定位在片内RAM可位寻址区可位寻址区*/unsigned int pdata dimension;/*无符号整型变量无符号整型变量dimen
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计
限制150内