飞思卡尔8位单片机mc9s878c语言

上传人:tia****nde 文档编号:66990527 上传时间:2019-01-06 格式:PPT 页数:34 大小:210.01KB
返回 下载 相关 举报
飞思卡尔8位单片机mc9s878c语言_第1页
第1页 / 共34页
飞思卡尔8位单片机mc9s878c语言_第2页
第2页 / 共34页
飞思卡尔8位单片机mc9s878c语言_第3页
第3页 / 共34页
飞思卡尔8位单片机mc9s878c语言_第4页
第4页 / 共34页
飞思卡尔8位单片机mc9s878c语言_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《飞思卡尔8位单片机mc9s878c语言》由会员分享,可在线阅读,更多相关《飞思卡尔8位单片机mc9s878c语言(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.

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

4、式应用技术基础教程课件,7.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.

5、2 标准C语言的基本语法,7.2.3 流程控制,(3)循环结构 dowhile循环 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,) 说

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

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

8、7.2 标准C语言的基本语法,7.2.7 编译预处理,(1)宏定义 #define 宏名 表达式 (2)条件编译 #if 表达式 #else 表达式 #endif (3)“文件包含”处理 “文件包含”是指一个源文件将另一个源文件的全部内容包含进来,其一般形式为: #include “文件名”,嵌入式应用技术基础教程课件,7.2 标准C语言的基本语法,7.2.8 用typedef定义类型,typedef用来定义新的类型名来代替已有的类型名: typedef 类型名 新的类型名; 说明: 用typedef可以定义各种类型名,但不能用来定义变量。 用typedef只是对已经存在的类型增加一个类型名,

9、而没有创造新的类型。 当不同源文件中用到各种类型数据(尤其是像数组、指针、结构体、共用体等较复杂数据类型)时,常用typedef定义一些数据类型,并把它们单独存放在一个文件中,而后在需要用到它们的文件中用#include命令把它们包含进来。,嵌入式应用技术基础教程课件,返回,7.3 08C语言的使用,7.3 08C语言的使用,7.3.1 寄存器和I/O口的使用 使用08C语言,大部分寄存器都可以直接操作,但对寄存器A、HX、CCR和SP的操作只能通过嵌入汇编代码来完成。 (1)I/O口和寄存器的定义 在08C语言中操作寄存器及I/O口时,通常预先在头文件中使用宏定义,其定义方法如下: #def

10、ine 寄存器名 *(volatile unsigned char *)寄存器地址 #define I/O口名 *(volatile 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语言的使用,这种使用方法要注意以下几点:

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

12、; 定义中断处理函数; 定义中断向量表; 在中断向量表中填入中断处理函数名称;,7.3.3 中断处理,嵌入式应用技术基础教程课件,7.3 08C语言的使用,08C提供一系列函数库供程序员使用,其中囊括了标准C所具有的大部分库函数和一些08C特有的函数,但是08C中的有些函数和标准C中的函数的功能不一样。这些函数的头文件位于安装目录的include目录下,库文件位于安装目录的lib目录下。更多的函数库说明参见附录F。,7.3.4 08C的常用库函数,嵌入式应用技术基础教程课件,返回,7.4 08C语言程序编程框架,7.4 08C语言程序编程框架,7.4.1 实践环境 SD-HC08在线编程开发系

13、统中的C语言编程是按工程进行管理,一个08C工程所包含的文件最好放在同一文件夹下,一般由.prj、.src、.h、.c等类型文件构成,编译后还将产生.lst、.s19等文件。编译过程还会产生一些中间文件,可以不去理会这些文件。,嵌入式应用技术基础教程课件,7.4 08C语言程序编程框架,一个完整的08语言程序通常至少包含如下部分: 汇编语言的启动文件 存储器映像及I/O端口的头文件 主程序模块 中断服务程序模块 中断向量表文件,7.4.2 08C语言程序的组成,嵌入式应用技术基础教程课件,7.4 08C语言程序编程框架,一个完整的08语言程序通常至少包含如下部分: 汇编语言的启动文件 存储器映

14、像及I/O端口的头文件 主程序模块 中断服务程序模块 中断向量表文件,7.4.2 08C语言程序的组成,嵌入式应用技术基础教程课件,7.4 08C语言程序编程框架,编写第一个可执行的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在线编程开发系统中编辑了源程序以后,使用编译命令就可以把源程序翻译成目标程序

15、。 编译的脚本文件:包含了编译指令及相关的参数,文件存放的位置在.prj的同一文件夹下。 C程序向汇编程序的转化:启动08C编译器,根据.mak文件的编译脚本将所有.c文件编译成.s文件及.lis文件。 汇编代码向机器码的转化:汇编程序将所有的汇编文件编译成.o的中间目标文件,即所有的汇编语句都编译成机器码。 连接:启动连接器,连接器根据.mak文件中的连接脚本,把所有的.o文件统一连接成一个.s19文件,该文件可以下载到目标机器上执行,同时还可根据用户需求生成.lst文件和.mp文件。,嵌入式应用技术基础教程课件,7.5 08C语言的编译过程,7.5.2 编译文件输出,单片机的文件都有自己的

16、后缀规则,不同的C编译器产生的文件后缀在某些方面有些差异。下表为08C编译过程中产生的文件类型。,嵌入式应用技术基础教程课件,返回,7.6 08C编程技巧,7.6 08C编程技巧,7.6.1 数据类型的选用 单片机C要和程序存储器资源结合起来,虽然其提供的数据类型十分丰富,但是只有bit和char等数据类型是机器语言直接支持的数据类型,用此类数据类型的语句所生成的代码较短;而其它的数据类型如整型、浮点型等数据要有一定的内部程序或内部函数的支持,相对来说用该类数据类型的语句生成的代码要长。有些C语言程序表面上看起来十分的简单,但在实际编译时,生成的代码却相当长。因此我们要按照实际需要,尽量选用占

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号