小单片机写法的一些注意事项
编辑时间:2022-06-01 作者:金满斗 浏览量:2053 来源:原创

从来没有这么抠搜过。

准备用STC15F104W带fd650的中九屏最终做个遥控测码的。

模块化开发,多年的习惯让我看不了主main文件里一大堆东西。

显示做显示。

遥控解码做遥控解码。

基本都调试完成。

结果合成编译的时候怎么都不行了,空间不够用了。

STC15F104W只有4k空间,真的是赤贫啊。

单独编译仔细看,光显示就占了3k,再次仔细检查代码,发现这句

因为用到了指针,占了0.4k。

这句,因为用到了结构体转换,也占用了0.4k

经过一番折腾,换函数什么的,结果发现换了的函数也是一样。

看来还不是这个问题。

最后还是这样解决问题的。

在大数组定义前都加上 xdata。

屏蔽未用的函数。

死扣每个变量的定义,能最小显示的就最小显示。

对应一些经典算法,要好好理解。

比如经典的网上定时器的取法,取高8位和低8位,有的用的/256和%256,这种效率是比较低的,经典的还是位移

获得高8位,只用把这个数右移8位。

比如0xaabb右移8位,0xaabb>>8,就是0x00aa。

获取低8位,只用这个数与0x00ff按位相与。

比如0xaabb和0x00ff按位相与,0xaabb & 0x00ff,结果就是0x00bb。0x00ff,前8位是0,后8位是1,任意数与0相与为0,与1相与不变,于是就清零了前8位,保留了后8位,得到0xbb。

移位与按位与操作的速度要比取余和除法操作快很多,所以效率要高

来说两句吧