?? eeprom.c
字號(hào):
#include"includes.h"
/**
******************************************************************************************
***名 稱: unsigned char eeprom_read_byte(unsigned int address)
***功 能:eeprom讀字節(jié)函數(shù),address為讀取字節(jié)地址
***版 本: 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讀字節(jié)函數(shù),address為讀取字節(jié)地址
***版 本: 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寫字節(jié)函數(shù),address為寫字節(jié)地址 value為所寫字節(jié)數(shù)據(jù)
***版 本: V0.1
***作 者: LiWei
***日 期:2008年06月25日
------------------------------------------------------------------------------------------
---修改人:
---日 期:
---功 能:
******************************************************************************************
**/
void eeprom_write_byte(unsigned int address,unsigned char value)
{
EEDATA = value; //寫的數(shù)據(jù)
EEADR = address; //寫的地址
EECON1bits.EEPGD = 0; //訪問(wèn)數(shù)據(jù)EEPROM存儲(chǔ)器
EECON1bits.CFGS = 0; //訪問(wèn)閃存程序存儲(chǔ)器或數(shù)據(jù)EEPROM存儲(chǔ)器
EECON1bits.WREN = 1; //允許閃存程序/數(shù)據(jù)EEPROM的寫周期
INTCONbits.GIE = 0; //禁止中斷
EECON2 = 0x55; //寫55h
EECON2 = 0xAA; //寫AAh
EECON1bits.WR = 1; //開(kāi)始數(shù)據(jù)EEPROM擦寫周期或程序存儲(chǔ)器寫周期
while(!PIR2bits.EEIF);
PIR2bits.EEIF = 0;
INTCONbits.GIE = 1; //使能中斷
EECON1bits.WREN = 0; //禁止閃存程序/數(shù)據(jù)EEPROM錯(cuò)誤標(biāo)志
}
/**
******************************************************************************************
***名 稱: void eeprom_write_word(unsigned int address,unsigned char value)
***功 能:eeprom寫字節(jié)函數(shù),address為寫字節(jié)地址 value為所寫字節(jié)數(shù)據(jù)
***版 本: 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
*************************************************************************************/
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -