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

📄 eeprom.c

📁 用PIC18F2580完成A/D采集,CAN总线数据读取
💻 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 + -