您的位置 首页 编程

avr内部EEPROM试验

学习了AVR内部EEPROM的使用。内部flash中保存的是烧录进去的程序。内部EEPROM可以保存数据,并且断电后还保存着。内部SRAM可以保存变量数据…

学习了AVR内部EEPROM的运用。

内部flash中保存的是烧录进去的程序。

内部EEPROM能够保存数据,而且断电后还保存着。

内部SRAM能够保存变量数据,断电后不保存。

仿真图片

程序代码

#include
#include
#include “delay.h”
#define uchar unsigned char
#define uint unsigned int
uchar led7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳7段数码管显现0-9对应的8bit
uchar temp;
void main(void)
{
inti_port(); //端口初始化
eeprom_read(0x00, 0x01, &temp);//先读0x00方位的内容
if(temp>9) //循环显现0-9
{
temp=0;
}
PORTB=led7[temp]; //经过共阳数码管显现
temp++; //把读出的内容+1
eeprom_write(0x00, 0x01, &temp);//把+1后的内部写入EEPROM
while(1)
{};
}

void inti_port(void)
{
PORTB=0xff;
DDRB=0xff;
}

//EEPROM写入函数 addr:地址;number:长度;p_buff:写入数据寄存指针
void eeprom_write(uint addr, uchar number, uchar *p_buff)//此段参阅atmage16标准书写
{
EEARH = 0x00;
while(number–)
{
while(EECR&(1< EEARL=addr++;
EEDR=*p_buff++;
EECR|=(1< EECR|=(1< }
}

//EEPROM读取函数 addr:地址;number:长度;p_buff:读出数据寄存指针*/
void eeprom_read(unsigned int addr, unsigned char number, unsigned char *p_buff)//此段参阅atmage16标准书写
{
while(EECR&(1< EEARH=0x00;
while(number–)
{
EEARL=addr++;
EECR|=(1< *p_buff++=EEDR;
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/274881.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部