ybqwf 发表于 2010-9-8 17:16:45

求助!!!ICC下,怎么从flash中读出数据?

编译器:ICCAVR7.22
目标芯片:mega16
我是这样定义的:
#pragma abs_address: 0x033a

const int Torr[]={3001};

#pragma end_abs_address

然后读取时,是下面这样:
__flash unsigned char *p=(__flash unsigned char *)(0x033a);
DisVal=p;
...
接下来是一段用四个数码管把读出的数显示出来,
但是一直都不正确,我确定显示函数是对的,
但是为什么读的数据总是不对,是不是ICC环境还有什么地方需要特别设置的?

ybqwf 发表于 2010-9-8 20:30:44

哎,自己结贴
刚才莫名其妙就把数据读出来了,而且是超简单的办法,如下:
#include <iom16v.h>
#include <macros.h>


const unsigned char num={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};
unsigned int shm={1,2,3,4};


#pragma data:code

__flash int Torr[]={3001,3011};

#pragma data:data

void main(void)
{
int i=0,DisVal;
init_devices();

      DisVal=Torr;    //****就这样,像读一半数组一样,就把数据读出来了
         shm=DisVal/1000;
        shm=DisVal/100%10;
        shm=DisVal%100/10;
        shm=DisVal%10;


for (i=0;i<4;i++)
        {   
                PORTB=0;
                if(i==0) PORTC=num[*(shm+i)]+0x80;//送数据
                else   PORTC=num[*(shm+i)];
                PORTB=(1<<i);
        }
}

ybqwf 发表于 2010-9-8 20:45:57

http://cache.amobbs.com/bbs_upload782111/files_33/ourdev_581427FBLZAK.jpg
(原文件名:{IJF(3C4SSX_($JM
页: [1]
查看完整版本: 求助!!!ICC下,怎么从flash中读出数据?