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 + -
显示快捷键?