网站大量收购独家精品文档,联系QQ:2885784924

HC(S)08单片机的高效C语言编程.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HC(S)08单片机的高效C语言编程

C C 嵌入式系统的CC语言编程 C语言最初是为UNIX操作系统的开发与应用而开发设计的,目前已经成为一种非常流行的编程语言。 因 为C语言既有高级语言可读性强和易于维护升级的特点,又能很好的支持位运算操作,所以C常常被称为中 级语言。另外,C语言数据类型的定义比较自由,所以用它比较容易写出结构化的程序。和汇编语言相比,大 多数电子工程师对C语言的代码效率更关注。他们关心的问题主要集中在RAM、ROM和堆栈空间的使用 效率以及编译器编译优化效率等方面。要写出一个高效的C语言程序,工程师们必须清楚的了解嵌入式系统 中C语言编程的特点,掌握MCU的硬件架构和领会C语句是如何转换成汇编语句的。从台式机转向嵌入式 系统编程必须先了解嵌入式系统的特点。 * 存储空间有限:尽管有些 MCU有外部总线可以外扩存储器,但大多数情况下,程序越小系统成本就越低, 所以要尽可能优化系统缩减代码,经济地使用RAM(包括堆栈)和ROM 存储空间。 * 硬件导向:在台式机上常常需要一个美观的人机交互界面,但是在嵌入式系统中更关注的是对器件的控 制。这就需要我们不仅要掌握这些器件的特性,还要了解与MCU 时钟有关的操作(比如中断响应),在精准的 时间点上对通用I/O 口(GPIO)操作等。某些情况下,还需要根据生成的汇编语句去计算精确的运行时间,甚至 直接用汇编语句编写代码。 * 特殊的处理:与台式机系统不同,MCU系统的编程常会用到一些非标准的语法来帮助编译器根据不同的 MCU内核编译生成不同的代码。例如,在HC(S)08单片机中,有一种直接页(或者叫零页,地址从0x00到0xFF 的页面)的寻址模式。这种寻址模式比其他寻址模式的效率要高,所以我们常常会用一些编译器指令来告诉编 译器把常用的变量放置在零页地址内。另外,不同的MCU内核有不同的中断处理方式、不同的存储模式和 不同的硬件语法结构。要充分利用MCU内核的优点,我们就必须灵活的使用一些关键字和特定的语法。 通常来说,在嵌入式系统中,一个优秀的程序员用汇编写出的代码的效率要比C语言写出的代码高。但是,用 C语言更容易写出一个集效率、可读性和可移植性于一身的好代码。要写出高效的C代码,除了程序员有丰 富的经验外,MCU内核对于C 语言支持的好坏也起了很重要的作用。飞思卡尔公司的HC(S)08系列单片机 的内核在这方面是比较优秀的,它可以很高效的支持C语言的编程。 HC(S)08 C HC(S)08 C HHCC((SS))0088系列单片机的嵌入式CC语言 HC08和HCS08系列单片机都是采用 CPU08内核,该内核能很好的支持C语言编程(更准确的说,HCS08用的 是增强型内核,对C的支持更好)。CPU08内核中有几种寻址模式对C的支持非常好,第一种是变址后自加一 寻址模式,这种寻址模式对于查表的操作十分有效。举例来说,采用这种寻址模式的4字节指令加上CBEQ 和 BRA 指令可以快速的从H:X寄存器所指向的表格中找到和累加寄存器 A中相同值的字节。第二种是存储 器到存储器的寻址这种寻址方式能有效的支持变量的赋值。在零页内地址从, ( 0x00 到 0xFF)数据拷贝只需, 用一句MOV指令就可以了。最后一种但也很有用的寻址模式就是堆栈指针寻址。堆栈指针寻址使得函数 参数的传递以及函数内局部变量的访问变得十分容易。另外,当中断屏蔽不用时,堆栈指针可以用作第二个变 址寄存器,这对多重表格的访问很有用。堆栈在C中的作用主要有三点:子程序参数的传递、局部变量的存 放和递归函数的调用。CPU寄存器中如果没法存放子程序的参数(包括地址),可以把它们存放在堆栈中。 CPU08内核在硬件上不仅提供了堆栈指针 还提供了堆栈指针寻址模式这样可以在不通过出栈入栈操作的, , 情况下直接提取参数值。有了这种寻址模式,也就不需要给局部变量专门开辟一段存储空间了。 C C 高效CC代码的编写 在讨论代码优化之前,我们先要了解以下内容。 * 编程经验—随着程序员编程经验的增长,优化代码的技术也会相应提高。 * 对指令集映射的理解—单片机的内核不同其架构和特性也不相同。必须清楚C语言和汇编语句之间的映 射关系,即这句C语句生成了哪几句汇编语句。 * 对编译器/连接器特性的了解—单片机不同其编译器也不同,即使是同一内核的单片机,不同编译器的代码 效率和优化方法也是不同的。 * 清楚地认识系统—除了要了解与系统成本相关的内存,也要了解系统中其他重要的部分,比如对系统运行 时

文档评论(0)

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

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档