?? timetable.c
字號:
/************************************************/
/*********擦除預處理*****************************/
/******進行擦除前得準備工作,并備份數據**********/
/************************************************/
void earse_pre()
{
ulong i;
uchar cardbuf;
//備份正式卡號
for(i=0; i<nvip*4; i++)
{
cardbuf = read040(i);
write040pre();
write040((i+0x70000),cardbuf);
}
//備份巡更卡號
for(i=0x2000; i<(nnom*4+0x2000); i++)
{
cardbuf = read040(i);
write040pre();
write040((i+0x70000),cardbuf);
}
//備份星期時段
for(i=0x9000; i<0x9348; i++)
{
cardbuf = read040(i);
write040pre();
write040((i+0x70000),cardbuf);
}
//擦除第一扇區
erasesector040(0x0000);
}
/*********************************************/
/*********寫入工作日時段**********************/
/******在flash中存儲的地址為0x8000開始********/
/********先存入得是非工作日得時段*************/
/***接下來是四個工作日得時段******************/
/***每個時段占16個字節,一共是80個字節********/
/*********************************************/
void wrworktime()
{
if(FLAG1 & gb_work)
{
FLAG1 &= ~gb_work;
ulong i;
uchar cardbuf;
earse_pre();
for(i=0; i<nvip*4; i++)
{
cardbuf = read040(i+0x70000);
write040pre();
write040(i,cardbuf);
}
for(i=0x2000; i<(nnom*4+0x2000); i++)
{
cardbuf = read040(i+0x70000);
write040pre();
write040(i,cardbuf);
}
for(i=0; i<80; i++)
{
write040pre();
write040((i+0x8000),table_buf[i]);
}
for(i=0x9000; i<0x9348; i++)
{
cardbuf = read040(i+0x70000);
write040pre();
write040(i,cardbuf);
}
//擦除第七扇區
FLAG1 |=gb_era7;
}
}
/*************************************************/
/******寫入星期準進時段***************************/
/***********在flash中存儲的地址為0x9000開始*******/
/****一共保存了5組時段,每組168個字節,一共840個字節*/
/*************************************************/
void wrweektime()
{
if(FLAG1 & gb_week)
{
FLAG1 &= ~gb_week;
ulong i;
uchar cardbuf;
//擦除前得準備工作
for(i=0; i<nvip*4; i++)
{
cardbuf = read040(i);
write040pre();
write040((i+0x70000),cardbuf);
}
for(i=0x2000; i<(nnom*4+0x2000); i++)
{
cardbuf = read040(i);
write040pre();
write040((i+0x70000),cardbuf);
}
for(i=0x8000; i<0x8050; i++)
{
cardbuf = read040(i);
write040pre();
write040((i+0x70000),cardbuf);
}
erasesector040(0x0000);
//恢復數據
for(i=0; i<nvip*4; i++)
{
cardbuf = read040(i+0x70000);
write040pre();
write040(i,cardbuf);
}
for(i=0x2000; i<(nnom*4+0x2000); i++)
{
cardbuf = read040(i+0x70000);
write040pre();
write040(i,cardbuf);
}
for(i=0x8000; i<0x80B4; i++)
{
cardbuf = read040(i+0x70000);
write040pre();
write040(i,cardbuf);
}
for(i=0; i<840; i++)
{
write040pre();
write040((i+0x9000),table_buf[i]);
}
FLAG1 |=gb_era7;
}
}
/**********************************************/
/***********讀取時段預處理*********************/
/**********************************************/
void retime_pre(ulong j, ulong addr39)
{
ulong i;
uchar x;
uchar m;
set_tx();
TX_DATA[7] =0x30;
TX_DATA[8] =0x30;
TX_DATA[9] =0x45;
TX_DATA[10] =0x30;
TX_DATA[11] =0x32;
TX_DATA[12] =0x30;
x = 13;
for(i=j; i<addr39; i++)
{
m = read040(i);
TX_DATA[x++] = c_hex((m>>4)&0x0f);
TX_DATA[x++] = c_hex(m&0x0f);
}
jisuanhe(45);
}
/********************************************/
/*****讀取一組工作日時段*********************/
/********************************************/
void reworktime()
{
if(FLAG1 & gb_rework)
{
FLAG1 &= ~gb_rework;
ulong i;
ulong addr39;
i = 0x8000 + RX_DATA[18]*16;
addr39 = i + 16;
retime_pre(i, addr39);
}
}
/*****************************************************/
/********讀取一組非工作日時段*************************/
/*****************************************************/
void renoworktime()
{
if(FLAG1 & gb_renowork)
{
FLAG1 &= ~gb_renowork;
retime_pre(0x8000, 0x8010);
}
}
/***************************************************/
/***********讀取星期準進時段************************/
/***************************************************/
void reweektime()
{
if(FLAG1 & gb_reweek)
{
FLAG1 &= ~gb_reweek;
ulong i;
ulong j;
uchar m;
uchar x;
TX_DATA[7] =0x30;
TX_DATA[8] =0x30;
TX_DATA[9] =0x44;
TX_DATA[10] =0x30;
TX_DATA[11] =0x33;
TX_DATA[12] =0x30;
x = 13;
j = 0x9000 + RX_DATA[18]*168+(RX_DATA[20]-1)*24;
for(i=j; i<(j+24); i++)
{
m = read040(i);
TX_DATA[x++] = c_hex((m>>4)&0x0f);
TX_DATA[x++] = c_hex(m&0x0f);
}
jisuanhe(61);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -