在Almel Studio6中如何定义一个数组到Flash寄存器

来源:互联网 发布:http请求xml数据 编辑:程序博客网 时间:2024/06/05 08:13

使用Almel Studio6编写atmega16a单片机C程序时,定义一个数组到Flash寄存器.

不能这样,需要使用专门的用法,不然结果是错的。

有四个宏,用于读取Flash中的数据,参数是变量的地址
pgm_read_byte
pgm_read_word
pgm_read_dword
pgm_read_float

一个简单的测试程序如下:


#define F_CPU  8000000L

#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>

const PROGMEM uint8_t dat[5]={1,2,3,4,5};
uint8_t cnt;

int main()
{
  DDRD = 0xFF;
  while(1)
  {
    _delay_ms(50);
    PORTD = pgm_read_byte(&dat[(cnt++) % 5]);
  }
}

0 0