car.txt
来自「本代码介绍了利用单片机实现对汽车电子锁的识别」· 文本 代码 · 共 737 行 · 第 1/2 页
TXT
737 行
SPRT("Please input the index number of the car:"); SRXNUM=0;
while(!SCOMOK){}
SCOMOK=0;
if(SRX[0]==0){ ENTER();return;}
ENTER();
if(SRX[1]!=0){index=(SRX[0]&0x0f)*10+(SRX[1]&0x0f);} else{index=SRX[0]&0x0f;}
SPRT("The old data:");ENTER();
list(index);
SPRT("Countinue ?(N/Y)");
SRXNUM=0;
while(!SCOMOK){}
SCOMOK=0;
if((SRX[0]==0)||(SRX[0]=='N')||(SRX[0]=='n')){ ENTER();return;}
ENTER();
editdata(index);
SRXNUM=0;
}
void runcmd()
{
unsigned char cmd;
if(SRX[1]!=0){cmd=SRX[0]-0x30+(SRX[1]-0x30)*10;} else{cmd=SRX[0]-0x30;}
//
SRXNUM=0;
switch (cmd)
{
case 0x01:
addnew();
break;
case 0x02:
listall();
break;
case 0x03:
modidata();
break;
case 0x04:
deledata();
break;
case 0x05:
changepwd();
break;
case 0x06:
up();BEEP();
break;
case 0x07:
down();BEEP();
break;
case 0x08:
disp();BEEP();
break;
case 0x09:
sn();BEEP();
break;
case 0x25:
loaddata();BEEP();
break;
case 0x45:
loaddata();BEEP();
break;
case 0x14:
downdata();BEEP();
break;
case 0x34:
downdata();BEEP();
break;
case 0x41:
logged=0;tcpclose();
break;
case 0x21:
logged=0;tcpclose();
break;
default:break;
}
menu();SRXNUM=0;
}
void changepwd()
{
unsigned char pw1[6];
unsigned char pw2[6];
unsigned int i;
logged=0;
for(i=0;i<6;i++){pw1[i]=0;pw2[i]=0;}
SPRT("Please inupt a new password:");
while(!SCOMOK){}
ENTER();
SCOMOK=0;
SRXNUM=0;
for(i=0;i<6;i++){pw1[i]=SRX[i];}
SPRT("Please the password again:");
while(!SCOMOK){}
ENTER();
SCOMOK=0;
SRXNUM=0;
for(i=0;i<6;i++){pw2[i]=SRX[i];}
for(i=0;i<6;i++)
{
if (pw1[i]!=pw2[i]) {SPRT("Error password inputed!");ENTER();logged=1;return ;}
}
for(i=0;i<6;i++){
WRITEI2C(i+1,pw1[i]);
}
logged=1;
}
void deledata()
{
unsigned int i,j,k,index;
unsigned char tmp;
alllist=READI2C(0);
ENTER();
//SPRT("请输入车型序号");
SPRT("Please input the index number of the car:"); SRXNUM=0;
while(!SCOMOK){}
SCOMOK=0;
if(SRX[0]==0){ ENTER();return;}
ENTER();
if(SRX[1]!=0){index=(SRX[0]&0x0f)*10+(SRX[1]&0x0f);} else{index=SRX[0]&0x0f;}
SPRT("NOTE!!!The DATA will be deleted:");ENTER();
list(index);
SPRT("Countinue ?(N/Y)");
SRXNUM=0;
while(!SCOMOK){}
SCOMOK=0;
if((SRX[0]=='y')||(SRX[0]=='Y'))
{
ENTER();
k=alllist-index;
if(k<0){k=0;}
if(k>0)
{
for(i=0;i<k;i++)
{
for(j=0;j<16;j++)
{
tmp=READI2C(((index+i+1)<<4)+j);
//SPUTCHAR(tmp);
WRITEI2C(((index+i)<<4)+j,tmp);
PAUSE(5);
}
}
}
if(alllist>0){alllist--;}
WRITEI2C(0,alllist);
SRXNUM=0;
}
ENTER();SRXNUM=0;
}
void listline()
{
unsigned int i;
unsigned char tmp[16];
for(i=0;i<13;i++)
{
tmp[i+2]=READI2C((linenum<<4)+i);
}
if(loadmode){
for(i=0;i<13;i++)
{
SPUTCHAR(tmp[i+2]);
}
ENTER();
}
tmp[0]=HEXTAB[linenum];tmp[1]='.';
LCDPRT(tmp);
}
void up()
{
if(linenum==alllist){linenum=1;}else{linenum++;}
listline();
}
void down()
{
if(linenum==1){linenum=alllist;}else{linenum--;}
listline();
}
void disp()
{
unsigned int k;
unsigned char type,i,j,low,high,z,str[12];
i=READI2C((linenum<<4)+13);
j=READI2C((linenum<<4)+14);
z=READI2C((linenum<<4)+15);
k= i*256+j;
switch((z>>4))
{
case 0x00: type=0x06;break;
case 0x01: type=0x08;break;
case 0x02: type=0x0a;break;
default : type=0x0a;break;
}
switch((z&0x0f))
{
case 0x00:
high=ReadChar(k,type);
low=ReadChar(k+1,type);
str[0]=HEXTAB[(high>>4)]; str[1]=HEXTAB[(high&0x0f)];
str[2]=HEXTAB[(low>>4)]; str[3]=HEXTAB[(low&0x0f)];
break;
case 0x01:
high=ReadChar(k+1,type);
low=ReadChar(k,type);
str[0]=HEXTAB[(high>>4)]; str[1]=HEXTAB[(high&0x0f)];
str[2]=HEXTAB[(low>>4)]; str[3]=HEXTAB[(low&0x0f)];
break;
case 0x02:
high=ReadChar(k,type);
low=ReadChar(k+1,type);
k=high*256+low;
k=k%10000;
str[0]=HEXTAB[(k/1000)];
k=k%1000;
str[1]= HEXTAB[(k/100)];
k=k%100;
str[2]=HEXTAB[(k/10)];
k=k%10;
str[3]=HEXTAB[k];
break;
case 0x03:
high=ReadChar(k+1,type);
low=ReadChar(k,type);
k=high*256+low;
k=k%10000;
str[0]=HEXTAB[(k/1000)];
k=k%1000;
str[1]= HEXTAB[(k/100)];
k=k%100;
str[2]=HEXTAB[(k/10)];
k=k%10;
str[3]=HEXTAB[k];
break;
}
ENTER();
str[4]=0x20;
str[5]='(';
str[6]=HEXTAB[(high>>4)];
str[7]=HEXTAB[(high&0x0f)];
str[8]=HEXTAB[(low>>4)];
str[9]=HEXTAB[(low&0x0f)];
str[10]=')';
str[11]=0x00;
SPRT(str);
ENTER();
LCDPRT(str);
}
void loaddata()
{
// unsigned int k;
unsigned char h=0;
SPRT("Waitting....");
loadflag=1; SRXNUM=0;
while(loadflag){
if(loadnum==0xff){
loadflag=0;
}
}
BEEP();PAUSE(200);BEEP();
SPRT("Upload OK!");
}
void downdata()
{
unsigned int k;
unsigned char i,j,h,m,str[2];
h=READI2C(0);
SPRT("Press OK key to begin, and press ^ key when down over.");
while(KEY3){}
ENTER();
SPRT("000H:");
str[0]=HEXTAB[(h>>4)]; str[1]=HEXTAB[(h&0x0f)];
SPUTCHAR(str[0]);SPUTCHAR(str[1]); SPUTCHAR('!');
// ENTER();
for (i=1;i<=h;i++)
{
for (j=0;j<16;j++)
{
k=(i<<4)+j;
m=READI2C(k);
str[0]=HEXTAB[(m>>4)]; str[1]=HEXTAB[(m&0x0f)];
SPUTCHAR(str[0]);SPUTCHAR(str[1]);
if(j!=15){SPUTCHAR(' ');}else{SPUTCHAR('!');}
}
//ENTER();
}
SPUTCHAR(0x24);
BEEP();PAUSE(200);BEEP();PAUSE(200);BEEP();
while(KEY1){}
}
/*主程序*/
void main (void)
{
unsigned int i;
KEY1=1;KEY2=1;KEY3=1;
loadflag=0;
PAUSE(500);
if(!KEY2){loadmode=1;} else{loadmode=0;}
INITLCD();CLSLCD();
alllist=READI2C(0);
LCDPRT("CAR KEY PWDCRACKJinBoDa Car Tech");
BEEP();
loadmode=1; //通用版
INIT();
SPRT("通用汽车密码解锁精灵");
ENTER();
SPRT("S/N:");
for(i=11;i<16;i++)
{
SPUTCHAR(READI2C(i));
}
ENTER();
// BEEP();
PAUSE(3000);
// LCDPRT("CAR KEY PWDCRACKGUARD STUDIO LTD");
// PAUSE(2000);
if(loadmode)
{LCDPRT("LOAD MODE");BEEP();PAUSE(100);BEEP();
menu();
while(1)
{
if(SCOMOK&&loadmode){SCOMOK=0;ENTER();runcmd();}
}
}
else{
listline();
while(1)
{
if(!KEY1){up();BEEP();PAUSE(500);}
if(!KEY3){down();BEEP();PAUSE(500);}
if(!KEY2){disp();BEEP();PAUSE(500);}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?