eeprom.c.bak

来自「pic单片机工程」· BAK 代码 · 共 103 行

BAK
103
字号
#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\n",i);
    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 + =
减小字号Ctrl + -
显示快捷键?