📄 appsjk.lst
字号:
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 + -