winnie 发表于 2009-3-28 17:38:19

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位指针。
页: [1]
查看完整版本: CCSC 应用心得之二:节省ROM空间的几个方法