- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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语句生成了哪几句汇编语句。
* 对编译器/连接器特性的了解—单片机不同其编译器也不同,即使是同一内核的单片机,不同编译器的代码
效率和优化方法也是不同的。
* 清楚地认识系统—除了要了解与系统成本相关的内存,也要了解系统中其他重要的部分,比如对系统运行
时
您可能关注的文档
- 基于DVB_S2标准LDPC码译码器的设计.pdf
- 第6章-并行接口-G.pdf
- 一种512+Kbit同步高速SRAM的设计.pdf
- 基于AT89C51的数字温度检测系统的硬件设计.pdf
- 数码管显示数码符号实验报告(含源代码).pdf
- 基于STC89C516的超市智能购物车研发.pdf
- Fanuc功能信号一览表(符号顺序).pdf
- 智能上下班打卡系统.pdf
- 第8章 §8-1 单片机接口概述090216.pdf
- 数字回响(数字延迟电路).pdf
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
最近下载
- 矿用隔爆兼本安型控制器工艺流程图.doc VIP
- 政治学概论政治学概论编写组05政党与政党制度.ppt VIP
- 《乡村旅游规划与实践》课件——项目七 乡村旅游商品开发与设计.pptx VIP
- 国家义务教育质量监测心理健康测试题.pdf VIP
- 《分数加法和减法》单元整体设计 -2023-2024学年五年级下册数学人教版.doc VIP
- 《0~3岁婴幼儿保育与教育》PPT教学课件(全).pptx VIP
- 小学科学实验课学生合作学习策略与互动模式研究教学研究课题报告.docx
- 测绘工程管理与法律法规 测绘违法案例60讲 5测绘违法案例五.ppt
- 第六届中国国际“互联网+”大学生创新创业大赛项目计划书【模板】.pdf
- 政治学05 政党与政党制度.ppt VIP
文档评论(0)