AVRWARE++开发笔记11:将数组存于ROM中


    本日志介绍在AtmelStudio中,将数组存于ROM中的方法。

    如果我们不加任何附加声明定义数组或其它变量,在
AtmelStudio中(实际上不仅是 AtmelStudio,其它GCC采用同样的处理方法 ),数组或变量是定义在RAM中的。但是单片机中的RAM的容量是比较小的,如果我们有较大的数据(例如数组)需要存储,我们就需要把其定义在ROM中。在Keil、IAR等软件中,都有专门的关键字用于对这些变量和数组进行定义。在这里,我们将介绍AtmelStudio中的定义方法。

    在
AtmelStudio中,希望把数组或变量定义在ROM中,需包含 pgmspace.h头文件,具体的程序写法如下:
#include <avr/pgmspace.h>   

    然后在程序中定义数据类型,程序如下。这段程序实际上是在 pgmspace.h头文件中定义的,但其有条件编译的限制,还需仔细看懂其条件编译的使用条件,要不就自己定义就好了。
typedef unsigned char PROGMEM prog_uchar;

    有了
prog_uchar数据类型,我们就可以声明数组了,声明程序如下。数组中的内容将存于ROM中。
const prog_uchar Zk_ASCII8X16[]={} 

    最后,就是调用方法,其程序如下。我们要用 pgm_read_byte函数进行调用。
ywbuf[j]=pgm_read_byte(&Zk_ASCII8X16[ulOffset+j]); 

    就这么多内容,学会后,就可以将数据存于ROM中了。


原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163 
 CSDN:http://blog.csdn.net/qingwufeiyang12346
相关文章
相关标签/搜索