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

📄 eeprom.c

📁 pic单片机工程
💻 C
字号:
#include  <pic.h>
#include  "inc\eeprom.h"
#include <stdio.h>
//#define __FLASHTYPE
#define EEPROM_SIZE  256
/* macro versions of EEPROM write and read */
/*#define EEPROM_WRITE(addr, value) while(WR)continue;EEADR=(addr);EEDATA=(value); \
     EEPGD=0;CARRY=0;if(GIE)CARRY=1;GIE=0; \
     WREN=1;EECON2=0x55;EECON2=0xAA;WR=1;WREN=0; \
     if(CARRY)GIE=1

#define EEPROM_READ(addr) ((EEADR=(addr)),(EEPGD=0),(RD=1),EEDATA)
*/


bank1 int gMax_Volt;
bank1 int gMin_Volt;
bank1 unsigned char gMax_Temp;

char write_eeprom(unsigned char addr, unsigned char value)
{
    int i,j,ret=0;
    i=j=50;
	do{
	    eeprom_write(addr, value);
	    while(WR){if((i--)==0)break;}
        if((j--)==0)
        {
            ret = -1;
            break;
        }
	}while(eeprom_read(addr)!=value);
    return ret;
}

//get max min volt
void get_voltrange(int *max,int *min)
{
	  unsigned int i;
    i=(unsigned char)eeprom_read(MAX_VOLT);
    i=i<<8;
    i|=(unsigned char)eeprom_read(MAX_VOLT+1);
    *max = i;
printf("%x\n",i);
    i=(unsigned char)eeprom_read(MIN_VOLT);
    i=i<<8;
    i|=(unsigned char)eeprom_read(MIN_VOLT+1);
    *min = i;
    
    printf("%x\n",i);
}

//set max min volt
char set_voltrange(int max,int min)
{

    if(write_eeprom(MAX_VOLT, (unsigned char)(max>>8))==-1) return -1;
    if(write_eeprom(MAX_VOLT+1, (unsigned char)max)==-1) 
    	  return -1;
    else 
    	  gMax_Volt = max;        

    if(write_eeprom(MIN_VOLT, (unsigned char)(min>>8))==-1) return -1;
    if(write_eeprom(MIN_VOLT+1, (unsigned char)min)==-1) 
    	return -1;
    else
    	gMin_Volt = min;
    return 0;
}

//get max temperature
void get_maxtemp(unsigned char *temp)
{
    *temp=eeprom_read(MAX_TEMP);
}

//set max temperature
char set_maxtemp(unsigned char temp)
{
    if(write_eeprom(MAX_TEMP, temp)==-1)
    	return -1;
    else
    	gMax_Temp = temp;
    return 0;
}


void  para_init(void)
{
    get_voltrange(&gMax_Volt,&gMin_Volt);
    printf("%x,,,%x\n",gMax_Volt,gMin_Volt);
    if((gMax_Volt<220) || (gMin_Volt>220))
    {
        gMax_Volt = max_defvolt;
        gMin_Volt = min_defvolt;
    }
    get_maxtemp(&gMax_Temp);
    if(gMax_Temp<20)
    {
        gMax_Temp = max_deftemp;
    }
}

⌨️ 快捷键说明

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