📄 eeprom.c
字号:
#include"includes.h"
/**
******************************************************************************************
***名 称: unsigned char eeprom_read_byte(unsigned int address)
***功 能:eeprom读字节函数,address为读取字节地址
***版 本: V0.1
***作 者: LiWei
***日 期:2008年06月25日
------------------------------------------------------------------------------------------
---修改人:
---日 期:
---功 能:
******************************************************************************************
**/
unsigned char eeprom_read_byte(unsigned int address)
{
unsigned char eeData;
//EEDATA = 0xFF;
INTCONbits.GIE = 0; //禁止中断
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EEADR = address;
EECON1bits.RD = 1;
eeData = EEDATA;
INTCONbits.GIE = 1; //使能中断
return (eeData);
}
/**
******************************************************************************************
***名 称: unsigned char eeprom_read_word(unsigned int address)
***功 能:eeprom读字节函数,address为读取字节地址
***版 本: V0.1
***作 者: LiWei
***日 期:2008年07月14日
------------------------------------------------------------------------------------------
---修改人:
---日 期:
---功 能:
******************************************************************************************
**/
unsigned int eeprom_read_word(unsigned int address)
{
unsigned char eeDatal;
unsigned char eeDatah;
unsigned int eeData;
eeDatal = eeprom_read_byte(address);
eeDatah = eeprom_read_byte(address+1);
eeData = ((unsigned int)(eeDatah)<<8)+eeDatal;
return (eeData);
}
/**
******************************************************************************************
***名 称: void eeprom_write_byte(unsigned int address,unsigned char value)
***功 能:eeprom写字节函数,address为写字节地址 value为所写字节数据
***版 本: V0.1
***作 者: LiWei
***日 期:2008年06月25日
------------------------------------------------------------------------------------------
---修改人:
---日 期:
---功 能:
******************************************************************************************
**/
void eeprom_write_byte(unsigned int address,unsigned char value)
{
EEDATA = value; //写的数据
EEADR = address; //写的地址
EECON1bits.EEPGD = 0; //访问数据EEPROM存储器
EECON1bits.CFGS = 0; //访问闪存程序存储器或数据EEPROM存储器
EECON1bits.WREN = 1; //允许闪存程序/数据EEPROM的写周期
INTCONbits.GIE = 0; //禁止中断
EECON2 = 0x55; //写55h
EECON2 = 0xAA; //写AAh
EECON1bits.WR = 1; //开始数据EEPROM擦写周期或程序存储器写周期
while(!PIR2bits.EEIF);
PIR2bits.EEIF = 0;
INTCONbits.GIE = 1; //使能中断
EECON1bits.WREN = 0; //禁止闪存程序/数据EEPROM错误标志
}
/**
******************************************************************************************
***名 称: void eeprom_write_word(unsigned int address,unsigned char value)
***功 能:eeprom写字节函数,address为写字节地址 value为所写字节数据
***版 本: V0.1
***作 者: LiWei
***日 期:2008年07月14日
------------------------------------------------------------------------------------------
---修改人:
---日 期:
---功 能:
******************************************************************************************
**/
void eeprom_write_word(unsigned int address,unsigned int value)
{
unsigned char value_L;
unsigned char value_H;
unsigned int EE_vlue;
EE_vlue = value;
value_L = (unsigned char)(EE_vlue);
value_H = (unsigned char)(EE_vlue>>8);
eeprom_write_byte(address,value_L);
eeprom_write_byte(address+1,value_H);
}
/*************************************************************************************
END
*************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -