新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > AVR内部EEPROM读写范例

AVR内部EEPROM读写范例

作者:时间:2013-12-12来源:网络收藏

/***********************************************

**** ***

**** 编译器:WIN20050214 ***

***********************************************/

/*

本程序简单的示范了如何使用ATMEGA16的EERPOM

EEPROM的简介

EEPROM的写操作

EEPROM的读操作

出于简化程序考虑,各种数据没有对外输出,学习时建议使用JTAG ICE硬件仿真器。

在打开调试文件到JTAG后,打开Debug -> JTAG ICE Options菜单,然后在JTAG ICE Properties中点击Dbug页面,将preserve eeprom选项选中。 在每次仿真调试时候,就保护EEPROM内容了。否则,会按照默认设置擦除EEPROM的内容。

由于定义了EEPROM变量,JTAG调试时会询问是否初始化EEPROM,请选择[否],EEPROM的数据也可以在view->memory,选Eeprom窗口下察看

*/

#i nclude

#i nclude

////时钟定为内部1MHz,F_CPU=1000000 时钟频率对程序的运行没什么影响

/*

GCC(avr-libc)里面自带了EEPROM的读写函数。

下面列举部分常用函数(原型)

#define eeprom_is_ready() bit_is_clear(EECR, EEWE)

检测EEPROM是否准备好。OK返回1(返回EEWE位)

#define eeprom_busy_wait() do {} while (!eeprom_is_ready())

等待EEPROM操作完成

extern uint8_t eeprom_read_byte (const uint8_t *addr);

读取指定地址的一个字节8bit的EEPROM数据

extern uint16_t eeprom_read_word (const uint16_t *addr);

读取指定地址的一个字16bit的EEPROM数据

extern void eeprom_read_block (void *buf, const void *addr, size_t n);

读取由指定地址开始的指定长度的EEPROM数据

extern void eeprom_write_byte (uint8_t *addr, uint8_t val);

向指定地址写入一个字节8bit的EEPROM数据

extern void eeprom_write_word (uint16_t *addr, uint16_t val);

向指定地址写入一个字16bit的EEPROM数据

extern void eeprom_write_block (const void *buf, void *addr, size_t n);

由指定地址开始写入指定长度的EEPROM数据,但不支持部分AVR,原文如下:

ote This library will e not work with the following devices since these

devices have the EEPROM IO ports at different locations:

- AT90CAN128

- ATmega48

- ATmega88

- ATmega165

- ATmega168

- ATmega169

- ATmega325

- ATmega3250

- ATmega645

- ATmega6450


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭