📄 eeprom.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 + -