求助!!!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环境还有什么地方需要特别设置的? 哎,自己结贴
刚才莫名其妙就把数据读出来了,而且是超简单的办法,如下:
#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);
}
} http://cache.amobbs.com/bbs_upload782111/files_33/ourdev_581427FBLZAK.jpg
(原文件名:{IJF(3C4SSX_($JM
页:
[1]