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