freescale单片机程序的设计.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函数的结构和函数间参数的传递 单片机中的参数都是通过堆栈和寄存器传递的,在C语言和汇编语言混合编程时: 返回参数,即return(n)的n值,char-A;int-H:X;其它-(H:X) 定义函数(形式参数):1个char-A;多个char-堆栈+X+A; 1个int- H:X;多个int-堆栈+ H:X 调用参数:函数有固定数目的形式参数,讲根据参数的类型和个数,选择堆栈或者A、H:X寄存器 如果函数的形式参数数目不固定,则参数的入栈顺序与(4)相反:从右向左将参数入栈 字段 字符数 内容 类型 2 记录类型S0,S1等 记录长度 2 记录中除类型和记录的字符对的数目 地址 4,6或8 表示数据将装入的存储器地址,地址可为2,3或4字节(取决于记录类型) 程序/数据 0~2n 为0~n字节可执行程序,数据或描述信息 校验和 2 组成记录程序/数据的所有字符之和值反码的低位字节 S记录各字段的内容 S记录类型 S记录共定义了8种类型。它们提供了编码,传送和译码的功能。Motorola的装入程序,记录传送控制程序,交叉汇编程序,文件生成和调度程序等均要使用S记录格式。简化了的S08交叉汇编只使用两种类型:S1和S9。 Motorola S格式记录类型的完整定义如下: S0 S格式文件的第1个记录以十六进制ASCII码值的形式记录本文件的文件名,首尾包括记录长度和校验和。 S1 地址为2字节的程序/数据记录。 S9 S1记录的结束行记录。 S2地址为3字节的程序/数据记录。 S8 S2记录的结束行记录。 S3 地址为4字节的程序/数据记录。 S7 S3记录的结束行记录。 S5 标记本文件总共有多少个S1,S2或S3记录。 C语言是一种通用的程序设计语言 使用高级语言编写软件事半功倍 C语言是与硬件无关的通用程序设计语言:它本身不包括输入、输出语句,但是需要通过输入、输出语句同硬件打交道。输入、输出语句中只有底层的几个函数与硬件设计有关 只要提供给C编译器几个基本的I/O函数,在程序设计中就可使用C语言 §3 C语言程序开发 如何使C语言用于单片机的开发? 用C语言写应用程序的好处? 系统可以在其他计算机上仿真:通常软件的工作量要大得多,宜尽量提高效率 应用程序具有可移植性:产品的更新换代 便于程序调试:格式输出函数printf() C语言库函数丰富:数学运算、码制转换、字符串处理等 源程序易读、易改 便于使用实时操作系统(RTOS):是单片机乃至嵌入式系统开发的有力工具,尤其是开放源代码的RTOS 还使用汇编语言吗? 系统的硬件部分也可以用C编写,但是汇编更直观、方便,适宜的分工是C编写与硬件无关的程序,用汇编编写: 系统的初始化 中断向量的初始化 输入/输出函数 对于单片机系统,与硬件相关的程序量一般不会超过2KB,如果整个应用程序对于4KB,就应该使用C语言 C编译器相关的问题 编译——将C源程序转换为目标机器码的过程;交叉编译器——将C源程序转换为目标机器码的专用程序 嵌入式C:是ANSI C的子集,单片机的RAM、ROM有限,且面向专门的应用 嵌入式应用对系统的实时性有较高要求,必要时要精确计算某段代码的运行时间 函数的可重入问题:在多认为环境下,某个函数被一个以上任务调用时,可能会发生错误或冲突,(是否使用了全局变量) C语言本身与硬件无关,也与操作系统无关,C交叉编译器遇到I/O任务时,将该任务交给操作系统或硬件相关的函数 C语言的运行环境 任意一个函数,如果为空函数 function() { } 它编译的结果是:RTS ;子程序返回 C语言的主程序是从main()开始的,如果main()为空函数,编译后多出的代码就是为main()建立程序运行环境的,包括: 设置堆栈指针初值 LDHX #StackTop #define Stack_Init() {asm; LDHX #StackTop; TXS} *函数调用的层数、中断嵌套的层数、局部变量问题 相关硬件的初始化 调用main()函数使之运行 给出main()函数完成后的出口,即执行exit() 建立C程序运行环境的例子: /*File name: Startup.asm */ LDHX #StackTop //initial SP TXS JSR HardwareInit // HardwareInit Initial Function JSR main //call C program JMP MonitorWarmStar //Return to debug /*File name: Startup.c */ # include “includes.h” # include “ma

文档评论(0)

lingyun51 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档