您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机avr单片机eeprom初始化配置说明 正文
avr单片机eeprom初始化配置说明

avr单片机eeprom初始化配置说明

点击数:7492 次   录入时间:03-04 11:54:21   整理:http://www.55dianzi.com   AVR单片机

ATmega16 包含 512 字节的 EEPROM 数据存储器。它是作为一个独立的数据空间而存在的,可以按字节读写。 EEPROM 的寿命至少为
      100,000 次擦除周期。 EEPROM 的访问 由地址寄存器、数据寄存器和控制寄存器决定。
      /*
      EEPROM 数据存储器
      EEPROM 地址寄存器(EEARH 和 EEARL)
      bit7      bit6      bit5      bit4      bit3      bit2     bit1      bit0
      EEAR7     EEAR6     EEAR5     EEAR4     EEAR3     EEAR2     EEAR1    
      EEAR0
      Res: 保留
           保留位,读操作返回值为零。
      EEAR8..0: EEPROM 地址
           EEPROM地址寄存器 – EEARH和EEARL指定了512字节的EEPROM空间。EEPROM地址是线性
           的,从0 到511。EEAR的初始值没有定义。在访问EEPROM之前必须为其赋予正确的数据。
      EEPROM数据寄存器 EEDR
      bit7      bit6      bit5      bit4      bit3      bit2     bit1      bit0
      MSB                                                                   LSB
      EEDR7.0: EEPROM 数据
               对于EEPROM写操作, EEDR是需要写到EEAR单元的数据;对于读操作,EEDR 是从
               地址EEAR读取的数据。
      EEPROM控制寄存器 EECR
      bit7      bit6      bit5      bit4      bit3      bit2      bit1     bit0
         –         –         –         –       EERIE     EEMWE      EEWE    
      EERE
      Res: 保留
           保留位,读操作返回值为零。
      EERIE: 使能EEPROM 准备好中断
             若SREG 的I 为"1",则置位EERIE 将使能EEPROM 准备好中断。清零EERIE 则禁止此
             中断。当EEWE 清零时EEPROM 准备好中断即可发生。
      EEMWE: EEPROM 主机写使能
              EEMWE决定了EEWE置位是否可以启动EEPROM写操作。当EEMWE为"1"时,在4个时钟周
              期内置位EEWE将把数据写入EEPROM的指定地址;若EEMWE为"0“,则操作EEWE不起
             作用。EEMWE置位后4个周期,硬件对其清零。见EEPROM 写过程中对EEWE 位的描述。
      EEWE: EEPROM写使能
          EEWE为EEPROM写操作的使能信号。当EEPROM数据和地址设置好之后,需置位EEWE以便将
      数据写入EEPROM。此时EEMWE必须置位,否则EEPROM写操作将不会发生。

      */
      #include<iom16v.h>
      #include<macros.h>
      /*EEPROM的512字节读写操作*/
      void EEPROM_write(unsigned int uiAddress, unsigned char
      ucData)//写数据.存数据的地址0-511之间
      {

      while(EECR & (1<<EEWE));//等待上一次写操作结束
      EEAR = uiAddress;//设置地址
      EEDR = ucData;//设置数据
      EECR |= (1<<EEMWE);//置位EEMWE
      EECR |= (1<<EEWE);//置位EEWE启动写操作
      }

      unsigned char EEPROM_read(unsigned int uiAddress)//读数据
      {
      while(EECR & (1<<EEWE));//等待上一次写操作结束
      EEAR = uiAddress;//设置地址
      EECR |= (1<<EERE); //设置EERE一启动读操作
      return EEDR;//返回数据寄存器里面的数据,读操作完成,
      }




本文关键字:单片机  AVR单片机单片机-工控设备 - AVR单片机