英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

标题: CCSC 应用心得之二:节省ROM空间的几个方法 [打印本页]

作者: winnie    时间: 2009-3-28 17:38
标题: CCSC 应用心得之二:节省ROM空间的几个方法
PIC单片机的开发经常采用替换法,比如用16F877A开发调试,最终产品用16F74。如果16F877A的代码用了50%以上的空间(有时候时49%),切换到16F74时会提示代码空间不足。此时,就要对代码进行优化了。
一:采用 fast io 选项。
        如果某组端口的IO方向在初始化后,不会切换(确定哦),则可以在头文件中加入
       #progma use fast_io(A)       //A端口是固定输入输出方向的
       检查生成的代码,看看有什么区别。
二:尽量减小变量的长度,不过要注意不要溢出。
        位变量的赋值、读取、判断是最快的,所以能用的话尽量采用。
三:for 语句中  与零比较 要比 与非零值比较 要节省空间。
        比如: for (i = 8; i>0; i--) 比 for (i = 0; i<8; i++)   要好。
四:将switch句式修改位 if else句式。
        虽然CCSC也对某些switch句式进行优化,不过试着将switch句式修改位if else 句式,看看能省多少空间。
五:采用合适的指针长度
         指针的长度越小,相应的代码越少。
         16F877A 必须采用16位的指针才能寻址所有的GPR,但是如果你只用到了少于176字节的GPR,则可以采用默认的8位指针。




欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://www.enroobbs.com/) Powered by Discuz! X3.2