📄 sle4442.lis
字号:
0290 L72:
0290 .dbline 217
0290 .dbline 217
0290 F5DE rcall _ReceiveData
0292 E62F mov R30,R22
0294 F72F mov R31,R23
0296 0083 std z+0,R16
0298 .dbline 218
0298 6F5F subi R22,255 ; offset = 1
029A 7F4F sbci R23,255
029C .dbline 218
029C L73:
029C .dbline 216
029C 4395 inc R20
029E L75:
029E .dbline 216
029E 4430 cpi R20,4
02A0 B8F3 brlo L72
02A2 .dbline -2
02A2 .dbline 219
02A2 ; {*p=ReceiveData();
02A2 ; p++;}
02A2 ; }
02A2 L71:
02A2 2196 adiw R28,1
02A4 00D0 rcall pop_gset2
02A6 .dbline 0 ; func end
02A6 0895 ret
02A8 .dbsym r i 20 c
02A8 .dbsym r p 22 pc
02A8 .dbend
02A8 .dbfunc e WriteSafeMemory _WriteSafeMemory fV
02A8 ; Data -> R22
02A8 ; Address -> R20
.even
02A8 _WriteSafeMemory::
02A8 00D0 rcall push_gset2
02AA 622F mov R22,R18
02AC 402F mov R20,R16
02AE 2197 sbiw R28,1
02B0 .dbline -1
02B0 .dbline 223
02B0 ;
02B0 ; /*************写安全存储器***************/
02B0 ; void WriteSafeMemory(uchar Address,uchar Data)
02B0 ; {Command(0x39,Address,Data);//Address=0,1,2,3
02B0 .dbline 223
02B0 6883 std y+0,R22
02B2 242F mov R18,R20
02B4 09E3 ldi R16,57
02B6 8BDF rcall _Command
02B8 .dbline 224
02B8 ; Process();
02B8 6DDF rcall _Process
02BA .dbline -2
02BA .dbline 225
02BA ; }
02BA L76:
02BA 2196 adiw R28,1
02BC 00D0 rcall pop_gset2
02BE .dbline 0 ; func end
02BE 0895 ret
02C0 .dbsym r Data 22 c
02C0 .dbsym r Address 20 c
02C0 .dbend
02C0 .dbfunc e VerifyPassword _VerifyPassword fc
02C0 ; temp -> y+1
02C0 ; i -> R20
02C0 ; p -> R22,R23
.even
02C0 _VerifyPassword::
02C0 00D0 rcall push_gset2
02C2 602F mov R22,R16
02C4 712F mov R23,R17
02C6 2597 sbiw R28,5
02C8 .dbline -1
02C8 .dbline 229
02C8 ;
02C8 ; /**************校验密码*******************/
02C8 ; uchar VerifyPassword(uchar *p)
02C8 ; {uchar temp[4];//暂存4字节保护密码;
02C8 .dbline 231
02C8 ; uchar i;
02C8 ; ReadSafeMemory(temp);//读安全代码以取得错误计数器
02C8 0C2F mov R16,R28
02CA 1D2F mov R17,R29
02CC 0F5F subi R16,255 ; offset = 1
02CE 1F4F sbci R17,255
02D0 D4DF rcall _ReadSafeMemory
02D2 .dbline 232
02D2 ; if((temp[0]&0x07)!=0)
02D2 8981 ldd R24,y+1
02D4 8770 andi R24,7
02D6 79F1 breq L78
02D8 .dbline 233
02D8 ; {if((temp[0]&0x07)==0x07) i=0x06;
02D8 .dbline 233
02D8 8981 ldd R24,y+1
02DA 8770 andi R24,7
02DC 8730 cpi R24,7
02DE 09F4 brne L80
02E0 .dbline 233
02E0 46E0 ldi R20,6
02E2 L80:
02E2 .dbline 234
02E2 ; if((temp[0]&0x07)==0x06) i=0x04;
02E2 8981 ldd R24,y+1
02E4 8770 andi R24,7
02E6 8630 cpi R24,6
02E8 09F4 brne L82
02EA .dbline 234
02EA 44E0 ldi R20,4
02EC L82:
02EC .dbline 235
02EC ; if((temp[0]&0x07)==0x04) i=0x00;
02EC 8981 ldd R24,y+1
02EE 8770 andi R24,7
02F0 8430 cpi R24,4
02F2 09F4 brne L84
02F4 .dbline 235
02F4 4427 clr R20
02F6 L84:
02F6 .dbline 236
02F6 ; WriteSafeMemory(0,i);
02F6 242F mov R18,R20
02F8 0027 clr R16
02FA D6DF rcall _WriteSafeMemory
02FC .dbline 237
02FC ; for(i=1;i<4;i++,p++)
02FC 41E0 ldi R20,1
02FE 0BC0 rjmp L89
0300 L86:
0300 .dbline 238
0300 .dbline 238
0300 E62F mov R30,R22
0302 F72F mov R31,R23
0304 2080 ldd R2,z+0
0306 2882 std y+0,R2
0308 242F mov R18,R20
030A 03E3 ldi R16,51
030C 60DF rcall _Command
030E .dbline 239
030E 42DF rcall _Process
0310 .dbline 239
0310 L87:
0310 .dbline 237
0310 4395 inc R20
0312 6F5F subi R22,255 ; offset = 1
0314 7F4F sbci R23,255
0316 L89:
0316 .dbline 237
0316 4430 cpi R20,4
0318 98F3 brlo L86
031A .dbline 240
031A ; {Command(0x33,i,*p);
031A ; Process();}
031A ; WriteSafeMemory(0,0xff);
031A 2FEF ldi R18,255
031C 0027 clr R16
031E C4DF rcall _WriteSafeMemory
0320 .dbline 241
0320 ; ReadSafeMemory(temp);
0320 0C2F mov R16,R28
0322 1D2F mov R17,R29
0324 0F5F subi R16,255 ; offset = 1
0326 1F4F sbci R17,255
0328 A8DF rcall _ReadSafeMemory
032A .dbline 242
032A ; if((temp[0]&0x07)==0x07) return(0x1);
032A 8981 ldd R24,y+1
032C 8770 andi R24,7
032E 8730 cpi R24,7
0330 11F4 brne L90
0332 .dbline 242
0332 01E0 ldi R16,1
0334 01C0 rjmp L77
0336 L90:
0336 .dbline 244
0336 ;
0336 ; }
0336 L78:
0336 .dbline 245
0336 ; return(0);
0336 0027 clr R16
0338 .dbline -2
0338 L77:
0338 2596 adiw R28,5
033A 00D0 rcall pop_gset2
033C .dbline 0 ; func end
033C 0895 ret
033E .dbsym l temp 1 A[4:4]c
033E .dbsym r i 20 c
033E .dbsym r p 22 pc
033E .dbend
033E .dbfunc e Change _Change fV
033E ; temp -> R20
033E ; i -> R22
033E ; N -> R10
033E ; Destination -> R18,R19
033E ; Source -> R16,R17
.even
033E _Change::
033E 00D0 rcall push_gset3
0340 AE80 ldd R10,y+6
0342 .dbline -1
0342 .dbline 251
0342 ; }
0342 ; //*************SLE4442函数结束*****************//
0342 ;
0342 ; //*************数据变换**********//
0342 ; void Change(uchar *Source,uchar *Destination,uchar N)
0342 ; {uchar i,temp;
0342 .dbline 252
0342 ; for(i=0;i<N;i++)
0342 6627 clr R22
0344 17C0 rjmp L96
0346 L93:
0346 .dbline 253
0346 .dbline 253
0346 E62F mov R30,R22
0348 FF27 clr R31
034A E00F add R30,R16
034C F11F adc R31,R17
034E 4081 ldd R20,z+0
0350 .dbline 254
0350 E62F mov R30,R22
0352 FF27 clr R31
0354 E20F add R30,R18
0356 F31F adc R31,R19
0358 842F mov R24,R20
035A 8295 swap R24
035C 8F70 andi R24,#0x0F
035E 8083 std z+0,R24
0360 .dbline 255
0360 E62F mov R30,R22
0362 FF27 clr R31
0364 EE0F lsl R30
0366 FF1F rol R31
0368 E20F add R30,R18
036A F31F adc R31,R19
036C 842F mov R24,R20
036E 8F70 andi R24,15
0370 8183 std z+1,R24
0372 .dbline 255
0372 L94:
0372 .dbline 252
0372 6395 inc R22
0374 L96:
0374 .dbline 252
0374 6A15 cp R22,R10
0376 38F3 brlo L93
0378 .dbline -2
0378 .dbline 256
0378 ; {temp=Source[i];
0378 ; Destination[i]=temp>>4;
0378 ; Destination[2*i+1]=temp&0x0f;}
0378 ; }
0378 L92:
0378 00D0 rcall pop_gset3
037A .dbline 0 ; func end
037A 0895 ret
037C .dbsym r temp 20 c
037C .dbsym r i 22 c
037C .dbsym r N 10 c
037C .dbsym r Destination 18 pc
037C .dbsym r Source 16 pc
037C .dbend
037C .dbfunc e Buzzle_Password _Buzzle_Password fV
037C ; i -> R20
.even
037C _Buzzle_Password::
037C 00D0 rcall push_gset1
037E .dbline -1
037E .dbline 260
037E ;
037E ; //***********密码错误报警***********************//
037E ; void Buzzle_Password(void)
037E ; {uchar i;
037E .dbline 261
037E ; for(i=0;i<2;i++)
037E 4427 clr R20
0380 0BC0 rjmp L101
0382 L98:
0382 .dbline 262
0382 .dbline 262
0382 0027 clr R16
0384 3DDE rcall _Voice
0386 .dbline 263
0386 08EE ldi R16,1000
0388 13E0 ldi R17,3
038A 64DE rcall _DelayMs
038C .dbline 264
038C 01E0 ldi R16,1
038E 38DE rcall _Voice
0390 .dbline 265
0390 08EE ldi R16,1000
0392 13E0 ldi R17,3
0394 5FDE rcall _DelayMs
0396 .dbline 265
0396 L99:
0396 .dbline 261
0396 4395 inc R20
0398 L101:
0398 .dbline 261
0398 4230 cpi R20,2
039A 98F3 brlo L98
039C .dbline -2
039C .dbline 266
039C ; {Voice(0);
039C ; DelayMs(1000);
039C ; Voice(1);
039C ; DelayMs(1000);}
039C ; }
039C L97:
039C 00D0 rcall pop_gset1
039E .dbline 0 ; func end
039E 0895 ret
03A0 .dbsym r i 20 c
03A0 .dbend
03A0 .dbfunc e Buzzle_Card _Buzzle_Card fV
03A0 ; i -> R20
.even
03A0 _Buzzle_Card::
03A0 00D0 rcall push_gset1
03A2 .dbline -1
03A2 .dbline 270
03A2 ;
03A2 ; //**********非法卡错误报警*************************//
03A2 ; void Buzzle_Card(void)
03A2 ; {uchar i;
03A2 .dbline 271
03A2 ; for(i=0;i<2;i++)
03A2 4427 clr R20
03A4 06C0 rjmp L106
03A6 L103:
03A6 .dbline 272
03A6 .dbline 272
03A6 0027 clr R16
03A8 2BDE rcall _Voice
03AA .dbline 273
03AA 08EB ldi R16,3000
03AC 1BE0 ldi R17,11
03AE 52DE rcall _DelayMs
03B0 .dbline 273
03B0 L104:
03B0 .dbline 271
03B0 4395 inc R20
03B2 L106:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -