微控制器的C语言程序设计.ppt

上传人:sccc 文档编号:5380553 上传时间:2023-07-01 格式:PPT 页数:18 大小:375.51KB
返回 下载 相关 举报
微控制器的C语言程序设计.ppt_第1页
第1页 / 共18页
微控制器的C语言程序设计.ppt_第2页
第2页 / 共18页
微控制器的C语言程序设计.ppt_第3页
第3页 / 共18页
微控制器的C语言程序设计.ppt_第4页
第4页 / 共18页
微控制器的C语言程序设计.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《微控制器的C语言程序设计.ppt》由会员分享,可在线阅读,更多相关《微控制器的C语言程序设计.ppt(18页珍藏版)》请在三一办公上搜索。

1、第9 章微控制器的C 语言程序设计,9.1.1 微控制器的编程语言,BASIC 语言简单易学,适用于对编程效率或运行速度要求不高的场合,但是BASIC 采用浮点运算,导致程序复杂且执行时间长,即使用BASIC 编译器也未能解决这个问题。PLM 可以说是“高级汇编语言”,详细控制着代码的生成。但对很多微控制器,PL M 不支持复杂的算术运算和浮点变量,也没有丰富的库函数。,9.1.1 微控制器的编程语言,用C 语言进行微控制器程序设计的优点:()开发速度大大加快。()可以实现复杂的算法。()可移植性强。()程序易读易改,调试方便。()可以与汇编语言混编,发挥各自的优点。,9.1.2 C语言编译器

2、与程序开发过程,9.2.1 KEIL 编译器,KEIL 编译器是基于C内核的微处理器软件开发平台,其中,Vision集成开发环境是将编辑、编译、汇编、链接和调试等各阶段都集成在一个程序内的集成开发环境,它将项目管理、源代码编辑和程序调试等组合在一个功能强大的环境中,编写程序、编译和链接后可直接运行。避免了不必要的分散重复作业,缩短了开发周期。,9.2.2 C51 程序设计基础,数据类型,变量,在C中对变量进行定义的格式如下:存储种类 数据类型存储器类型 变量名表其中,“存储种类”和“存储器类型”是可选项。变量的存储种类有四种:自动(auto)、外部(extern)、静态(static)、寄存器

3、(register)。若省略存储种类选项定义变量,则该变量将为自动(auto)变量。在定义一个变量时,除了需要说明其数据类型外,C 编译器还允许说明变量的存储器类型。,存储模式,C 编译器的三种存储模式SMALL、COMPACT 和LARGE 决定了变量的默认存储类型和参数传递区域,9.3.1 ICC08编译器和08C语言,Motorola 微控制器常用的C 语言编译器有ICC 编译器,Hiware C 编译器和Small C 编译器等。ICC是ImageCraft Creations 公司推出的一款针对MOTOROLA HC的商业化C语言编译器,可以生成如.S、.MAP 和.LST 等多种格

4、式的文件,但其内部并不包含调试工具,编译后只能用其他的调试软件来调试它生成的目标文件或下载到芯片中进行在线运行和调试。,ICC支持的数据类型,IO 口和寄存器的定义,在C 语言中操作寄存器及IO 口时,通常预先在头文件中使用宏定义,define IO 口名(volatile unsigned char)IO 口地址 define 寄存器名(volatile unsigned char)寄存器地址,并口A、B、C、D 的定义 define PTA(volatile unsigned char)0 x00 A 口 define PTB(volatile unsigned char)0 x01 B

5、口 define PTC(volatile unsigned char)0 x02 C 口 define PTD(volatile unsigned char)0 x03 D 口 SPI 寄存器的定义 define SPCR(volatile unsigned char)0 x10 SPI控制寄存器 define SPSCR(volatile unsigned char)0 x11 SPI 控制状态寄存器 define SPDR(volatile unsigned char)0 x12 SPI 数据寄存器,中断处理,在HC系列微控制器Flash 地址空间中,有一段专门用来存储所有的中断向量的地

6、址空间,每个中断处理函数占用两个字节的中断向量地址。中断函数用pragma interrupt handler 定义,编译器会用rti而不是rts 作为返回指令。中断向量用pragma abs address 定义。,中断处理函数:,()新建一个vectors.c,并加入工程中;()定义中断处理函数;()定义中断向量;()在中断向量中填入中断处理函数名称。,串口接收中断处理函数 pragma interrupt handler sci receive isrvoid sci receive isr(void)中断向量定义 pragma abs address:0 xffe4void(const

7、 vectab)(void)sci receive isr;pragma end abs address,中断处理,C 语言与汇编语言的混合编程,()asm(“汇编指令”)asm(“cli”)开中断asm(“sei”)关中断可用 define 进行宏定义,以方便使用。define INTR ON()asm(“cli”)define INTR OFF()asm(“sei”)()定义汇编子程序。定义格式如下:子程序名代码rts注意以下几点:在子程序名前加“”;汇编子程序只能放在 s 文件中,然后将该文件加入到工程中;在C 代码中调用汇编子程序时可直接调用:子程序名();汇编子程序编写时,如果使用了

8、A 或HX,则需要保护寄存器A 或HX。,C 提供一系列可供使用的函数库,其中包括了标准C 所具有的大部分库函数和一些C 特有的函数,但是C 中的有些函数和标准C 中的函数的功能不一样。这些函数的头文件位于安装目录的include 目录下,库文件位于安装目录的lib 目录下。具体可参阅其文档。,C 的常用库函数,数据类型的选用:只有bit 和char 等数据类型是机器语言直接支持的数据类型,用此类数据类型的语句所生成的代码较短;而其他的数据类型,如整型和浮点型等数据要有一定的内部程序或内部函数的支持,相对来说用该类数据类型的语句生成的代码要长。有些C 语言程序表面上看起来十分的简单,但在实际编

9、译时,生成的代码却相当长。因此我们要按照实际需要,尽量选用占用存储空间少的数据类型,可以大大的减少所生成的代码长度。算法设计:数据存储器的分配:尽量的使用局部变量,提高内部数据存储器的使用率。,Motorola 08C 语言编程,编程管理,编译文件输出,C 语言程序的组成,一个完整的C 语言程序通常包含以下几个部分:汇编语言的启动文件 存储器映像及IO 端口的头文件 主程序模块 中断服务程序模块 中断向量表文件,C 语言源程序的参考范例,include includechar SendFlag 0 x00;void init devices(void)SEI();关闭中断CONFIG2 0 x01;内部总线时钟用作SCI 时钟CONFIG1 0 x3D;clock init();PLL 初始化port init();初始化IOtim1 init();定时器初始化sci init();串口初始化CLI();开中断主程序void main()init devices();设备初始化while(1)主程序循环等待中断,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号