×

AVR内部EEPROM使用范例程序

消耗积分:10 | 格式:rar | 大小:555 | 2008-10-31

分享资料个

/***********************************************
****      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)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !