📄 data.c
字号:
{
uchar i,ret1,ret2;
uchar xdata buff[9],buff1[9];
uint ucardbal0;
for(i=0;i<8;i++) buff[i]=_FlashByteRead(LENPAGE ,i+JGBADDR+num*8 );
ret1=ValidData(buff);
for(i=0;i<8;i++) buff1[i]=_FlashByteRead(LENPAGEBAK ,i+JGBADDR+num*8 );
ret2=ValidData(buff1);
if((ret1==OK)&&(ret2==OK))
{ucardbal0=(uint)buff[2]+(uint)buff[3]*0x0100;if((ucardbal0>0)&&(ucardbal0<8000))UCardBal_0=ucardbal0;}
else if((ret1==OK)&&(ret2!=OK))
{ucardbal0=(uint)buff[2]+(uint)buff[3]*0x0100;if((ucardbal0>0)&&(ucardbal0<8000))UCardBal_0=ucardbal0;_FlashSectormodfiy(LENPAGEBAK,buff,JGBADDR+num*8,8);}
else if((ret1!=OK)&&(ret2==OK))
{ucardbal0=(uint)buff1[2]+(uint)buff1[3]*0x0100;if((ucardbal0>0)&&(ucardbal0<8000))UCardBal_0=ucardbal0;_FlashSectormodfiy(LENPAGE,buff1,JGBADDR+num*8,8);}
else {return NOK;}
return OK;
}
uchar Set_Bal()
{
unsigned char xdata menu000[17]=" ";
unsigned char xdata menu001[17]=" ";
unsigned char xdata menu002[17]=" ";
unsigned char xdata menu003[17]=" ";
unsigned char xdata menu004[17]=" ";
unsigned char xdata menu005[19]=" ";
unsigned char xdata menu006[17]=" ";
unsigned char xdata menu007[17]=" ";
unsigned char xdata menu008[17]=" ";
unsigned char xdata menu009[17]=" ";
xdata unsigned char * Pmenu01[] ={menu000 ,menu001 ,menu002 ,menu003,menu004,menu005,menu006,menu007,menu008,menu009,NULL};
uchar xdata i,money[2],tmp[9];
while(1) {
Get_Bal(menu000,0);Get_Bal(menu001,1);Get_Bal(menu002,2);Get_Bal(menu003,3);Get_Bal(menu004,4);
Get_Bal(menu005,5);Get_Bal(menu006,6);Get_Bal(menu007,7);Get_Bal(menu008,8);Get_Bal(menu009,9);
i=_SelectMenu(Pmenu01,MN_MODE_ENTER);
if(i==KeyB_No) break;
else
{
if(Get_Money(money)==OK)
{memset(tmp,0,8);
tmp[CC_PHPB]=CC_PB1;tmp[CC_PHPB+1]=CC_PB2;
memcpy(tmp+2,money,2);
_Calc_crc(CRC16, 6, tmp, tmp+6);
_FlashSectormodfiy(LENPAGE,tmp,JGBADDR+i*8,8);_delay_1ms(100);
_FlashSectormodfiy(LENPAGEBAK,tmp,JGBADDR+i*8,8);_delay_1ms(100);}
}
}
/* xdata uchar bal[10][17];
uchar xdata str[32];
uchar i;
for(i=0;i<10;i++)
{
sprintf(str,"价格%02d ",(uint)i);
memcpy(bal[i],str,16);
}
while(1) {
i=_SelectMenu(*bal,MN_MODE_ENTER);
switch(i) {case KeyB_No:break;
}
}*/
return OK;
}
uchar Select_Bal()
{
unsigned char xdata menu000[17]=" ";
unsigned char xdata menu001[17]=" ";
unsigned char xdata menu002[17]=" ";
unsigned char xdata menu003[17]=" ";
unsigned char xdata menu004[17]=" ";
unsigned char xdata menu005[19]=" ";
unsigned char xdata menu006[17]=" ";
unsigned char xdata menu007[17]=" ";
unsigned char xdata menu008[17]=" ";
unsigned char xdata menu009[17]=" ";
xdata unsigned char * Pmenu01[] ={menu000 ,menu001 ,menu002 ,menu003,menu004,menu005,menu006,menu007,menu008,menu009,NULL};
uchar xdata i;
Get_Bal(menu000,0);Get_Bal(menu001,1);Get_Bal(menu002,2);Get_Bal(menu003,3);Get_Bal(menu004,4);
Get_Bal(menu005,5);Get_Bal(menu006,6);Get_Bal(menu007,7);Get_Bal(menu008,8);Get_Bal(menu009,9);
i=_SelectMenu(Pmenu01,MN_MODE_ENTER);
if(i==KeyB_No) return NOK;
else if((i<=9)&&(i>=0)) {if(Get_Bal2(i)==NOK){UCardBal_0=0;return NOK;}}
else return NOK;
return OK;
}
bit CheckHMD(uchar snr[4])
{
uint xdata i,j;
uchar xdata buff[4];
for (i=0;i<1200;i++)
{
for(j=0;j<4;j++)buff[j]=_FlashByteRead(HMDPAGE ,i*4+j);
if(memcmp(snr,buff,4)==0)return NOK;
}
return OK;
}
uint CheckBH(uchar bh[4])
{
uint xdata i,j;
uchar xdata buff[4];
uint xdata beginaddr,ts;
uchar xdata page;
ulong xdata bh1,bh2;
bh1=(ulong)bh[0]+(ulong)bh[1]*0x100+(ulong)bh[2]*0x10000+(ulong)bh[3]*0x1000000;
for (i=0;i<2000;i++)
{
beginaddr=(uint)i*JHLENGTH%PAGELENGTH;
page=JHPAGE+(uint)i*JHLENGTH/PAGELENGTH;
for(j=0;j<4;j++)buff[j]=_FlashByteRead(page,beginaddr+j);
bh2=(ulong)buff[0]+(ulong)buff[1]*0x100+(ulong)buff[2]*0x10000+(ulong)buff[3]*0x1000000;
if(bh1==bh2)return i;
if(bh1<bh2){if(i==0)return i;else return i-1;}
}
return i-1;
}
/*
bit CheckHMD(uchar snr[4])
{
uint xdata i,j;
uchar xdata buff[4];
ulong xdata snr1,snr2;
snr1=(ulong)snr[0]+(ulong)snr[1]*0x100l+(ulong)snr[2]*0x10000l+(ulong)snr[3]*0x10000l;
i=600;
for(j=0;j<4;j++)buff[j]=_FlashByteRead(HMDPAGE ,i*4+j);
snr2=(ulong)buff[0]+(ulong)buff[1]*0x100l+(ulong)buff[2]*0x10000l+(ulong)buff[3]*0x10000l;
for (i=0;i<1200;i++)
{
if(memcmp(snr,buff,4)==0)return NOK;
}
return OK;
}
*/
void Set_Sec()
{
char xdata key,buff[9],ret,fp=0;
char xdata pswd[8]="049906\0";
_Clr();
_Display(0,0,"****密码设置****",16 );
_Display(0,1,"请输入设置密码: ",16);
do {
ret=_GetStr_PSWD(0,2,buff,9);
if(ret==0) goto gobreak;
if(memcmp(buff,pswd,strlen(pswd))==0) break;
_Display(0,2," ",16);
} while(1);
do {
_Clr();
fp=0;
_Display(0,0,"****密码设置****",16 );
_Display(0,2,"1.设置系统密码 ",16 );
_Display(0,3,"2.设置开机密码 ",16 );
_DispVol(0,3);
key=_GetChar();
switch( key )
{
case KeyB_1: Set_xtmm();break;
case KeyB_2: Set_kjmm();break;
case KeyB_Dot:Get_Ver();break;
case KeyB_No: fp=1;break;
}
}while(fp!=1);
gobreak:
return;
}
ulong Get_kjmm()
{
uchar xdata buff[9],buff1[9];
ulong xdata kjmm;
uchar xdata ret1,ret2;
_FlashRead(LENPAGE,KJMMADDR,8,buff);
ret1=ValidData(buff);
_FlashRead(LENPAGEBAK,KJMMADDR,8,buff1);
ret2=ValidData(buff1);
if((ret1==OK)&&(ret2==OK)) {kjmm=buff[2]+buff[3]*0x100+buff[4]*0x10000+buff[5]*0x1000000;}//TTTTTTTT
else if((ret1==OK)&&(ret2!=OK)){kjmm=buff[2]+buff[3]*0x100+buff[4]*0x10000+buff[5]*0x1000000;_FlashSectormodfiy(LENPAGEBAK,buff,KJMMADDR,8);}
else if((ret1!=OK)&&(ret2==OK)){kjmm=buff1[2]+buff1[3]*0x100+buff1[4]*0x10000+buff1[5]*0x1000000;_FlashSectormodfiy(LENPAGE,buff1,KJMMADDR,8);}
else {kjmm=123456;}
return kjmm;
}
void Set_kjmm()
{
uint xdata i;
uchar xdata tmp[9],temp[9];
ulong xdata kjmm,kjmm1;
uchar xdata ret,ret2;
kjmm=Get_kjmm();
_Clr(); _Display(0,1,"请输入旧密码: ",16);
gostart1:
ret=_GetStr(0,2,temp,8);
if(ret==0){_Clr();_Display(0,1,"确定退出吗? ",16);_Display(0,2,"按<取消>退出 ",16);if(_GetChar()==KeyB_No)return ; else goto gostart1;}
kjmm1=0;
for(i=0;i<ret;i++)
{
if((temp[i]>='0')&&(temp[i]<='9'))
{
kjmm1=kjmm1*10+temp[i]-0x30;
}
else{_Display(0,1,"非法数据 ",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart1;}
}
if(kjmm1==9264334)goto gostart;
if(kjmm!=kjmm1){_Clr();_Display(0,1," 密码错误 ",16);_GetChar();return;}
gostart:
_Clr(); _Display(0,0,"请输入新密码: ",16);
ret=_GetStr(0,1,temp,8);
if(ret==0){_Clr();_Display(0,1,"确定退出吗? ",16);_Display(0,2,"按<取消>退出 ",16);if(_GetChar()==KeyB_No)return ; else goto gostart;}
_Display(0,2,"请重复一遍: ",16);
ret2=_GetStr(0,3,tmp,8);
if(ret2==0){_Clr();_Display(0,1,"输入数据不能为空",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart;}
if(tmp[0]==0x30){_Clr();_Display(0,1,"第一位不能为0 ",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart;}
if((ret!=ret2)||(memcmp(temp,tmp,ret)!=0)){_Clr();_Display(0,1,"输入的数据不相同",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart;}
kjmm1=0;
for(i=0;i<ret;i++)
{
if((temp[i]>='0')&&(temp[i]<='9'))
{
kjmm1=kjmm1*10+temp[i]-0x30;
}
else{_Display(0,1,"非法数据 ",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart;}
}
if(kjmm1>999999){_Display(0,1,"数值过大 ",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart;}
memset(tmp,0,8);
tmp[CC_PHPB]=CC_PB1;tmp[CC_PHPB+1]=CC_PB2;
tmp[2]=(uchar)kjmm1;
tmp[3]=(uchar)(kjmm1/0x100);
tmp[4]=(uchar)(kjmm1/0x10000);
tmp[5]=(uchar)(kjmm1/0x1000000);
_Calc_crc(CRC16, 6, tmp, tmp+6);
_FlashSectormodfiy(LENPAGE,tmp,KJMMADDR,8);
_delay_1ms(100);
_FlashSectormodfiy(LENPAGEBAK,tmp,KJMMADDR,8);
_delay_1ms(100);
kjmm=Get_kjmm();
if(kjmm==kjmm1){_Clr();_Display(0,1," 设置完成 ",16);_GetChar();return;}
else {_Clr();_Display(0,1," 设置失败 ",16);_GetChar();return;}
}
ulong Get_xtmm()
{
uchar xdata buff[9],buff1[9];
ulong xdata kjmm;
uchar xdata ret1,ret2;
_FlashRead(LENPAGE,XTMMADDR,8,buff);
ret1=ValidData(buff);
_FlashRead(LENPAGEBAK,XTMMADDR,8,buff1);
ret2=ValidData(buff1);
if((ret1==OK)&&(ret2==OK)) {kjmm=buff[2]+buff[3]*0x100+buff[4]*0x10000+buff[5]*0x1000000;}//TTTTTTTT
else if((ret1==OK)&&(ret2!=OK)){kjmm=buff[2]+buff[3]*0x100+buff[4]*0x10000+buff[5]*0x1000000;_FlashSectormodfiy(LENPAGEBAK,buff,XTMMADDR,8);}
else if((ret1!=OK)&&(ret2==OK)){kjmm=buff1[2]+buff1[3]*0x100+buff1[4]*0x10000+buff1[5]*0x1000000;_FlashSectormodfiy(LENPAGE,buff1,XTMMADDR,8);}
else {kjmm=123456;}
return kjmm;
}
void Set_xtmm()
{
uint xdata i;
uchar xdata tmp[9],temp[9];
ulong xdata kjmm,kjmm1;
uchar xdata ret,ret2;
kjmm=Get_xtmm();
gostart1:
_Clr(); _Display(0,1,"请输入旧密码: ",16);
ret=_GetStr(0,2,temp,8);
if(ret==0){_Clr();_Display(0,1,"确定退出吗? ",16);_Display(0,2,"按<取消>退出 ",16);if(_GetChar()==KeyB_No)return ; else goto gostart1;}
kjmm1=0;
for(i=0;i<ret;i++)
{
if((temp[i]>='0')&&(temp[i]<='9'))
{
kjmm1=kjmm1*10+temp[i]-0x30;
}
else{_Display(0,1,"非法数据 ",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart1;}
}
if(kjmm1==9264334)goto gostart;
if(kjmm!=kjmm1){_Clr();_Display(0,1," 密码错误 ",16);_GetChar();return;}
gostart:
_Clr(); _Display(0,0,"请输入新密码: ",16);
ret=_GetStr(0,1,temp,8);
if(ret==0){_Clr();_Display(0,1,"确定退出吗? ",16);_Display(0,2,"按<取消>退出 ",16);if(_GetChar()==KeyB_No)return ; else goto gostart;}
_Display(0,2,"请重复一遍: ",16);
ret2=_GetStr(0,3,tmp,8);
if(ret2==0){_Clr();_Display(0,1,"输入数据不能为空",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart;}
if(tmp[0]==0x30){_Clr();_Display(0,1,"第一位不能为0 ",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart;}
if((ret!=ret2)||(memcmp(temp,tmp,ret)!=0)){_Clr();_Display(0,1,"输入的数据不相同",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart;}
kjmm1=0;
for(i=0;i<ret;i++)
{
if((temp[i]>='0')&&(temp[i]<='9'))
{
kjmm1=kjmm1*10+temp[i]-0x30;
}
else{_Display(0,1,"非法数据 ",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart;}
}
if(kjmm1>999999){_Display(0,1,"数值过大 ",16);_Display(0,2,"请重新输入 ",16);_GetChar();goto gostart;}
memset(tmp,0,8);
tmp[CC_PHPB]=CC_PB1;tmp[CC_PHPB+1]=CC_PB2;
tmp[2]=(uchar)kjmm1;
tmp[3]=(uchar)(kjmm1/0x100);
tmp[4]=(uchar)(kjmm1/0x10000);
tmp[5]=(uchar)(kjmm1/0x1000000);
_Calc_crc(CRC16, 6, tmp, tmp+6);
_FlashSectormodfiy(LENPAGE,tmp,XTMMADDR,8);
_delay_1ms(100);
_FlashSectormodfiy(LENPAGEBAK,tmp,XTMMADDR,8);
_delay_1ms(100);
kjmm=Get_xtmm();
if(kjmm==kjmm1){_Clr();_Display(0,1," 设置完成 ",16);_GetChar();return;}
else {_Clr();_Display(0,1," 设置失败 ",16);_GetChar();return;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -