新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ATMega16内部EEPROM存储器的应用

ATMega16内部EEPROM存储器的应用

作者: 时间:2012-10-09 来源:网络 收藏

  位2-EEMWE:主机写入允许。该位决定是否允许对进行写入操作。当EEMWE被置位时,在EEWE为1的4个时钟周期内,将写数据到指定的地址;当EEMWE为0,设置EEWE为1不能触发写操作。

  位1-EEWE:EEPROM写允许。 该位作为EEPROM的写入触发。当地址和数据被正确设置以后,且EEMWE为1,则置位EEWE,将触发数据写入EEPROM。如果EEMWE不为1,EEWE不能触发写EEPROM的操作。写EEPROM应该遵循以下步骤:

  (1)等待EEWE为0,即EEPROM为空闲状态;

  (2)等待SPMCR寄存器中的SPMEN位为0;

  (3)写新的EEPROM地址到寄存器EEAR(视具体情况可选);

  (4)写新的EEPROM数据到寄存器EEDR(视具体情况可选);

  (5)写1到EEMWE,并同时写0到EEWE;

  (6)在写1到EEMWE后的4个时钟周期内,写1到EEWE位。

  步骤(2)一般情况下可以省略,还需要注意的是,在步骤(5)和步骤(6)之间发生中断将使写入过程失败,因此建议在对EEPROM进行写操作时清零全局中断允许标志位以屏蔽所有中断。

  位0-EERE:EEPROM读允许。该标志作为读取EEPROM操作的触发。当EEAR寄存器被设置了正确的地址后,向EERE位写入1,将触发EEPROM的读取操作。

  简单的读写EEPROM的C代码见本期配刊光盘的本文目录。

  有了上述内容,实现“密码保管箱”实例的程序流程就比较简单了。先完成单片机的初始化,其初始化代码可以通过ICC AVR软件自动生成。之后,程序开始检测4×4小键盘上的输入,如果小键盘的输入与程序中设定的密码管理箱密码相同,则将存储在EEPROM中的密码送到串口中通过电脑或液晶显示模块进行显示。当然,我们还需要考虑一些编程细节,比如如何比较设定的密码与用户输入的密码等。关于小键盘的操作我们在今年第5期第39页的文章中已经用汇编语言实现过,本期配刊光盘中给出了采用C语言编写的程序,代码看起来更清晰易懂。

  设计好程序后,我们可以用上期介绍的ICC AVR软件进行程序的编译。打开ICC AVR,建立一个工程psmanager,并在工程选项里设定芯片为,然后选择Tools→Application Builder,或者点击菜单栏上的快捷图标,进入应用程序生成器,可以帮助用户快速生成初始化等相关代码。

  如次啊图所示,Target CPU选择M16,Xtal speed根据实际使用情况选择。在Ports项里面是端口初始状态的设置。Timer0、Timer1、Timer2中分别是的3个定时器的设置。UART中是串口的设置。根据实际需要选择合适的设置,然后点击OK,ICC AVR会按照所设置的选项产生初始化代码,用户也可以自行编写初始化代码。

  将Application Builder。产生的代码保存为main.c,并且加入工程。接下来将需要写入EEPROM的密码生成*.eep文件,假设有两组密码需要存储,分别是建设银行卡密码(为123456)和EMAIL ABC@163.COM密码(为ABCDEFG),并设定密码保管箱的密码为“567890”。

  ICC AVR用以下方法产生用于写入EEPROM的eep文件:

  #pragma data:eeprom

  //设置数据区到EEPROM

  char key[]={‘5’,‘6’,‘7’,

  ‘8’,‘9’,‘O’}

  char password[]={“CBC:

  123456%ABC@163.COM:

  ABCDEFG$")

  //假设我们用“%”作为密码之

  间的分割;“$”为密码结束标志

  #pragma data:data

  //设置数据区回到数据

  将以上代码添加在main.c中,注意必须紧跟着头文件之后。这样ICC AVR编译完成后,除了生成单片机执行文件}.hex,同时还将产生一个eep文件,可以通过Ponyprog软件写入ATMega16的EEPROM中。由于某种原因,在ATMega16的O~511共512个字节的EEPROM中,在地址O处的字节是不能使用的,所以上面的密码将从EEPROM的地址1处依次存储,即ATMega16可用的EEPROM为511个字节。

  本例程中将功能相关的函数放在一起构成一个C文件,因此在一个工程中会有多个C源文件,这样做的好处是使得结构清晰,修改和扩充都很方便。但是要注意文件包含问题,可以查阅相关的C语言书籍。

  在完成所有的代码后进行编译,将编译后生成的hex文件和eep文件一起写入ATMega16。步骤如下:打开Ponyprog软件,选择File→OpenProgram(FLASH)File,选中生成的hex文件;再选择File→Open Data(EEPROM)File,将文件类型更改为*.eep,然后选中eep文件。连接好硬件后,点击Command→Write All,即可写入。

  工作中的系统如上图所示。 因为本文介绍的“密码保管箱”要借助于电脑进行显示,还不够独立,笔者将在下期介绍如何使用ATMega16控制液晶显示屏,让密码保管箱可以独立使用。

存储器相关文章:存储器原理



上一页 1 2 下一页

关键词: ATMega16 EEPROM 存储器

评论


相关推荐

技术专区

关闭