📄 flash.c
字号:
uchar Get_pilao(void)
{ulong t=0;
uchar *p1,*p2,*p3;
uchar i,j,k=0;
FM_CS;
/*for (i=0; i<3; i++)
{
itime[i] = timeb2h(SYS_Time[i]);
}
itime[3]=0;
itime[4]=0;
timepastforint();
t = itimelen-1440;*/
p1=ConD_Buf;
p3=Driver_now__Buf+1;
if((condrv_index_buf==0)&&(*p1!=VALID))
return k;
else
{
if(condrv_index_buf==0)
{ p2=com1subbuf+1;
for(i=0;i<16;i++)
{p1=ConD_Buf+i*14+1;
if((*p1==*p3)&&(*(p1+1)==*(p3+1))&&(*(p1+2)==*(p3+2)))
{p1=p1+3;
for(j=0;j<10;j++)
{*p2=*p1;
p2++;
p1++;
}
k++;
}
}
p2=com1subbuf;
*p2=k;
return k;
}
else
{ p2=com1subbuf+1;
for(i=condrv_index_buf;i<16;i++)
{p1=ConD_Buf+i*14+1;
if((*p1==*p3)&&(*(p1+1)==*(p3+1))&&(*(p1+2)==*(p3+2))&&(*(p1-1)==VALID))
{p1=p1+3;
for(j=0;j<10;j++)
{*p2=*p1;
p2++;
p1++;
}
k++;
}
}
for(i=0;i<condrv_index_buf;i++)
{p1=ConD_Buf+i*14+1;
if((*p1==*p3)&&(*(p1+1)==*(p3+1))&&(*(p1+2)==*(p3+2))&&(*(p1-1)==VALID))
{p1=p1+3;
for(j=0;j<10;j++)
{*p2=*p1;
p2++;
p1++;
}
k++;
}
}
p2=com1subbuf;
*p2=k;
return k;
}
}
}
//取得停车信息
uchar Get_stop(void)
{ulong t=0;
uchar *p1,*p2,*p3;
uchar i,k=0,temp=0x55;
uint j;
FM_CS;
p2=com1subbuf+1;
*p2=0x55;
p2++;
*p2=0x7a;
temp^=*p2;
p2++;
*p2=0x07;
temp^=*p2;
p2++;
// *p2=0;
// temp^=*p2;
// p2++;
p1=Suspend_Buf;
if((stop_index_buf==0)&&(*p1!=VALID))
{ *p2=0;
temp^=*p2;
p2++;
*p2=k*10;
temp^=*p2;
p2++;
*p2=0;
temp^=*p2;
p2++;
*p2=temp;
p2=com1subbuf;
*p2=k;
return k;
}
else
{p2++;
p2++;
*p2=0;
temp^=*p2;
p2++;
if(stop_index_buf==0)
{ //p2=com1subbuf+6;
for(i=0;i<10;i++)
{p1=Suspend_Buf+i*370+4;
for(j=0;j<366;j++)
{*p2=*p1;
temp^=*p2;
p2++;
p1++;
}
k++;
}
p1=p2;
p2=com1subbuf+4;
j=k*366;
*p2=(uchar)(j/256);
temp^=*p2;
p2++;
*p2=(uchar)(j%256);
temp^=*p2;
// p2++;
p2=p1;
*p2=temp;
p2=com1subbuf;
*p2=k;
return k;
}
else
{ //p2=com1subbuf+6;
for(i=stop_index_buf;i<10;i++)
{ p1=Suspend_Buf+i*370;
if(*p1==VALID)
{ p1=p1+4;
for(j=0;j<366;j++)
{*p2=*p1;
temp^=*p2;
p2++;
p1++;
}
k++;
}
}
for(i=0;i<stop_index_buf;i++)
{ p1=Suspend_Buf+i*370+4;
for(j=0;j<366;j++)
{*p2=*p1;
temp^=*p2;
p2++;
p1++;
}
k++;
}
p1=p2;
p2=com1subbuf+4;
j=k*366;
*p2=(uchar)(j/256);
temp^=*p2;
p2++;
*p2=(uchar)(j%256);
temp^=*p2;
// p2++;
p2=p1;
*p2=temp;
p2=com1subbuf;
*p2=k;
return k;
}
}
}
uchar judgestoptime(void)
{ uchar i;
uchar *p;
ulong t = 0;
for (i=0; i<5; i++)
{
itime[i] = timeb2h(SYS_Time[i]);
}
timepastforint();
t = itimelen;
p=Stop_time;
for (i=0; i<5; i++)
{
itime[i] = timeb2h(*p);
p++;
}
timepastforint();
if ((t-itimelen)>20)//20
{
return TRUE;
}
else
{
return FALSE;
}
}
uchar judgedrvtime(void)
{uchar i,i1;
uchar *p; //2005/11/25
ulong t = 0;
i1=0;
p=Stop_time;
for (i=0; i<5; i++)
{
itime[i] = timeb2h(*p);
i1+=itime[i];
p++;
}
timepastforint();
t = itimelen;
p=Begin_time;
for (i=0; i<5; i++)
{
itime[i] = timeb2h(*p);
p++;
}
timepastforint();
if ((t >= itimelen)&&(i1!=0)) //加2005_11_25
{ //加2005_10_10
if ((t-itimelen)>3*60 ) //3*60
{
return TRUE;
}
else
{
return FALSE;
}
} //加2005_10_10
else //加2005_10_10
{
return FALSE; //加2005_10_10
}
}
void storecondrvdata(void)
{uchar i;
uchar *p1,*p2;
condrv_save_flag = NEEDSAVE;
p1= ConD_Buf + condrv_index_buf * 14;
*p1=VALID;
p1++;
p2=Driver_now__Buf + 1;
for (i=0; i<3; i++)
{
*p1=*p2;
p1++;
p2++;
}
p2=Begin_time;
for (i=0; i<5; i++)
{
*p1=*p2;
p1++;
p2++;
}
p2=Stop_time;
for (i=0; i<5; i++)
{
*p1=*p2;
p1++;
p2++;
}
condrv_index_buf++;
if (condrv_index_buf >= 16)
{
condrv_index_buf = 0;
}
condrv_save_flag = NOOP;
}
void storestopdata(void)
{ uchar i,j;
uchar *p1,*p2;
FM_CS;
stop_save_flag = NEEDSAVE;
p1= Suspend_Buf + stop_index_buf * 370 + 4;
p2=Now_Buf +(uint)( (rt_index_buf-1)*24);
for(i=0;i<6;i++)
{*p1 = *p2;
p1++;
p2++;
}
if(rt_index_buf > 0)
{
for(i=rt_index_buf;i<20 ;i++)
{
p2 = Now_Buf + i*24 + 6;
for(j=0;j<18;j++)
{
*p1= *p2;
p1++;
p2++;
}
}
for(i=0;i<rt_index_buf;i++)
{ p2 = Now_Buf +i * 24 + 6;
for(j=0;j<18;j++)
{
*p1= *p2;
p1++;
p2++;
}
}
}
else
{
for (i=0; i<20; i++)
{ p2 = Now_Buf + i * 24 + 6;
for (j=0; j<18; j++)
{
*p1 = *p2;
p1++;
p2++;
}
}
}
p1=Suspend_Buf+stop_index_buf*370+1;
p2=Driver_now__Buf + 1;
for(i=0;i<3;i++)
{*p1 = *p2;
p1++;
p2++;
}
p1= Suspend_Buf + stop_index_buf * 370;
*p1 = VALID;
stop_index_buf++;
if (stop_index_buf >= 10)
stop_index_buf = 0;
stop_save_flag = NOOP;
}
void minproc(void)
{ uchar *p1,*p2;
uint i;
p1=D360_Buf1;
p2=D360_Buf2;
for(i=0;i<500;i++)
{*p2=*p1;
p1++;
p2++;
}
*p2=VALID;
d360_save_flag1=NOOP;
d360_save_flag2=NEEDSAVE;
}
void Get_15min(void)
{uchar *p1,*p2,i,j,k;
FM_CS;
k=d360_index_buf1;
if(k<=0)
{ p1= D360_Buf2 + 128;
p2= com1subbuf;
for(i=0;i<15;i++)
{ for(j=0;j<6;j++)
{ *p2=*p1;
p2++;
p1++;
}
p1=p1+19;
}
}
else if(k>=15)
{ p1= D360_Buf1 + (k-15) * 25 +3;
p2= com1subbuf;
for(i=0;i<15;i++)
{ for(j=0;j<6;j++)
{ *p2=*p1;
p2++;
p1++;
}
p1=p1+19;
}
}
else
{ p1 = D360_Buf2 + ( 5 + k ) *25 +3;
p2 = com1subbuf;
for(i=0;i<(15-k);i++)
{ for(j=0;j<6;j++)
{ *p2=*p1;
p2++;
p1++;
}
p1=p1+19;
}
p1 =D360_Buf1 + 3;
for(i=0;i< k;i++)
{ for(j=0;j<6;j++)
{ *p2=*p1;
p2++;
p1++;
}
p1=p1+19;
}
}
k=0;
}
uchar Get_stop_15min(void)
{uchar *p1,*p2,*p3,i,j,k,j1,j2;
uint k1;
ulong t=0;
FM_CS;
p1=Stop_time;
for (i=0; i<5; i++)
{
itime[i] = timeb2h(*p1);
p1++;
}
timepastforint();
// t1 = itimelen;
t = itimelen;
j1=0;
p2= com1subbuf;
k=d360_index_buf1;
if(k>0)
{ p1= D360_Buf1 + (k-1) * 25 +3;
// p2= com1subbuf;
j2=0;
while((j2<k)&&(j1<15))
{ p3=p1;
for (i=0; i<5; i++)
{
itime[i] = timeb2h(*p1);
p1++;
}
timepastforint();
p1=p3;
j2++;
if((t>=itimelen)&&((t-itimelen)<15))
{ for(j=0;j<6;j++)
{ *p2=*p1;
p2++;
p1++;
}
j1++;
}
else if((t>=itimelen)&&((t-itimelen)>=15))
return j1;
p1=p3-25;
}
}
if(d360_save_flag2==NEEDSAVE)
{ p1= D360_Buf2 + 478;
j2=0;
while((j2<20)&&(j1<15))
{ p3=p1;
for (i=0; i<5; i++)
{
itime[i] = timeb2h(*p1);
p1++;
}
timepastforint();
p1=p3;
j2++;
if((t>=itimelen)&&((t-itimelen)<15))
{ for(j=0;j<6;j++)
{ *p2=*p1;
p2++;
p1++;
}
j1++;
}
else if((t>=itimelen)&&((t-itimelen)>=15))
return j1;
p1=p3-25;
}
}
k1=flash_page_index;
if(k1==0)
{LoadPage(k1,flash_buf,528);
p1=flash_buf+500;
if(*p1!=VALID)
return j1;
else
k1=1100;
}
while(1)
{LoadPage(k1-1,flash_buf,528);
p1=flash_buf+500;
if(*p1==VALID)
{ p1= flash_buf + 478;
j2=0;
while((j2<20)&&(j1<15))
{ p3=p1;
for (i=0; i<5; i++)
{
itime[i] = timeb2h(*p1);
p1++;
}
timepastforint();
p1=p3;
j2++;
if((t>=itimelen)&&((t-itimelen)<15))
{ for(j=0;j<6;j++)
{ *p2=*p1;
p2++;
p1++;
}
j1++;
}
else if((t>=itimelen)&&((t-itimelen)>=15))
return j1;
p1=p3-25;
}
}
if(j1>=15)
return j1;
k1--;
if(k1==0)
k1=1100;
}
}
/*void Flash_InIt(void)
{
DDRG |=_BV(PG4)|_BV(PG3);
PORTG = 0X18;
DDRB |=_BV(DDB2)|_BV(DDB1)|_BV(DDB0);
SPCR |= _BV(SPE) |_BV(MSTR) |_BV(SPR1);
//SPSR |= _BV(SPI2X);
}
/*uchar WriteSpi(uchar cData)
{
uchar i;
CSFLASH_ON ;
SPDR = cData;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
SPDR = 0;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
CSFLASH_OFF;
i = SPSR;
return i;
}
uchar ReadSpi(void)
{
uchar i=0;
CSFLASH_ON;
SPDR = i;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
CSFLASH_OFF;
return SPDR;
}
uchar GetFlashState(void)
{
uchar i=0;
CSFLASH_ON ;
SPDR = 0XD7;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
SPDR = 0;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
i = SPDR;
CSFLASH_OFF;
return i;
}
void WriteBuff1(uchar *p)
{
uint i=0,j=528,k;
CSFLASH_ON;
SPDR = 0X84;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
for(k=0;k<2;k++)
{
SPDR = 0;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
}
for(k=0;k<j;k++)
{
SPDR = *(p+k);
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
}
CSFLASH_OFF;
i = SPSR;
}
void ReadBuff1(uchar *p)
{
uint i=0,j=528,k;
CSFLASH_ON;
SPDR = 0XD4;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
for(k=0;k<2;k++)
{
SPDR = 0;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
}
for(k=0;k<j;k++)
{
SPDR =0;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
*(p+k) = SPDR;
}
CSFLASH_OFF;
i = SPSR;
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -