[AVR单片机] 使用ICCAVR软件对AVR芯片的EEPROM编程问题

[复制链接]
2007|3
 楼主| qazq123 发表于 2015-11-3 15:17 | 显示全部楼层 |阅读模式
#pragma data:eeprom
unsigned char a=5;
#pragma data:data   
在iccV7的软件中,EEPROM的调用应该是上面那样子吧?不是非常清楚,网上找来的例子。  那问下数据是存储进了EEPROM中,那地址呢?  我想在main的初始化中先读取a变量的值
cdwess 发表于 2015-11-3 20:19 | 显示全部楼层
//功能:E2PROM单字节读函数
uchar e2prom_read(uint addr)  
{
while(EECR & (1<<EEWE));
EEAR = addr;
EECR|=BIT(EERE);
return EEDR;
}


//功能:单字节写函数
void e2prom_write(uint addr,uchar wData)
{
while(EECR & BIT(EEWE));
EEAR=addr;
EEDR=wData;
EECR|=BIT(EEMWE);
EECR|=BIT(EEWE);
}


//功能:E2PROM多字节读函数
void e2prom_reads(uint addr, char *ptr, uint size)
{
uint i;
for(i=0;i<size;i++)
{
  ptr[i]=e2prom_read(addr+i);
}
}


//功能:E2PROM多字节读函数
void e2prom_writes(uint addr, uchar *ptr, uint size)
{
uint i;
for(i=0;i<size;i++)
{
  e2prom_write(addr+i,ptr[i]);
}
}
这个才是对的
 楼主| qazq123 发表于 2015-11-4 08:39 | 显示全部楼层
cdwess 发表于 2015-11-3 20:19
//功能:E2PROM单字节读函数
uchar e2prom_read(uint addr)  
{

这个多字节的吧,我读取uchar就够了,读取出来的是错的,不知道为什么,我默认读入的值读取出来是错误的,iccavr应该十进制的数,比如10,应该可以直接写入吧?不用转换成二进制吧?
234105664 发表于 2016-7-11 16:17 | 显示全部楼层
#pragma data:eeprom
unsigned char a=5;
#pragma data:data   
这样存入EEPROM中的数据默认是从地址0开始存储的,所以你变量a(5)是存在EEPROM的0X00地址的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

163

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部