使用HITECH编译器编写C程序的心得.doc

使用HITECH编译器编写C程序的心得.doc

ID:50809817

大小:43.45 KB

页数:4页

时间:2020-03-14

使用HITECH编译器编写C程序的心得.doc_第1页
使用HITECH编译器编写C程序的心得.doc_第2页
使用HITECH编译器编写C程序的心得.doc_第3页
使用HITECH编译器编写C程序的心得.doc_第4页
资源描述:

《使用HITECH编译器编写C程序的心得.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、使用HITECH编译器编写C程序的心得用C语言来开发单片机系统有很多好处例如:编写代码效率高、软件调试直观、维护升级方便、代码的重复利用率高、等等。但在单片机上用C语言写程序和在PC机上写程序绝对不能简单等同。因为单片机内的资源非常有限,控制的实时性要求又很高,因此,写单片机程序需要对单片机及编译器有足够的了解才能写出高效的代码。在使用PIC单片机编程时,尤其的对于软件工程师来说,漂亮的语法,完美的编程思想,系统的函数构造等等都是考虑的重点,也是用软件思维评判代码的标准。但是,对于单片机及编译器的了解也是编写程

2、序不可忽视的部分。他们在提高空间利用率和代码运行速度上往往有着不可替代的作用。对他们多一些了解也会让调试程序的过程豁然开朗。现在我以HETICH编译器为例,根据工作中程序编写经历介绍几点提高编程效率的方法。一、优化配置问题很多时候,对程序的编写主张不开优化,由于对汇编不是十分了解,但是查询了很多资料证明了PICC的优化器还是很稳定的。而且我曾经做过一个小试验,打开优化,可以节约很多资源。也有可靠资料显示,开启优化可以节约20%左右的。如果对自己所编写的代码有足够的信心完全可以开启优化。项目中所有的C原程序都将通

3、过C编译器编译成机器码,这些选项决定了C编译器是如何工作的。所有选项又分为两组:普通选项(General)和高级选项(Advanced),分别见C编译器的普通选项最重要的就是针对代码优化的设定。如果没有特殊原因,应该设定全局优化级别为9级(最高级别优化),同时使用汇编级优化,这样最终得到的代码效率最高(长度和执行速度两方面)。如果碰到的一些问题很大可能是自己的程序问题,例如一些变量应该是volatile型但编程员没有明确定义,在优化前程序可以正常运行,一旦使用优化,程序运行就出现异常。但是使用优化后可能对原程序

4、级的调试带来一些不便之处。一次编写代码,为调试程序的临时变量无法中断。可能是因PICC可能会重组编译后的代码,例如多处重复的代码可能会改成同一个子程序调用以节约程序空间,这样在调试过程中跟踪原程序时可能会出现程序乱跳的现象。若为了强调更直观的代码调试过程,你可以将优化级别降低甚至关闭所有优化功能,这样调试时程序的运行就可以按部就班了。二、汇编程序的使用问题HITECH编译器支持内联汇编的使用,这给程序的编写带来很大的方便。因为单片机的一些特殊指令操作在标准的C语言语法中没有直接对应的描述,例如PIC单片机的清看

5、门狗指令“clrwdt”和休眠指令“sleep”;单片机系统强调的是控制的实时性,为了实现这一要求,有时必须用汇编指令实现部分代码以提高程序运行的效率。这样,一个项目中必然会出现C和汇编混合编程的情形,在代码中常见的有如下指令:asm("clrwdt");asm("sleep");asm("nop");同时单片机中的汇编指令实现有些功能的效率要高与C。只要通过试验就可以用于代码中。给出两个实例:1、实现循环右移若干位unsignedintRR_Shift16(unsignedintvar,unsignedcha

6、rcount){while(count--)//移位次数控制{#asm//开始嵌入汇编rrf?_RR_Shift16+0,w//最低位送入Crrf?_RR_Shift16+1,f//var高字节右移1位,C移入最高位rrf?_RR_Shift16+0,f//var低字节右移1位#endasm//结束嵌入汇编}return(var);//返回结果}实现偶校验:bitEvenParity(unsignedchardata){#asmswapf?a_EvenParity+0,w//入口参数data的寻址符xorwf?

7、a_EvenParity+0,frrf?a_EvenParity+0,wxorwf?a_EvenParity+0,fbtfsc?a_EvenParity+0,2incf?a_EvenParity+0,f#endasm//至此,data的最低位即为偶校验位if(data&0x01)return(1);elsereturn(0);}三中断问题要使程序稳定快速的运行,中断程序的处理很重要,因此,中断程序必须要高效,代码要尽量简短,中断服务强调的是一个“快”字。避免在中断内使用函数调用。虽然PICC允许在中断里调用其它

8、函数,但为了解决递归调用的问题,此函数必须为中断服务独家专用。既如此,不妨把原本要写在其它函数内的代码直接写在中断服务程序中。z避免在中断内进行数学运算。数学运算将很有可能用到库函数和许多中间变量,就算不出现递归调用的问题,光在中断入口和出口处为了保护和恢复这些中间临时变量就需要大量的开销,严重影响中断服务的效率。四、定义配置字很多代码的配置字是在CONFIGBIT中进行配置的。这样做

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。