碧波液压网 欢迎你,游客。 登录 注册

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

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  本文主要讨论在CodeWarrior开发环境下如何写出适用于HC(S)08单片机的高效C语言程序。首先介绍嵌入式系统中C语言编程的特点,然后介绍HC(S)08系列单片机在C语言编程方面的优势,并给出各种高效C代码的例子程序和相关注释。

  嵌入式系统的C语言编程

  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语言的编程。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论