avr EEPROM的读和写,有点问题,不知道问题出在哪里!求前辈指导。

2019-03-24 21:00发布

#include<iom16v.h>
#include<macros.h>


#define uchar unsigned char
#define  uint unsigned int

void init()
{
         DDRA=0xff;
         PORTA=0xff;
         
         
}

void delay (uint z)
{         
         uchar x,y;
         for(x=z;x>0;x--)
                 for(y=110;y>0;y--);
         
}   

void eeprom_write(uint addr,uchar dat)
{
         SREG&=BIT(7);//关总中断
         while(EECR&BIT(EEWE));//等待EEPROM为0
         //下一行 illegal character `243'
         // illegal character `273'
         EEAR=addr;
         //下一行  found `unsigned int' expected a function
         //operands of = have illegal types `void' and `unsigned char'
         //lvalue required
         EEDR=dat;
         EECR|=BIT(EEMWE);
         EECR|=BIT(EEWE);
         SREG|=BIT(7);                          
}

uchar eeprom_read(uint addr)
{          
          uchar edata;                          
          SREG&=BIT(7);//关总中断
           while(EECR&BIT(EEWE));
           EEAR=addr;
          
           EECR|=BIT(EERE);
           edata=EEDR;
           SREG|=BIT(7);       
          
          
           return edata;
          
}
void main()
{         
         uchar i=10;
         init();
         i=eeprom_read(2);
         i++;
         eeprom_write(2,i);
         while(1)
         {
                           PORTA=eeprom_read(2);
                         delay(500);
         }
         
}


iccavr编译器,有两个地方出错在代码//下一行中对应的错误。求前辈指导! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
David_Lee
2019-03-25 07:42

原帖由 2592315 于 2011-11-19 21:16 发表 #include #include #define uchar unsigned char #define uint unsigned int void init() { DDRA=0xff; PORTA=0xff; } void delay (uint z) { uchar x,y; for(x=z;x>0;x-- ...

 

如果使用的是ICCAVR的话,软件安装目录下有函数可直接调用,已经编好的eeprom操作程序。

一周热门 更多>