eeprom.c
来自「一个基于C51开发的计价秤」· C语言 代码 · 共 157 行
C
157 行
/*********************************************/
// File Name: eeprom.c
// Author: henny
// Date: 2006/3/1
/*********************************************/
#include <SST89x5xxRD2.h>
#include "Public.h"
#include "IIC.h"
#define AT24C512 0xa0
#define EXTREN_AT24C512 0xa6
extern BYTE sales_type;
extern BYTE lcd1_buf[5];
extern BYTE lcd2_buf[7];
extern BYTE PLU_buf[PLU_LEN];
extern BYTE Record_buf[RECORD_LEN];
extern UNION_FLOAT temp_FLOAT;
BOOL Read_Option_Table(BYTE *pt)
{
if(Read_eeprom(AT24C512,0,pt,TABLE_LEN))
return TRUE;
else
return FALSE;
}
BOOL Read_extern_eeprom(BYTE *pt)
{
if(Read_eeprom(EXTREN_AT24C512,0,pt,TABLE_LEN))
return TRUE;
else
return FALSE;
}
BOOL Save_Option_Table(BYTE *pt)
{
if(Write_eeprom(AT24C512,0,pt,TABLE_LEN))
return TRUE;
else
return FALSE;
}
BOOL Read_Cal_Password(BYTE *pt)
{
if(Read_eeprom(AT24C512,Password_address,pt,3))
return TRUE;
else
return FALSE;
}
VOID Read_Option_Param(BYTE *pt)
{
Read_eeprom(AT24C512,Option_Param_address,pt,1);
}
VOID Read_Cal_counts(BYTE *pt)
{
Read_eeprom(AT24C512,Cal_counts_address,pt,1);
}
VOID Read_Cal_Zero_limit(BYTE *pt)
{
Read_eeprom(AT24C512,Cal_Zero_limit_count_address,pt,6);
}
VOID Save_Option_Param(BYTE *pt)
{
Write_eeprom(AT24C512,Option_Param_address,pt,1);
}
VOID Save_Cal_counts(BYTE *pt)
{
Write_eeprom(AT24C512,Cal_counts_address,pt,1);
}
VOID Save_Cal_One_count(FLOAT temp)
{
BYTE Option_Table[4];
temp_FLOAT.F=temp;
Option_Table[0]=temp_FLOAT.B[0];
Option_Table[1]=temp_FLOAT.B[1];
Option_Table[2]=temp_FLOAT.B[2];
Option_Table[3]=temp_FLOAT.B[3];
Write_eeprom(AT24C512,Cal_One_count_address,Option_Table,4);
}
VOID Save_Cal_Zero_count(FLOAT temp)
{
BYTE Option_Table[4];
temp_FLOAT.F=temp;
Option_Table[0]=temp_FLOAT.B[0];
Option_Table[1]=temp_FLOAT.B[1];
Option_Table[2]=temp_FLOAT.B[2];
Option_Table[3]=temp_FLOAT.B[3];
Write_eeprom(AT24C512,Cal_Zero_count_address,Option_Table,4);
}
VOID PLU_Load(WORD temp)
{
WORD adr;
adr=(temp-1)*32+PLU_DATA_ADR;
Read_eeprom(AT24C512,adr+18,PLU_buf,3);
}
VOID PLU_Save(WORD temp)
{
WORD adr;
adr=(temp-1)*32+PLU_DATA_ADR;
Write_eeprom(AT24C512,adr,PLU_buf,PLU_LEN-1);
}
VOID Save_PLU_Setup_form_Disp_Buf(WORD temp)
{
INT8 data i;
WORD adr;
adr=(temp-1)*32+PLU_DATA_ADR;
PLU_buf[0]=lcd1_buf[2]-'0';
PLU_buf[1]=lcd1_buf[1]-'0';
PLU_buf[1]=PLU_buf[1]<<4;
PLU_buf[1]+=lcd1_buf[0]-'0';
for(i=2;i<18;i++)
PLU_buf[i]=0xff;
if(lcd2_buf[5]!=0)
PLU_buf[18]=lcd2_buf[5]-'0';
else
PLU_buf[18]=lcd2_buf[5];
PLU_buf[18]=PLU_buf[18]<<4;
if(lcd2_buf[4]!=0)
PLU_buf[18]+=lcd2_buf[4]-'0';
else
PLU_buf[18]+=lcd2_buf[4];
if(lcd2_buf[3]!=0)
PLU_buf[19]=lcd2_buf[3]-'0';
else
PLU_buf[19]=lcd2_buf[3];
PLU_buf[19]=PLU_buf[19]<<4;
PLU_buf[19]+=lcd2_buf[2]-'0';
PLU_buf[20]=lcd2_buf[1]-'0';
PLU_buf[20]=PLU_buf[20]<<4;
PLU_buf[20]+=lcd2_buf[0]-'0';
Write_eeprom(AT24C512,adr,PLU_buf,PLU_LEN-1);
}
VOID Record_Save(WORD temp)
{
WORD adr;
adr=(temp-1)*16+RECORD_DATA_ADR;
Record_buf[0]=sales_type;
Write_eeprom(AT24C512,adr,Record_buf,RECORD_LEN-1);
}
VOID Record_Load(WORD temp)
{
WORD adr;
adr=(temp-1)*16+RECORD_DATA_ADR;
Read_eeprom(AT24C512,adr,Record_buf,RECORD_LEN-1);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?