⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eeprom.c

📁 AVR16单片机2EPRAM
💻 C
字号:
/*******************************************
  文件:EEPROM.C
  环境:编译为ICC AVR6.25A,仿真为AVR Studio4.10 
  硬件:ATMEGA16芯片
  日期:2006年12月10日 
  功能:实现MEGA16的EEPROM的读和写操作
  备注:参考《AVR系列单片机C语言编程与应用实例》(清华大学出版社)
/******************************************/
#include <iom16v.h>			//包含型号头文件
#include <macros.h>			//包含"位"操作头文件
#include <stdio.h>			//标准输入输出头文件
#include <AVR_PQ1A.h>		//包含自定义常量头文件

/*******************************************
函数名称: Eeprom_writeB
功    能: 向EEPROM中的指定地址写入一个字节
参    数: eaddr--EEPROM的指定地址
	  	  edata--写入EEPROM的数据
返回值  : 无
/********************************************/
void Eeprom_writeB(uint eaddr,uchar edata)
{
 SREG&=~BIT(7);			//在写入EEPROM期间应该关闭全局中断,防止中断打断写EEPROM的特殊时序
 while(EECR&BIT(EEWE));	//等待上次写操作完毕
 EEAR=eaddr;			//配置地址寄存器
 EEDR=edata;			//配置数据寄存器
 EECR|=BIT(EEMWE);		//主写使能置高
 EECR|=BIT(EEWE);		//EEMWE置高后,4个时钟周期内将EEWE置高才能将数据写入
 SREG|=BIT(7);			//写入完毕后,开放全局中断
}
/*******************************************
函数名称: Eeprom_readB
功    能: 从EEPROM中的指定地址读出一个字节
参    数: eaddr--EEPROM的指定地址
返回值  : edata--读出的EEPROM数据
/********************************************/
uchar Eeprom_readB(uint eaddr)
{
 uchar edata;
 while(EECR&BIT(EEWE));	//等待上次写操作完毕
 EEAR=eaddr;			//配置地址寄存器
 EECR|=BIT(EERE);		//读使能置高
 edata=EEDR;			//读出数据
 return edata;			//返回读出的数据
}
/*******************************************
函数名称: main
功    能: 实现EEPROM的0-254地址单元写入0-254,然后读出
参    数: 无
返回值  : 无
/********************************************/
void main(void)
{
 uchar i; 
 Board_init( );	   							  //初始化开发板 
 for(i=0;i<255;i++)							  //连续写入
 {
  Eeprom_writeB(i,i);
 }
 for(i=0;i<255;i++)	 						  //连续读出
 {
  Eeprom_readB(i);
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -