📄 save_load.c
字号:
/**************************************************************************
Save & Load Operation
File Name: Save_Load.c
Author: Lin Qian
Created: 2008/04/28
Modified: NO
Revision: 1.0
***************************************************************************/
#define __SAVE_LOAD
#include "INC\\main.h"
#undef __SAVE_LOAD
// 保存里程数和总价 ******************************
#if SaveDistCost_en
void SaveDistCost (void)
// 功能: 将里程数、总价和停车计时写入EEPROM.
{
uchar *pDist = (uchar *)(&Dist); // 里程数地址
uchar *pTotal = (uchar *)(&Total); // 总价地址
x24c02_Init(); // 初始化24c02
//--- 写入里程数 ---
x24c02_Write(X24C02_0, EEPROM_DIST, *pDist);
DelayXms(5);
x24c02_Write(X24C02_0, EEPROM_DIST+1, *(++pDist));
DelayXms(5);
//--- 写入总价 ---
x24c02_Write(X24C02_0, EEPROM_TOTAL, *pTotal);
DelayXms(5);
x24c02_Write(X24C02_0, EEPROM_TOTAL+1, *(++pTotal));
DelayXms(5);
// --- 写入停车计时 ---
// Hour
x24c02_Write(X24C02_0, EEPROM_STOP_HOUR, StopHour);
DelayXms(5);
// Min
x24c02_Write(X24C02_0, EEPROM_STOP_MIN, StopMin);
DelayXms(5);
// Sec
x24c02_Write(X24C02_0, EEPROM_STOP_SEC, StopSec);
DelayXms(5);
}
#endif
// 读取里程数和总价 ******************************
#if LoadDistCost_en
void LoadDistCost (void)
// 功能: 从24c02中读取里程数、总价和停车计时
{
uchar *pDist = (uchar *)(&Dist); // 里程数地址
uchar *pTotal = (uchar *)(&Total); // 总价地址
// x24c02_Init(); // 初始化24c02
//--- 读取里程数 ---
*pDist = x24c02_Read(X24C02_0, EEPROM_DIST);
DelayXms(5);
*(++pDist) = x24c02_Read(X24C02_0, EEPROM_DIST+1);
DelayXms(5);
//--- 读取总价 ---
*pTotal = x24c02_Read(X24C02_0, EEPROM_TOTAL);
DelayXms(5);
*(++pTotal) = x24c02_Read(X24C02_0, EEPROM_TOTAL+1);
DelayXms(5);
//--- 读取停车计时 ---
// Hour
StopHour = x24c02_Read(X24C02_0, EEPROM_STOP_HOUR);
DelayXms(5);
// Min
StopMin = x24c02_Read(X24C02_0, EEPROM_STOP_MIN);
DelayXms(5);
// Sec
StopSec = x24c02_Read(X24C02_0, EEPROM_STOP_SEC);
DelayXms(5);
//--- 读取出错修正 ---
if( Dist == 0xffff )
Dist = 0;
if( Total == 0xffff )
Total = 0;
if( StopHour >= 24 )
StopHour = 0;
if( StopMin >= 60 )
StopMin = 0;
if( StopSec >= 60 )
StopSec = 0;
//--- 刷新画面显示 ---
if( MenuMode == MENU_MAIN )
{
ShowDist(); // 更新里程数
ShowCost(); // 更新总价
ShowStopTimer(); // 更新停车计时
}
}
#endif
// 存储单价 ******************************
#if SavePrice_en
void SavePrice(void)
{
// --- 变量定义 ---
uchar *pDayPrice = (uchar *)(&DayPrice); // 白天单价地址
uchar *pNightPrice = (uchar *)(&NightPrice); // 夜晚单价地址
// --- Operation ---
// x24c02_Init(); // 初始化24c02
// 写入白天单价
x24c02_Write(X24C02_0, EEPROM_DAY_PRICE, *pDayPrice);
DelayXms(5);
x24c02_Write(X24C02_0, EEPROM_DAY_PRICE+1, *(++pDayPrice));
DelayXms(5);
// 写入夜晚单价
x24c02_Write(X24C02_0, EEPROM_NIGHT_PRICE, *pNightPrice);
DelayXms(5);
x24c02_Write(X24C02_0, EEPROM_NIGHT_PRICE+1, *(++pNightPrice));
DelayXms(5);
}
#endif
// 读取单价 ******************************
#if LoadPrice_en
void LoadPrice (void)
{
uchar *pDayPrice = (uchar *)(&DayPrice); // 白天单价地址
uchar *pNightPrice = (uchar *)(&NightPrice); // 夜晚单价地址
//--- 从24c02中读取单价变量 ---
// x24c02_Init(); // 初始化24c02
// 读取白天单价
*pDayPrice = x24c02_Read(X24C02_0, EEPROM_DAY_PRICE);
DelayXms(5);
*(++pDayPrice) = x24c02_Read(X24C02_0, EEPROM_DAY_PRICE+1);
DelayXms(5);
// 读取夜晚单价
*pNightPrice = x24c02_Read(X24C02_0, EEPROM_NIGHT_PRICE);
DelayXms(5);
*(++pNightPrice) = x24c02_Read(X24C02_0, EEPROM_NIGHT_PRICE+1);
DelayXms(5);
//--- 若读出内容为空, 则装载单价默认值 ---
//[注: 当24c02存储单元的出厂内容(或被擦除后内容)为0xff.]
if( DayPrice == 0xffff )
DayPrice = DAY_PRICE; // 白天单价(默认)
if( NightPrice == 0xffff)
NightPrice = NIGHT_PRICE; // 夜晚单价(默认)
}
#endif
// 存储实时时钟 ******************************
#if SaveRTC_en
void SaveRTC (void)
{
// 写入实时时钟Hour
x24c02_Write(X24C02_0, EEPROM_CLOCK_HOUR, ClockHour);
DelayXms(5);
// 写入实时时钟Min
x24c02_Write(X24C02_0, EEPROM_CLOCK_MIN, ClockMin);
DelayXms(5);
// 写入实时时钟Sec
x24c02_Write(X24C02_0, EEPROM_CLOCK_SEC, ClockSec);
DelayXms(5);
}
#endif
// 读取实时时钟 ******************************
#if LoadRTC_en
void LoadRTC (void)
{
//--- 从24c02读取实时时钟变量 ---
ClockHour = x24c02_Read(X24C02_0, EEPROM_CLOCK_HOUR);
DelayXms(5);
ClockMin = x24c02_Read(X24C02_0, EEPROM_CLOCK_MIN);
DelayXms(5);
ClockSec = x24c02_Read(X24C02_0, EEPROM_CLOCK_SEC);
DelayXms(5);
//--- 若读取的实时时钟变量值越界, 则装载其默认值 ---
if( ClockHour >= 24 )
ClockHour = 10;
if( ClockMin >= 60 )
ClockMin = 30;
if( ClockSec >= 60 )
ClockSec = 0;
}
#endif
//************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -