?? 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 + -