/***********************************************
**** AVR 内部EEPROM读写范例 ***
***********************************************/
/*
本程序简单的示范了如何使用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窗口下察看
*/
#include
#include
////时钟定为内部1MHz,F_CPU=1000000 时钟频率对程序的运行没什么影响
/*
GCCAVR(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数据
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !