飞思卡尔8位单片机MC9S878C语言ppt课件.ppt

上传人:sccc 文档编号:5462283 上传时间:2023-07-09 格式:PPT 页数:34 大小:210.05KB
返回 下载 相关 举报
飞思卡尔8位单片机MC9S878C语言ppt课件.ppt_第1页
第1页 / 共34页
飞思卡尔8位单片机MC9S878C语言ppt课件.ppt_第2页
第2页 / 共34页
飞思卡尔8位单片机MC9S878C语言ppt课件.ppt_第3页
第3页 / 共34页
飞思卡尔8位单片机MC9S878C语言ppt课件.ppt_第4页
第4页 / 共34页
飞思卡尔8位单片机MC9S878C语言ppt课件.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《飞思卡尔8位单片机MC9S878C语言ppt课件.ppt》由会员分享,可在线阅读,更多相关《飞思卡尔8位单片机MC9S878C语言ppt课件.ppt(34页珍藏版)》请在三一办公上搜索。

1、第七章 08C语言,主要内容 单片机的C语言编程概述 标准C语言的基本语法 08C语言的使用 08C语言程序编程框架 08C语言的编译过程 08C编程技巧,嵌入式应用技术基础教程课件,7.1 单片机的C语言编程概述,7.1 单片机的C语言编程概述,7.1.1 单片机编程语言 汇编语言 优点:执行效率高,时序控制精确 C语言 优点:程序开发速度快,提高开发工作效率;软件调试直观;可维护性好;可移植性好(与汇编语言相比较)。,嵌入式应用技术基础教程课件,7.1 单片机的C语言编程概述,7.1.2 单片机C语言,单片机C语言和标准C语言的用法基本相同,但是单片机C语言是针对于资源少的MCU,它的编程

2、方法和编程手段与PC机上使用C语言还是有很大差别。,嵌入式应用技术基础教程课件,返回,7.2 标准C语言的基本语法,7.2 标准C语言的基本语法,7.2.1 数据类型(1)基本类型,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.1 数据类型,(2)构造类型 构造类型有数组、结构、联合、枚举、指针和空类型。结构和联合是基本数据类型的组合。枚举是一个被命名为整型常量的集合。空类型字节长度为0,主要有两个用途:一是明确地表示一个函数不返回任何值;二是产生一个同一类型指针(可根据需要动态地分配给其内存)。,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.2 运算符

3、,C语言的运算符与大多数计算机语言基本相同,分为:算术运算符 逻辑运算符 关系运算符和位运算符 增量和减量运算符 复合赋值运算符 指针和地址运算符 输出格式转换符,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.3 流程控制,(1)顺序结构 顺序结构就是从前向后依次执行语句。从整体上看,所有程序的基本结构都是顺序结构,中间的某个过程可以是选择结构或循环结构。,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.3 流程控制,(2)选择结构 if结构(双分支):if(条件表达式)语句项;或 if(条件表达式)语句块 else 语句块,嵌入式应用技术基础教程课件,7

4、.2 标准C语言的基本语法,7.2.3 流程控制,(2)选择结构 switch结构(多分支):switch(表达式)case 常数1:语句项1;break;case 常数2:语句项2;break;default:语句项n,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.3 流程控制,(3)循环结构 for循环:for(表达式1;表达式2;表达式3)语句,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.3 流程控制,(3)循环结构 while循环:while(表达式)语句,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.3 流程控制,(3)循

5、环结构 do.while循环 do 语句 while(表达式);,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.3 流程控制,(4)break语句和continue语句 在循环中常常使用break语句和continue语句,这两个语句都会改变循环的执行情况。break语句用来从循环体中强行跳出循环,终止整个循环的执行;continue语句只用来结束本次循环。,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.4 函数,(1)函数定义 类型标识符 函数名(类型 参数1,类型 参数2,类型 参数3,)说明部分 语句(2)函数的声明 类型标识符 函数名(类型 参数

6、1,类型 参数2,类型 参数3,);(3)函数的返回值 return 表达式;return语句用来立即结束函数,并返回一确定给调用程序。如果函数的类型和return语句中表达式的值不一致,则以函数类型为准。对数值型数据,可以自动进行类型转换。,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.5 指针,(1)指针变量的定义 类型说明符*变量名;(2)指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址。(3)指针的运算 取地址运算(&)取内容运算(*)加减算术运

7、算:针对指针数组变量进行,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.6 结构体,(1)结构体的说明和结构体变量的定义 struct 结构体名 struct 结构体名 成员列表;成员列表 结构体变量;(2)结构体变量的使用 结构体变量也可以象其它类型的变量一样赋值运算,不同的是结构体变量以成员作为基本变量。结构体成员的表示方式为:结构体变量.成员名(3)结构体指针 结构体指针是指向结构体的指针。结构体指针对结构体成员的访问表示为:结构体指针名-结构体成员,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.7 编译预处理,(1)宏定义#define 宏名 表

8、达式(2)条件编译#if 表达式#else 表达式#endif(3)“文件包含”处理“文件包含”是指一个源文件将另一个源文件的全部内容包含进来,其一般形式为:#include“文件名”,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.8 用typedef定义类型,typedef用来定义新的类型名来代替已有的类型名:typedef 类型名 新的类型名;说明:用typedef可以定义各种类型名,但不能用来定义变量。用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。当不同源文件中用到各种类型数据(尤其是像数组、指针、结构体、共用体等较复杂数据类型)时,常用ty

9、pedef定义一些数据类型,并把它们单独存放在一个文件中,而后在需要用到它们的文件中用#include命令把它们包含进来。,嵌入式应用技术基础教程课件,返回,7.3 08C语言的使用,7.3 08C语言的使用,7.3.1 寄存器和I/O口的使用 使用08C语言,大部分寄存器都可以直接操作,但对寄存器A、HX、CCR和SP的操作只能通过嵌入汇编代码来完成。(1)I/O口和寄存器的定义 在08C语言中操作寄存器及I/O口时,通常预先在头文件中使用宏定义,其定义方法如下:#define 寄存器名*(volatile unsigned char*)寄存器地址#define I/O口名*(volatil

10、e unsigned char*)I/O口地址(2)I/O与寄存器的操作 使用上面定义的I/O口或寄存器宏,可以方便对I/O置高低电平或读取I/O的状态,读写寄存器。,嵌入式应用技术基础教程课件,7.3 08C语言的使用,7.3.2 使用汇编指令,在08C语言中,使用汇编代码有两种方法:(1)asm(“汇编指令”)(2)定义汇编子程序 定义格式如下:_子程序名代码rts,嵌入式应用技术基础教程课件,7.3 08C语言的使用,这种使用方法要注意以下几点:在子程序名前加_;汇编子程序只能放在*.s文件中,然后将该文件加入到工程中;在C代码中调用汇编子程序时可直接调用:子程序名();汇编子程序的编写

11、时,如果使用了A或HX,则需要保护寄存器A或HX。因为08C的编译器把A和HX封装在下层,不需要用户管理,如果汇编子程序没有保存这些寄存器,在返回时将造成不可预测的后果。,7.3.2 使用汇编指令,嵌入式应用技术基础教程课件,7.3 08C语言的使用,在HC08系列单片机Flash地址空间中,有一段是用来存储所有的中断矢量,每两个字节存储的是一个中断处理函数的地址。编写中断处理函数,需要按照以下步骤:新建一个vectors.c,并加入工程中;定义中断处理函数;定义中断向量表;在中断向量表中填入中断处理函数名称;,7.3.3 中断处理,嵌入式应用技术基础教程课件,7.3 08C语言的使用,08C

12、提供一系列函数库供程序员使用,其中囊括了标准C所具有的大部分库函数和一些08C特有的函数,但是08C中的有些函数和标准C中的函数的功能不一样。这些函数的头文件位于安装目录的include目录下,库文件位于安装目录的lib目录下。更多的函数库说明参见附录F。,7.3.4 08C的常用库函数,嵌入式应用技术基础教程课件,返回,7.4 08C语言程序编程框架,7.4 08C语言程序编程框架,7.4.1 实践环境 SD-HC08在线编程开发系统中的C语言编程是按工程进行管理,一个08C工程所包含的文件最好放在同一文件夹下,一般由.prj、.src、.h、.c等类型文件构成,编译后还将产生.lst、.s

13、19等文件。编译过程还会产生一些中间文件,可以不去理会这些文件。,嵌入式应用技术基础教程课件,7.4 08C语言程序编程框架,一个完整的08语言程序通常至少包含如下部分:汇编语言的启动文件存储器映像及I/O端口的头文件主程序模块中断服务程序模块中断向量表文件,7.4.2 08C语言程序的组成,嵌入式应用技术基础教程课件,7.4 08C语言程序编程框架,一个完整的08语言程序通常至少包含如下部分:汇编语言的启动文件存储器映像及I/O端口的头文件主程序模块中断服务程序模块中断向量表文件,7.4.2 08C语言程序的组成,嵌入式应用技术基础教程课件,7.4 08C语言程序编程框架,编写第一个可执行的

14、08C语言程序:(1)新建文件 新建C工程。新建GP32C.h文件,该文件包含了MC68HC908GP32的I/O及寄存器的宏定义。新建main.c程序(2)编译程序,7.4.3 第一个08C语言例程,嵌入式应用技术基础教程课件,返回,7.5 08C语言的编译过程,7.5 08C语言的编译过程,7.5.1 编译过程 在SD-HC08在线编程开发系统中编辑了源程序以后,使用编译命令就可以把源程序翻译成目标程序。编译的脚本文件:包含了编译指令及相关的参数,文件存放的位置在.prj的同一文件夹下。C程序向汇编程序的转化:启动08C编译器,根据.mak文件的编译脚本将所有.c文件编译成.s文件及.li

15、s文件。汇编代码向机器码的转化:汇编程序将所有的汇编文件编译成.o的中间目标文件,即所有的汇编语句都编译成机器码。连接:启动连接器,连接器根据.mak文件中的连接脚本,把所有的.o文件统一连接成一个.s19文件,该文件可以下载到目标机器上执行,同时还可根据用户需求生成.lst文件和.mp文件。,嵌入式应用技术基础教程课件,7.5 08C语言的编译过程,7.5.2 编译文件输出,单片机的文件都有自己的后缀规则,不同的C编译器产生的文件后缀在某些方面有些差异。下表为08C编译过程中产生的文件类型。,嵌入式应用技术基础教程课件,返回,7.6 08C编程技巧,7.6 08C编程技巧,7.6.1 数据类

16、型的选用 单片机C要和程序存储器资源结合起来,虽然其提供的数据类型十分丰富,但是只有bit和char等数据类型是机器语言直接支持的数据类型,用此类数据类型的语句所生成的代码较短;而其它的数据类型如整型、浮点型等数据要有一定的内部程序或内部函数的支持,相对来说用该类数据类型的语句生成的代码要长。有些C语言程序表面上看起来十分的简单,但在实际编译时,生成的代码却相当长。因此我们要按照实际需要,尽量选用占用存储空间少的数据类型,可以大大的减少所生成的代码长度。,嵌入式应用技术基础教程课件,7.6 08C编程技巧,7.6.2 算法设计问题,单片机C语言和标准C语言存在着很大差别,在计算机上进行C语言程

17、序设计时可以不必考虑程序代码的长短,只需考虑程序功能实现,但是在单片机上进行C语言程序设计就必须考虑系统的硬件资源。有时并不是程序的算法越简单、长度越短越好,因为有一些算法要调用一些内部的子程序和函数,生成的机器代码可能非常长。不同的算法对程序代码长度影响十分大,因此在进行程序设计时,就尽量采用程序生成代码短的算法,在不影响程序功能实现的情况下可以采用一些优化算法。,嵌入式应用技术基础教程课件,7.6 08C编程技巧,7.6.3 数据存储器的分配,单片机内部数据存储器RAM只有几百字节,内部处理器、内部堆栈、压缩栈、所有程序变量和所有包含进来的库函数都将使用数量有限的内部数据存储器RAM。在进

18、行程序设计时应该尽量的使用局部变量,提高内部数据存储器的使用率。,嵌入式应用技术基础教程课件,7.6 08C编程技巧,7.6.4 单片机C语言与汇编语言的混合编程,C代码中可以嵌入汇编程序,汇编中也可以调用C代码中的变量与子程序。使用C代码中定义的变量:在变量名前加_或%,例如:unsigned char sPortA;asm(“lda%sPortA”)或asm(“lda _sPortA”)调用C代码中定义的函数:在函数名前加 _,例如:function1();asm(“jsr _function1”),嵌入式应用技术基础教程课件,返回,本章小结,单片机C语言和标准C语言的用法基本相同,但是单片机C语言是针对于资源少的MCU,它的编程方法和编程手段与PC机上使用C语言还是有很大差别。本章讲述了单片机中选用C语言编程的优越性,简单介绍了标准C语言,然后阐述了08C的一些特殊用法,并通过实例讲述08C语言编程框架以及编译过程。使用C语言进行单片机程序开发,必须要对单片机体系结构和硬件资源作详尽了解,才能写出高质量实用的C语言程序。,嵌入式应用技术基础教程课件,返回,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号