我了解到的基础知识:
1.keil5下方output窗口中会出现相应提示,这个窗口告诉我们编译完成后的情况, data=36,指的是我们的程序使用了单片机内部的 256字节 RAM 资源中的 36个字节, code=339 的意思是使用了 8K 代码 Flash 资源中的 339 个字节。
2.code关键字的作用是告诉单片机,我定义的数据要存储在ROM(程序存储区)里面
问题:我想要用code把定义的数组存入ROM,减少RAM的使用空间,使用code关键字后,RAM对应的data=12,所占用空间确实减少了24字节,问题是ROM对应的code=208,程序所占用空间没有增加反而减少了,本人是初学者,这个问题很简单,但是却困扰我许久,希望可以得到帮助
加code关键字之前
你不用code,变量初值也需要存在的,这个空间当然在ROM里,所以改成code后,code空间不会增加,因为之前也有同样大的一段ROM空间存着初始值;不用code的话,单片机要从ROM拷贝到RAM的(这个不需要你去操作,编译器会自动增加这样一段代码),这些操作的指令当然也是在code空间,用code后,这些操作就不需要了,所以code空间的消耗反而会减少。
你观察得挺仔细,其实如果你再往后面,可能还会发现另一个奇怪的现象,就是你定义一个函数,如果你在代码里调用了它,再对比一下不掉用它,你会发现调用它后,消耗的RAM可能更少一些。这些看似不合逻辑的现象,其实仔细分析,都不难解释。