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

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3491|回复: 0
打印 上一主题 下一主题

CCSC 应用心得之二:节省ROM空间的几个方法

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-28 17:38:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-24 10:00 , Processed in 0.056706 second(s), 33 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表