AVR学习笔记十一、AVR内部EEPROM的读写实验.docVIP

AVR学习笔记十一、AVR内部EEPROM的读写实验.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AVR学习笔记十一、AVR内部EEPROM的读写实验

AVR学习笔记十一、AVR内部EEPROM的读写实验 -------基于LT_Mini_M16 11.1 基于ATmega16内部EEPROM的读写实验 11.1.1、实例功能 AVR单片机的多数型号都有芯片内置的EEPROM,这些EEPROM可以用来保护芯片掉电后要保存的数据。对于ATmega16来说,芯片内置的EEPROM的容量是2K位(即512字节),可以重复擦写的次数是10万次。 AVR单片机中的EEPROM是数据型EEPROM,即只能保存数据,在AVR单片机正常工作的情况下,可以用WINAVR中自带的函数读/写这些数据。 本实例就利用WINAVR中自带的EEPROM的读写函数来对ATmega16的内部EEPROM进行读写。 本实例有两个功能模块: ● 了解WINAVR自带的EEPROM读写函数。 ● 编写程序,实现对ATmwga16内部EEPROM的读写。 通过本实例的学习,掌握以下知识点: ● 如何利用WINAVR自带的EEPROM读写函数实现对ATmega16的内部EEPROM的读写。 11.1.2 WINAVR中自带EEPROM读写函数的说明 WINAVR中自带了EEPROM读写函数,利用这些函数可以很轻松的实现对AVR单片机内部EEPROM的读写。 如果要使用WINAVR中自带的EEPROM读写函数,首先要在程序中包含EEPROM函数的头文件,使用如下语句即可: #include avr/eeprom.h 同我们前面学习过的AT24C16一样,在对EEPROM进行读写之前,应当确认EEPROM已经准备好被操作;否则,如果在EEPROM处于写周期时对其进行读写操作的话,可能会导致非常大的读写延迟。因此,在对EEPROM进行读写前,应用eeprom_is_ready()查询EEPROM的工作状态,在准备好的情况下,再进行操作,从而确保程序的实时性。 下面我们来了解一下EEPROM的读写函数。 ● 测试EEPROM是否准备好,如果准备好,宏函数返回1,否则返回0 #define eeprom_is_ready() bit_is_clear(EECR,EEWE) ● 读取指定地址处的一个字节 uint8_t eeprom_read_byte(const uint8_t *addr) ● 读取指定地址处的一个字(即两个字节) uint16_t eeprom_read_word(const uint16_t *addr) ● 成块读取指定地址处的成块数据(多个字节) void eeprom_read_block (void *pointer_ram ,const void *pointer_eeprom,size_t n) 其中各参数分别是指:pointer_ram读取的数据在RAM区存放的位置 pointer_eeprom 读取的数据在EEPROM区存放的位置 n 读取的字节长度 ● 向指定地址写入一个字节数据 void eeprom_write_byte(uint8_t *addr, uint8_t value) ● 向指定地址写入一个字的数据(两个字节) void eeprom_write_word(uint16_t *addr, uint16_t value) ● 向指定地址写入成块的数据(多个字节) void eeprom_write_block(const void *pointer_ram , void *pointer_eeprom , size_t n) 其中各参数分别是指:pointer_ram将要写入的数据在RAM区存放的位置 pointer_eeprom 将要写入的数据在EEPROM区存放的位置 n 写入的字节长度 ● 等待EEPROM读写空闲,发生空闲时返回 #define eeprom_busy_wait do {} while (!eeprom_is_ready()) 11.1.3 电路和连接 本实例只是对AVR单片机内部EEPROM的读写。没有用到任何外部电路(当然电源电路、复位电路、下载电路等构成单片机工作的最基本电路还是需要的。^_^)。 11.1.4 程序设计 1、程序功能 程序的功能是对ATmega16单片机的内部EEPROM进行读写操作,通过控制8个LED显示读取的数据是否正确,程序比较简单,直接看程序就能明白原理了。 2函数说明 本程序主要使用的是WINAVR自带的EEPROM读写函数,前面已经介绍过,在此不再说明。 3、使用WINAVR开发环境,使用的是外部12M的晶振,所以需要将makefile文件中的时钟频率修改为12M。另外在程序烧录到单片机的时

文档评论(0)

zhuwenmeijiale + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档