打印
[AVR单片机]

使用ICCAVR软件对AVR芯片的EEPROM编程问题

[复制链接]
1659|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qazq123|  楼主 | 2015-11-3 15:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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

粉丝