⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 appsjk.lst

📁 抄水表手持POS代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V6.23a  APPSJK                                                                09/03/2004 16:11:25 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE APPSJK
OBJECT MODULE PLACED IN AppSJK.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE AppSJK.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "_POS.h"
   2          #include "AppSJK.h"
   3          
   4          
   5          
   6          #ifdef PRG_ValidJCKROOT
   7          extern uchar ValidJCKROOT(uchar *tm);
   8          #endif
   9          #ifdef PRG_ValidTJKPRICE
  10          extern uchar ValidTJKPRICE(uchar *tm);
  11          #endif
  12          
  13          #ifdef PRG_ReadJCKInf
  14          extern char ReadJCKInf(char kz,uchar *jck);
  15          #endif
  16          uchar CheckJCK();
  17          
  18          uchar idata  contectcardchanged=0;
  19          uchar xdata  JCKPubSnr[4];
  20          
  21          #define KEY_ENTER  KeyB_Yes
  22          #define KEY_CANCEL KeyB_No
  23          
  24          uchar code  JCK_Key[JCK_KeySize+1]={
  25                  0x2b,0xf5,0xd9,0x26,0xc5,0x93,0xd2,0xb8,0x9c,0xc7,0xa0,0x28,0x32,0xe8,0xc4,0xb1,
  26                  0xdb,0x4e,0xfc,0xb1,0x24,0xb3,0x3c,0x6a,0x3b,0x7b,0xff,0xe1,0xf2,0x50,0x9c,0xf6,
  27                  0x2c,0x93,0xf0,0xe1,0x86,0x01,0x52,0xb8,0x4c,0xec,0x82,0x2a,0xb7,0xb8,0xdd,0x0c,
  28                  0x2d,0x9a,0xba,0xe0,0x26,0x73,0x72,0x78,0xfc,0xb6,0x7b,0x21,0x3f,0xc8,0x21,0x9f,
  29                  0x6b,0x63,0xc0,0xf1,0x3b,0x98,0x1f,0x8c,0xaf,0x93,0x3c,0xd1,0xa5,0x7a,0xc9,0x1c,
  30                  0xfb,0x9e,0xf9,0x81,0x0c,0x1a,0xa3,0x7b,0x9b,0x9e,0x2b,0xeb,0x32,0xde,0x48,0x5f,
  31                  0x2d,0xd3,0xfd,0xf4,0xe7,0xb3,0x3e,0x2e,0x1f,0x23,0xdc,0x2c,0x6e,0x7c,0x9e,0x9c,
  32                  0xb6,0x95,0xb0,0x23,0x8a,0x93,0x45,0xf4,0x2b,0xcd,0x60,0xb1,0x34,0xa8,0x2d,0xde,
  33                  0xdb,0x4e,0xfc,0xb1,0x24,0xb3,0x3c,0x6a,0x3b,0x7b,0xff,0xe1,0xf2,0x50,0x9c,0xf6,
  34                  0x2c,0x93,0xf0,0xe1,0x86,0x01,0x52,0xb8,0x4c,0xec,0x82,0x2a,0xb7,0xb8,0xdd,0x0c,
  35                  0x2d,0x9a,0xba,0xe0,0x26,0x73,0x72,0x78,0xfc,0xb6,0x7b,0x21,0x3f,0xc8,0x21,0x9f,
  36                  0x6b,0x63,0xc0,0xf1,0x3b,0x98,0x1f,0x8c,0xaf,0x93,0x3c,0xd1,0xa5,0x7a,0xc9,0x1c,
  37                  0xb6,0x95,0xb0,0x23,0x8a,0x93,0x45,0xf4,0x2b,0xcd,0x60,0xb1,0x34,0xa8,0x2d,0xde,
  38                  0x2b,0xf5,0xd9,0x26,0xc5,0x93,0xd2,0xb8,0x9c,0xc7,0xa0,0x28,0x32,0xe8,0xc4,0xb1,
  39                  0xfb,0x9e,0xf9,0x81,0x0c,0x1a,0xa3,0x7b,0x9b,0x9e,0x2b,0xeb,0x32,0xde,0x48,0x5f,
  40                  0x2d,0xd3,0xfd,0xf4,0xe7,0xb3,0x3e,0x2e,0x1f,0x23,0xdc,0x2c,0x6e,0x7c,0x9e,0x9c
  41                  };
  42          
  43          unsigned char write_ATMEL24C64(uchar len,uint addr,uchar *in)//WH
  44          {
  45   1        uchar n,i,error;
  46   1        uchar xdata  inbak[0x20];
  47   1      
  48   1        error=(uchar)(addr);
  49   1        for(n=0;n<len;n++)
  50   1          {
  51   2           inbak[n]=in[n];
  52   2           in[n]=in[n]^JCK_Key[(error+n)&JCK_KeySize];
  53   2          }
  54   1        i=_AT24C64_Write(len,addr,in);
  55   1        for(n=0;n<len;n++) in[n]=inbak[n];
C51 COMPILER V6.23a  APPSJK                                                                09/03/2004 16:11:25 PAGE 2   

  56   1        return i;
  57   1      }
  58          
  59          unsigned char read_ATMEL24C64(uchar len,uint addr,uchar *out)
  60          {
  61   1        uchar n,i,ret;
  62   1      //  uchar xdata tmp1[36],str[30];
  63   1        ret=_AT24C64_Read(len,addr,out);
  64   1      /*  sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp1[0],(uint)tmp1[1],(uint)tmp1[2],(uint)tmp1[3]
             -,(uint)tmp1[4],(uint)tmp1[5],(uint)tmp1[6],(uint)tmp1[7]);
  65   1      _Display(0,0,str,16);
  66   1      sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp1[8],(uint)tmp1[9],(uint)tmp1[10],(uint)tmp1[11],(
             -uint)tmp1[12],(uint)tmp1[13],(uint)tmp1[14],(uint)tmp1[15]);
  67   1      _Display(0,1,str,16);
  68   1      sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp1[16],(uint)tmp1[17],(uint)tmp1[18],(uint)tmp1[19]
             -,(uint)tmp1[20],(uint)tmp1[21],(uint)tmp1[22],(uint)tmp1[23]);
  69   1      _Display(0,2,str,16);
  70   1      sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp1[24],(uint)tmp1[25],(uint)tmp1[26],(uint)tmp1[27]
             -,(uint)tmp1[28],(uint)tmp1[29],(uint)tmp1[30],(uint)tmp1[31]);
  71   1      _Display(0,3,str,16);
  72   1      _GetChar();*/
  73   1        if  (ret==OK)
  74   1        {
  75   2                i=(uchar)(addr);
  76   2                for(n=0;n<len;n++) {out[n]=out[n]^JCK_Key[(i+n)&JCK_KeySize];}
  77   2      
  78   2            return OK;//return 0;
  79   2            }
  80   1        return NOK;
  81   1      }
  82          /*
  83          uchar CheckJCK()
  84          {
  85          uchar xdata tmp1[0x20],tmp2[0x20],m1,m2;
  86          uchar i=0,j=0;
  87          uint  chkhe=0;
  88          static uchar oldcardflag=0;
  89          //WTDOG;
  90          HADCARD1=1;_nop_();i=HADCARD1;
  91          if (i!=oldcardflag){i=HADCARD1; if(i!=oldcardflag){contectcardchanged=1;oldcardflag=i;} else contectcardch
             -anged=0;}
  92           else contectcardchanged=0;
  93          if(CARDNO){_AT24C64_PowerOff(); return KZ_WK; } //
  94          _AT24C64_PowerOn();
  95          _delay_1ms(12);
  96          // ***********CHECK ROOT & Correct
  97          if(read_ATMEL24C64(0x20,JCK_ROOT,tmp1)!=OK)     return KZ_ERR;  //reading error
  98          m1=ValidJCKROOT(tmp1);
  99          if(read_ATMEL24C64(0x20,JCK_ROOTK,tmp2)!=OK)    return KZ_ERR;  //reading error
 100          m2=ValidJCKROOT(tmp2);
 101          if((m1!=OK)&&(m2!=OK)) return KZ_NOA;
 102          if(memcmp(tmp1,tmp2,0x20)!=0) {
 103            if((m1==OK)&&(m2!=OK)) write_ATMEL24C64(0x20,JCK_ROOTK,tmp1);
 104            if((m1!=OK)&&(m2==OK)) write_ATMEL24C64(0x20,JCK_ROOT ,tmp2);
 105            if((m1==OK)&&(m2==OK)) write_ATMEL24C64(0x20,JCK_ROOT ,tmp2);
 106           }
 107          for(i=0;i<4;i++) JCKPubSnr[i]=tmp1[i];      //get JCK_Publish_No
 108          if((tmp1[8]==0x12)&&(tmp1[9]==0xed))  {
 109             if(m2==OK) {JCKPubSnr[3]=0;memcpy(JCKPubSnr,tmp2+0x18,3);}      //signed sjk,[4]=0,SJ_NO
 110             else  if(m1==OK) {JCKPubSnr[3]=0;memcpy(JCKPubSnr,tmp1+0x18,3);} //signed sjk,[4]=0,SJ_NO
 111             return KZ_SJK ;
 112             }
C51 COMPILER V6.23a  APPSJK                                                                09/03/2004 16:11:25 PAGE 3   

 113          if((tmp1[8]==0x13)&&(tmp1[9]==0xec))    {
 114             if(m2==OK) {JCKPubSnr[3]=0xff;memcpy(JCKPubSnr,tmp2,3);}//signed sjk,[4]=0xff,jck_ic_no
 115             else  if(m1==OK) {JCKPubSnr[3]=0xff;memcpy(JCKPubSnr,tmp1,3);} //signed sjk,[4]=0xff,jck_ic_no
 116             else return KZ_ERR;
 117            return KZ_SJDYK;
 118            }
 119          if((tmp1[8]=='L')&&(tmp1[9]=='r'))        return KZ_LRK  ;
 120          if((tmp1[8]=='C')&&(tmp1[9]=='s'))        return KZ_CSK  ;
 121          return KZ_NOA;
 122          }*/
 123          uchar CheckJCK()
 124          {
 125   1      uchar xdata tmp1[0x20],tmp2[0x20],m1,m2,str[30];
 126   1      uchar i=0,j=0;
 127   1      uint  chkhe=0;
 128   1      static uchar oldcardflag=0;
 129   1      //WTDOG;
 130   1      _Display(0,1,"  1                   ",16);_GetChar();
 131   1      HADCARD1=1;_nop_();i=HADCARD1;
 132   1      if (i!=oldcardflag){i=HADCARD1; if(i!=oldcardflag){contectcardchanged=1;oldcardflag=i;} else contectcardch
             -anged=0;}
 133   1       else contectcardchanged=0;
 134   1      if(CARDNO){     return KZ_WK; } //
 135   1      _Display(0,1,"  2                   ",16);_GetChar();
 136   1      _delay_1ms(120);
 137   1      // ***********CHECK ROOT & Correct
 138   1      _Display(0,1,"  3                   ",16);_GetChar();
 139   1      if(read_ATMEL24C64(0x20,JCK_ROOT,tmp1)!=OK)     return KZ_ERR;  //reading error
 140   1      m1=ValidJCKROOT(tmp1);
 141   1      _Display(0,1,"  4                   ",16);_GetChar();
 142   1      if(read_ATMEL24C64(0x20,JCK_ROOTK,tmp2)!=OK)    return KZ_ERR;  //reading error
 143   1      m2=ValidJCKROOT(tmp2);
 144   1      _Display(0,1,"  5                   ",16);_GetChar();
 145   1      sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp1[0],(uint)tmp1[1],(uint)tmp1[2],(uint)tmp1[3],(ui
             -nt)tmp1[4],(uint)tmp1[5],(uint)tmp1[6],(uint)tmp1[7]);
 146   1      _Display(0,0,str,16);
 147   1      sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp1[8],(uint)tmp1[9],(uint)tmp1[10],(uint)tmp1[11],(
             -uint)tmp1[12],(uint)tmp1[13],(uint)tmp1[14],(uint)tmp1[15]);
 148   1      _Display(0,1,str,16);
 149   1      sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp1[16],(uint)tmp1[17],(uint)tmp1[18],(uint)tmp1[19]
             -,(uint)tmp1[20],(uint)tmp1[21],(uint)tmp1[22],(uint)tmp1[23]);
 150   1      _Display(0,2,str,16);
 151   1      sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp1[24],(uint)tmp1[25],(uint)tmp1[26],(uint)tmp1[27]
             -,(uint)tmp1[28],(uint)tmp1[29],(uint)tmp1[30],(uint)tmp1[31]);
 152   1      _Display(0,3,str,16);
 153   1      _GetChar();
 154   1      sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp2[0],(uint)tmp2[1],(uint)tmp2[2],(uint)tmp2[3],(ui
             -nt)tmp2[4],(uint)tmp2[5],(uint)tmp2[6],(uint)tmp2[7]);
 155   1      _Display(0,0,str,16);
 156   1      sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp2[8],(uint)tmp2[9],(uint)tmp2[10],(uint)tmp2[11],(
             -uint)tmp2[12],(uint)tmp2[13],(uint)tmp2[14],(uint)tmp2[15]);
 157   1      _Display(0,1,str,16);
 158   1      sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp1[16],(uint)tmp1[17],(uint)tmp1[18],(uint)tmp2[19]
             -,(uint)tmp2[20],(uint)tmp2[21],(uint)tmp2[22],(uint)tmp2[23]);
 159   1      _Display(0,2,str,16);
 160   1      sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)tmp1[24],(uint)tmp1[25],(uint)tmp1[26],(uint)tmp2[27]
             -,(uint)tmp2[28],(uint)tmp2[29],(uint)tmp2[30],(uint)tmp2[31]);
 161   1      _Display(0,3,str,16);
 162   1      _GetChar();
 163   1      if((m1!=OK)&&(m2!=OK)) return KZ_NOA;
 164   1      if(memcmp(tmp1,tmp2,0x20)!=0) {
 165   2        if((m1==OK)&&(m2!=OK)) write_ATMEL24C64(0x20,JCK_ROOTK,tmp1);
C51 COMPILER V6.23a  APPSJK                                                                09/03/2004 16:11:25 PAGE 4   

 166   2        if((m1!=OK)&&(m2==OK)) write_ATMEL24C64(0x20,JCK_ROOT ,tmp2);
 167   2        if((m1==OK)&&(m2==OK)) write_ATMEL24C64(0x20,JCK_ROOT ,tmp2);
 168   2       }
 169   1      for(i=0;i<4;i++) JCKPubSnr[i]=tmp1[i];      //get JCK_Publish_No
 170   1      if((tmp1[8]==0x12)&&(tmp1[9]==0xed))  {
 171   2         if(m2==OK) {JCKPubSnr[3]=0;memcpy(JCKPubSnr,tmp2+0x18,3);}      //signed sjk,[4]=0,SJ_NO
 172   2         else  if(m1==OK) {JCKPubSnr[3]=0;memcpy(JCKPubSnr,tmp1+0x18,3);} //signed sjk,[4]=0,SJ_NO
 173   2      _Display(0,1,"  6                   ",16);_GetChar();
 174   2         return KZ_SJK ;
 175   2         }
 176   1      if((tmp1[8]==0x13)&&(tmp1[9]==0xec))    {
 177   2         if(m2==OK) {JCKPubSnr[3]=0xff;memcpy(JCKPubSnr,tmp2,3);}//signed sjk,[4]=0xff,jck_ic_no
 178   2         else  if(m1==OK) {JCKPubSnr[3]=0xff;memcpy(JCKPubSnr,tmp1,3);} //signed sjk,[4]=0xff,jck_ic_no
 179   2         else return KZ_ERR;
 180   2        return KZ_SJDYK;
 181   2        }
 182   1      if((tmp1[8]=='L')&&(tmp1[9]=='r'))        return KZ_LRK  ;
 183   1      if((tmp1[8]=='C')&&(tmp1[9]=='s'))        return KZ_CSK  ;
 184   1      _Display(0,1,"  7                   ",16);_GetChar();
 185   1      return KZ_NOA;
 186   1      }
 187          
 188          /*#ifdef PRG_CheckSJCard
 189          uchar CheckSJCard(char repair)
 190          {
 191          uchar xdata tmp1[16],tmp2[16];
 192          uchar i=0,j=0,chk;
 193          uint  chkhe=0;
 194          if(read_ATMEL24C64(0x10,JCK_ROOT ,tmp1)!=OK) return 1;
 195          if(read_ATMEL24C64(0x10,JCK_ROOTK,tmp2)!=OK) return 2;
 196          if((tmp1[8]!='S')||(tmp1[9]!='j')) chk=chk|0x01;
 197          if((tmp2[8]!='S')||(tmp2[9]!='j')) chk=chk|0x10;
 198          for(i=0;i<12;i++) chkhe=chkhe+tmp1[i];
 199          if((uchar)((chkhe&0xff00)>>8)!=tmp1[12]) chk=chk|0x02;
 200          if((uchar)(chkhe&0xff)!=tmp1[13])        chk=chk|0x04;
 201          chkhe=0;
 202          for(i=0;i<12;i++) chkhe=chkhe+tmp2[i];
 203          if((uchar)((chkhe&0xff00)>>8)!=tmp2[12]) chk=chk|0x20;
 204          if((uchar)(chkhe&0xff)!=tmp2[13])        chk=chk|0x40;
 205          if(repair)
 206                  {
 207                  if((chk&0xf0)||(chk&0x0f)) return 0x3e;//both of source & backup is Error
 208                  if(chk&0xf0) if(write_ATMEL24C64(0x10,JCK_ROOTK,tmp1)!=OK) return 0x1e;
 209                    //else _seq_read verify
 210                          else return OK;                    //if backup OK,repair source
 211                  if(chk&0x0f) if(write_ATMEL24C64(0x10,JCK_ROOT,tmp2)!=OK) return 0x1e;
 212                    //else _seq_read verify
 213                          else return OK;                    //if source OK,repair backup
 214                  }
 215          return chk;
 216          }
 217          #endif*/
 218          /*#ifdef PRG_ReadJCKInf
 219          char ReadJCKInf(char kz,uchar *jck)
 220          {
 221          uchar i;
 222          uchar xdata tmp2[0x20],tmp3[0x20],crc[2];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -