飞思卡尔8位单片机MC9S878C语言教学课件

上传人:沈*** 文档编号:241832896 上传时间:2024-07-28 格式:PPT 页数:36 大小:506.50KB
返回 下载 相关 举报
飞思卡尔8位单片机MC9S878C语言教学课件_第1页
第1页 / 共36页
飞思卡尔8位单片机MC9S878C语言教学课件_第2页
第2页 / 共36页
飞思卡尔8位单片机MC9S878C语言教学课件_第3页
第3页 / 共36页
点击查看更多>>
资源描述
飞思卡尔8位单片机MC9S878C语言ppt课件31、别人笑我太疯癫,我笑他人看不穿。(名言网)32、我不想听失意者的哭泣,抱怨者的牢骚,这是羊群中的瘟疫,我不能被它传染。我要尽量避免绝望,辛勤耕耘,忍受苦楚。我一试再试,争取每天的成功,避免以失败收常在别人停滞不前时,我继续拼搏。33、如果惧怕前面跌宕的山岩,生命就永远只能是死水一潭。34、当你眼泪忍不住要流出来的时候,睁大眼睛,千万别眨眼!你会看到世界由清晰变模糊的全过程,心会在你泪水落下的那一刻变得清澈明晰。盐。注定要融化的,也许是用眼泪的方式。35、不要以为自己成功一次就可以了,也不要以为过去的光荣可以被永远肯定。7.2.1 数据类型数据类型(2)构造类型)构造类型 构造类型有数组、结构、联合、枚举、指针和空类型。结构构造类型有数组、结构、联合、枚举、指针和空类型。结构和联合是基本数据类型的组合。枚举是一个被命名为整型常量的和联合是基本数据类型的组合。枚举是一个被命名为整型常量的集合。空类型字节长度为集合。空类型字节长度为0,主要有两个用途:一是明确地表示,主要有两个用途:一是明确地表示一个函数不返回任何值;二是产生一个同一类型指针一个函数不返回任何值;二是产生一个同一类型指针(可根据需要可根据需要动态地分配给其内存动态地分配给其内存)。7.2 标准C语言的基本语法7.2.2 运算符运算符C语言的运算符与大多数计算机语言基本相同,分为:语言的运算符与大多数计算机语言基本相同,分为:v 算术运算符算术运算符v 逻辑运算符逻辑运算符v 关系运算符和位运算符关系运算符和位运算符v 增量和减量运算符增量和减量运算符v 复合赋值运算符复合赋值运算符v 指针和地址运算符指针和地址运算符v 输出格式转换符输出格式转换符7.2 标准C语言的基本语法7.2.3 流程控制流程控制(1)顺序结构)顺序结构 顺序结构就是从前向后依次执顺序结构就是从前向后依次执行语句。从整体上看,所有程序的行语句。从整体上看,所有程序的基本结构都是顺序结构,中间的某基本结构都是顺序结构,中间的某个过程可以是选择结构或循环结构。个过程可以是选择结构或循环结构。语句语句1语句语句2语句语句N7.2 标准C语言的基本语法7.2.3 流程控制流程控制(2)选择结构)选择结构 if结构(双分支):结构(双分支):if(条件表达式条件表达式)语句项语句项;或或 if(条件表达式条件表达式)语句块语句块 else 语句块语句块 语句语句1语句语句1条件表达式条件表达式if真真假假7.2 标准C语言的基本语法7.2.3 流程控制流程控制(2)选择结构)选择结构 switch结构(多分支):结构(多分支):switch(表达式表达式)case 常数常数1:语句项语句项1;break;case 常数常数2:语句项语句项2;break;default:语句项语句项n 表达式表达式语句项语句项1语句项语句项2语句项语句项Nswitch常数常数1常数常数2default7.2 标准C语言的基本语法7.2.3 流程控制流程控制(3)循环结构)循环结构 for循环循环:for(表达式表达式1;表达式;表达式2;表达式;表达式3)语句语句表达式表达式2求解表达式求解表达式1语句语句求解表达式求解表达式3For语句的下一个语句语句的下一个语句for真真假假7.2 标准C语言的基本语法7.2.3 流程控制流程控制(3)循环结构)循环结构 while循环循环:while(表达式表达式)语句语句表达式表达式语句语句while真真假假7.2 标准C语言的基本语法7.2.3 流程控制流程控制(3)循环结构)循环结构 do.while循环循环 do 语句语句 while(表达式表达式);表达式表达式2语句语句do假假真真7.2 标准C语言的基本语法7.2.3 流程控制流程控制(4)break语句和语句和continue语句语句 在循环中常常使用在循环中常常使用break语句和语句和continue语句,这两个语语句,这两个语句都会改变循环的执行情况。句都会改变循环的执行情况。break语句用来从循环体中强行跳语句用来从循环体中强行跳出循环,终止整个循环的执行;出循环,终止整个循环的执行;continue语句只用来结束本次语句只用来结束本次循环循环。7.2 标准C语言的基本语法7.2.4 函数函数(1)函数定义)函数定义 类型标识符类型标识符 函数名函数名(类型类型 参数参数1,类型,类型 参数参数2,类型,类型 参数参数3,)说明部分说明部分 语句语句 (2)函数的声明)函数的声明 类型标识符类型标识符 函数名函数名(类型类型 参数参数1,类型,类型 参数参数2,类型,类型 参数参数3,);(3)函数的返回值)函数的返回值 return 表达式表达式;return语句用来立即结束函数,并返回一确定给调用程序。如果函数的类语句用来立即结束函数,并返回一确定给调用程序。如果函数的类型和型和return语句中表达式的值不一致,则以函数类型为准。对数值型数据,可语句中表达式的值不一致,则以函数类型为准。对数值型数据,可以自动进行类型转换。以自动进行类型转换。7.2 标准C语言的基本语法7.2.5 指针指针(1)指针变量的定义)指针变量的定义 类型说明符类型说明符 *变量名;变量名;(2)指针变量的赋值)指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址。指针变量的赋值只能赋予地址。(3)指针的运算)指针的运算 取地址运算(取地址运算(&)取内容运算取内容运算(*)加减算术运算加减算术运算:针对指针数组变量进行针对指针数组变量进行7.2 标准C语言的基本语法7.2.6 结构体结构体(1)结构体的说明和结构体变量的定义)结构体的说明和结构体变量的定义 struct 结构体名结构体名 struct 结构体名结构体名 成员列表成员列表;成员列表成员列表 结构体变量结构体变量;(2)结构体变量的使用)结构体变量的使用 结构体变量也可以象其它类型的变量一样赋值运算,不同的是结构体结构体变量也可以象其它类型的变量一样赋值运算,不同的是结构体变量以成员作为基本变量。结构体成员的表示方式为:变量以成员作为基本变量。结构体成员的表示方式为:结构体变量结构体变量.成员名成员名(3)结构体指针)结构体指针 结构体指针是指向结构体的指针。结构体指针对结构体成员的访问表结构体指针是指向结构体的指针。结构体指针对结构体成员的访问表示为示为:结构体指针名结构体指针名-结构体成员结构体成员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只是对已经存在的类型增加一个类型名,而没有只是对已经存在的类型增加一个类型名,而没有创造新的类型。创造新的类型。当不同源文件中用到各种类型数据当不同源文件中用到各种类型数据(尤其是像数组、指针、尤其是像数组、指针、结构体、共用体等较复杂数据类型结构体、共用体等较复杂数据类型)时,常用时,常用typedef定义一些数据定义一些数据类型,并把它们单独存放在一个文件中,而后在需要用到它们的文类型,并把它们单独存放在一个文件中,而后在需要用到它们的文件中用件中用#include命令把它们包含进来。命令把它们包含进来。返回返回7.2 标准C语言的基本语法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口名口名*(volatile unsigned char*)I/O口地址口地址(2)I/O与寄存器的操作与寄存器的操作 使用上面定义的使用上面定义的I/O口或寄存器宏,可以方便对口或寄存器宏,可以方便对I/O置高低电平或读取置高低电平或读取I/O的状态,读写寄存器。的状态,读写寄存器。7.3 08C语言的使用7.3.2 使用汇编指令使用汇编指令 在在08C语言中,使用汇编代码有两种方法:语言中,使用汇编代码有两种方法:(1)asm(“汇编指令汇编指令”)(2)定义汇编子程序)定义汇编子程序 定义格式如下:定义格式如下:_子程序名子程序名代码代码rts7.3 08C语言的使用这种使用方法要注意以下几点:这种使用方法要注意以下几点:在子程序名前加在子程序名前加_;汇编子程序只能放在汇编子程序只能放在*.s文件中,然后将该文件加入到工程中;文件中,然后将该文件加入到工程中;在在C代码中调用汇编子程序时可直接调用:代码中调用汇编子程序时可直接调用:子程序名();子程序名();汇编子程序的编写时,如果使用了汇编子程序的编写时,如果使用了A或或HX,则需要保护寄存器,则需要保护寄存器A或或HX。因为。因为08C的编译器把的编译器把A和和HX封装在下层,不需要用户管理,如果汇封装在下层,不需要用户管理,如果汇编子程序没有保存这些寄存器,在返回时将造成不可预测的后果。编子程序没有保存这些寄存器,在返回时将造成不可预测的后果。7.3.2 使用汇编指令使用汇编指令7.3 08C语言的使用 在在HC08系系列列单单片片机机Flash地地址址空空间间中中,有有一一段段是是用用来来存存储储所所有有的的中中断断矢矢量量,每每两两个个字字节节存存储储的的是是一一个个中中断断处处理理函函数数的的地地址址。编编写写中断处理函数,需要按照以下步骤:中断处理函数,需要按照以下步骤:新建一个新建一个vectors.c,并加入工程中;,并加入工程中;定义中断处理函数;定义中断处理函数;定义中断向量表;定义中断向量表;在中断向量表中填入中断处理函数名称;在中断向量表中填入中断处理函数名称;7.3.3 中断处理中断处理 7.3 08C语言的使用 08C提提供供一一系系列列函函数数库库供供程程序序员员使使用用,其其中中囊囊括括了了标标准准C所所具具有有的的大大部部分分库库函函数数和和一一些些08C特特有有的的函函数数,但但是是08C中中的的有有些些函函数数和和标标准准C中中的的函函数数的的功功能能不不一一样样。这这些些函函数数的的头头文文件件位位于于安安装装目目录录的的include目目录录下下,库库文文件件位位于于安安装装目目录录的的lib目目录录下下。更更多多的函数库说明参见的函数库说明参见附录附录F。7.3.4 08C的常用库函数的常用库函数 返回返回7.3 08C语言的使用7.4 08C语言程序编程框架语言程序编程框架7.4.1 实践环境实践环境 SD-HC08在在线线编编程程开开发发系系统统中中的的C语语言言编编程程是是按按工工程程进进行行管管理理,一一个个08C工工程程所所包包含含的的文文件件最最好好放放在在同同一一文文件件夹夹下下,一一般般由由.prj、.src、.h、.c等等类类型型文文件件构构成成,编编译译后后还还将将产产生生.lst、.s19等等文件。编译过程还会产生一些中间文件,可以不去理会这些文件。文件。编译过程还会产生一些中间文件,可以不去理会这些文件。7.4 08C语言程序编程框架一个完整的一个完整的08语言程序通常至少包含如下部分:语言程序通常至少包含如下部分:v汇编语言的启动文件汇编语言的启动文件v存储器映像及存储器映像及I/O端口的头文件端口的头文件v主程序模块主程序模块v中断服务程序模块中断服务程序模块v中断向量表文件中断向量表文件7.4.2 08C语言程序的组成语言程序的组成7.4 08C语言程序编程框架一个完整的一个完整的08语言程序通常至少包含如下部分:语言程序通常至少包含如下部分:v汇编语言的启动文件汇编语言的启动文件v存储器映像及存储器映像及I/O端口的头文件端口的头文件v主程序模块主程序模块v中断服务程序模块中断服务程序模块v中断向量表文件中断向量表文件7.4.2 08C语言程序的组成语言程序的组成7.4 08C语言程序编程框架编写第一个可执行的编写第一个可执行的08C语言程序:语言程序:(1)新建文件)新建文件 新建新建C工程。工程。新建新建GP32C.h文件,该文件包含了文件,该文件包含了MC68HC908GP32的的I/O及寄存器的宏定义。及寄存器的宏定义。新建新建main.c程序程序(2)编译程序)编译程序7.4.3 第一个第一个08C语言例程语言例程返回返回7.4 08C语言程序编程框架7.5 08C语言的编译过程语言的编译过程7.5.1 编译过程编译过程 在在SD-HC08在线编程开发系统中编辑了源程序以后,使用编译命令就可在线编程开发系统中编辑了源程序以后,使用编译命令就可以把源程序翻译成目标程序。以把源程序翻译成目标程序。编译的脚本文件:包含了编译指令及相关的参数,文件存放的位置在编译的脚本文件:包含了编译指令及相关的参数,文件存放的位置在.prj的同一文件夹下。的同一文件夹下。C程序向汇编程序的转化:启动程序向汇编程序的转化:启动08C编译器,根据编译器,根据.mak文件的编译脚文件的编译脚本将所有本将所有.c文件编译成文件编译成.s文件及文件及.lis文件。文件。汇编代码向机器码的转化:汇编程序将所有的汇编文件编译成汇编代码向机器码的转化:汇编程序将所有的汇编文件编译成.o的中的中间目标文件,即所有的汇编语句都编译成机器码。间目标文件,即所有的汇编语句都编译成机器码。连接:启动连接器,连接器根据连接:启动连接器,连接器根据.mak文件中的连接脚本,把所有的文件中的连接脚本,把所有的.o文件统一连接成一个文件统一连接成一个.s19文件,该文件可以下载到目标机器上执行,同时还文件,该文件可以下载到目标机器上执行,同时还可根据用户需求生成可根据用户需求生成.lst文件和文件和.mp文件。文件。7.5 08C语言的编译过程7.5.2 编译文件输出编译文件输出 单片机的文件都有自己的后缀规则,不同的单片机的文件都有自己的后缀规则,不同的C编译器产生的文编译器产生的文件后缀在某些方面有些差异。下表为件后缀在某些方面有些差异。下表为08C编译过程中产生的文件类编译过程中产生的文件类型。型。08C编译所产生的文件类型编译所产生的文件类型文件扩展名文件扩展名说明说明mak编译脚本文件脚本文件Lis浮浮动地址空地址空间的的汇编代代码s浮浮动地址空地址空间的的汇编代代码o目目标文件文件Lst编译列表文件列表文件mp连接后生成的地址映像文件接后生成的地址映像文件S19绝对地址目地址目标文件文件返回返回7.5 08C语言的编译过程7.6 08C编程技巧编程技巧 7.6.1 数据类型的选用数据类型的选用 单单片片机机C要要和和程程序序存存储储器器资资源源结结合合起起来来,虽虽然然其其提提供供的的数数据据类类型型十十分分丰丰富富,但但是是只只有有bit和和char等等数数据据类类型型是是机机器器语语言言直直接接支支持持的的数数据据类类型型,用用此此类类数数据据类类型型的的语语句句所所生生成成的的代代码码较较短短;而而其其它它的的数数据据类类型型如如整整型型、浮浮点点型型等等数数据据要要有有一一定定的的内内部部程程序序或或内内部部函函数数的的支支持持,相相对对来来说说用用该该类类数数据据类类型型的的语语句句生生成成的的代代码码要要长长。有有些些C语语言言程程序序表表面面上上看看起起来来十十分分的的简简单单,但但在在实实际际编编译译时时,生生成成的的代代码码却却相相当当长长。因因此此我我们们要要按按照照实实际际需需要要,尽尽量量选选用用占占用用存存储储空空间间少少的的数数据据类类型型,可可以以大大大大的减少所生成的代码长度。的减少所生成的代码长度。7.6 08C编程技巧 7.6.2 算法设计问题算法设计问题 单单片片机机C语语言言和和标标准准C语语言言存存在在着着很很大大差差别别,在在计计算算机机上上进进行行C语语言言程程序序设设计计时时可可以以不不必必考考虑虑程程序序代代码码的的长长短短,只只需需考考虑虑程程序序功功能能实实现现,但但是是在在单单片片机机上上进进行行C语语言言程程序序设设计计就就必必须须考考虑虑系系统统的的硬硬件件资资源源。有有时时并并不不是是程程序序的的算算法法越越简简单单、长长度度越越短短越越好好,因因为为有有一一些些算算法法要要调调用用一一些些内内部部的的子子程程序序和和函函数数,生生成成的的机机器器代代码码可可能能非非常常长长。不不同同的的算算法法对对程程序序代代码码长长度度影影响响十十分分大大,因因此此在在进进行行程程序序设设计计时时,就就尽尽量量采采用用程程序序生生成成代代码码短短的的算算法法,在在不不影影响响程程序序功功能能实实现现的的情情况况下可以采用一些优化算法。下可以采用一些优化算法。7.6 08C编程技巧 7.6.3 数据存储器的分配数据存储器的分配 单单片片机机内内部部数数据据存存储储器器RAM只只有有几几百百字字节节,内内部部处处理理器器、内内部部堆堆栈栈、压压缩缩栈栈、所所有有程程序序变变量量和和所所有有包包含含进进来来的的库库函函数数都都将将使使用用数数量量有有限限的的内内部部数数据据存存储储器器RAM。在在进进行行程程序序设设计计时时应应该该尽尽量量的的使使用用局部变量,提高内部数据存储器的使用率。局部变量,提高内部数据存储器的使用率。7.6 08C编程技巧 7.6.4 单片机单片机C语言与汇编语言的混合编程语言与汇编语言的混合编程 C代码中可以嵌入汇编程序,汇编中也可以调用代码中可以嵌入汇编程序,汇编中也可以调用C代码中的变量代码中的变量与子程序。与子程序。v使用使用C代码中定义的变量:在变量名前加代码中定义的变量:在变量名前加_或或%,例如:,例如:unsigned char sPortA;asm(“lda%sPortA”)或或asm(“lda _sPortA”)v调用调用C代码中定义的函数:在函数名前加代码中定义的函数:在函数名前加 _,例如:,例如:function1();asm(“jsr _function1”)返回返回7.6 08C编程技巧 本章小结本章小结 单片机单片机C语言和标准语言和标准C语言的用法基本相同,但是单片机语言的用法基本相同,但是单片机C语言语言是针对于资源少的是针对于资源少的MCU,它的编程方法和编程手段与,它的编程方法和编程手段与PC机上使用机上使用C语言还是有很大差别。本章讲述了单片机中选用语言还是有很大差别。本章讲述了单片机中选用C语言编程的优越语言编程的优越性,简单介绍了标准性,简单介绍了标准C语言,然后阐述了语言,然后阐述了08C的一些特殊用法,并通的一些特殊用法,并通过实例讲述过实例讲述08C语言编程框架以及编译过程。使用语言编程框架以及编译过程。使用C语言进行单片机语言进行单片机程序开发,必须要对单片机体系结构和硬件资源作详尽了解,才能程序开发,必须要对单片机体系结构和硬件资源作详尽了解,才能写出高质量实用的写出高质量实用的C语言程序。语言程序。返回返回谢谢46、我们若已接受最坏的,就再没有什么损失。卡耐基47、书到用时方恨少、事非经过不知难。陆游48、书籍把我们引入最美好的社会,使我们认识各个时代的伟大智者。史美尔斯49、熟读唐诗三百首,不会作诗也会吟。孙洙50、谁和我一样用功,谁就会和我一样成功。莫扎特
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!