📄 sle4442.lis
字号:
03B2 .dbline 271
03B2 4230 cpi R20,2
03B4 C0F3 brlo L103
03B6 .dbline -2
03B6 .dbline 274
03B6 ; {Voice(0);
03B6 ; DelayMs(3000);}
03B6 ; }
03B6 L102:
03B6 00D0 rcall pop_gset1
03B8 .dbline 0 ; func end
03B8 0895 ret
03BA .dbsym r i 20 c
03BA .dbend
03BA .dbfunc e Buzzle_Money _Buzzle_Money fV
03BA ; i -> R20
.even
03BA _Buzzle_Money::
03BA 00D0 rcall push_gset1
03BC .dbline -1
03BC .dbline 278
03BC ;
03BC ; //*************余额不足报警**********************//
03BC ; void Buzzle_Money(void)
03BC ; {uchar i;
03BC .dbline 279
03BC ; for(i=0;i<1;i++)
03BC 4427 clr R20
03BE 03C0 rjmp L111
03C0 L108:
03C0 .dbline 280
03C0 .dbline 280
03C0 DDDF rcall _Buzzle_Password
03C2 .dbline 281
03C2 EEDF rcall _Buzzle_Card
03C4 .dbline 281
03C4 L109:
03C4 .dbline 279
03C4 4395 inc R20
03C6 L111:
03C6 .dbline 279
03C6 4130 cpi R20,1
03C8 D8F3 brlo L108
03CA .dbline -2
03CA .dbline 282
03CA ; {Buzzle_Password();
03CA ; Buzzle_Card();}
03CA ; }
03CA L107:
03CA 00D0 rcall pop_gset1
03CC .dbline 0 ; func end
03CC 0895 ret
03CE .dbsym r i 20 c
03CE .dbend
03CE .dbfunc e Read_Card _Read_Card fc
03CE ; temp -> y+1
03CE ; tag -> R20
03CE ; i -> R22
03CE ; p -> R10,R11
.even
03CE _Read_Card::
03CE 00D0 rcall push_gset3
03D0 A02E mov R10,R16
03D2 B12E mov R11,R17
03D4 2597 sbiw R28,5
03D6 .dbline -1
03D6 .dbline 293
03D6 ;
03D6 ; //*********************读卡函数********************//
03D6 ; //说明:
03D6 ; //函数使用的数组参数用来存放读出的余额值;
03D6 ; //返回值信息:
03D6 ; //0:卡坏!
03D6 ; //1:非法卡(特征值不正确)
03D6 ; //2:非法卡(特征值正确,帐号不正确)
03D6 ; //3:读卡成功!
03D6 ; uchar Read_Card(uchar *p)
03D6 ; {uchar i,tag=0,temp[4];
03D6 .dbline 293
03D6 4427 clr R20
03D8 .dbline 294
03D8 ; ReadSafeMemory(temp);
03D8 0C2F mov R16,R28
03DA 1D2F mov R17,R29
03DC 0F5F subi R16,255 ; offset = 1
03DE 1F4F sbci R17,255
03E0 4CDF rcall _ReadSafeMemory
03E2 .dbline 295
03E2 ; if(temp[0]==0x07)
03E2 8981 ldd R24,y+1
03E4 8730 cpi R24,7
03E6 09F0 breq X2
03E8 32C0 rjmp L113
03EA X2:
03EA .dbline 296
03EA ; {ReadMainMemory(32,p,14);//读主存储器14字节:32-35特征码;36-3A帐号;3B-3F余额
03EA .dbline 296
03EA 8EE0 ldi R24,14
03EC 8883 std y+0,R24
03EE 2A2D mov R18,R10
03F0 3B2D mov R19,R11
03F2 00E2 ldi R16,32
03F4 F9DE rcall _ReadMainMemory
03F6 .dbline 297
03F6 ; if(p[0]==0x00&&p[1]==0x0f&&p[2]==0xf0&&p[3]==0xff)//特征码:0x00,0x0f,0xf0,0xff
03F6 EA2D mov R30,R10
03F8 FB2D mov R31,R11
03FA 2080 ldd R2,z+0
03FC 2220 tst R2
03FE 29F5 brne L115
0400 8181 ldd R24,z+1
0402 8F30 cpi R24,15
0404 11F5 brne L115
0406 EA2D mov R30,R10
0408 FB2D mov R31,R11
040A 8281 ldd R24,z+2
040C 803F cpi R24,240
040E E9F4 brne L115
0410 EA2D mov R30,R10
0412 FB2D mov R31,R11
0414 8381 ldd R24,z+3
0416 8F3F cpi R24,255
0418 C1F4 brne L115
041A .dbline 298
041A ; {for(i=0;i<10;i++)
041A .dbline 298
041A 6627 clr R22
041C 0EC0 rjmp L120
041E L117:
041E .dbline 299
041E ; if((p[i+4]>=0&&p[i+4]<=9)) tag=tag+1;
041E E62F mov R30,R22
0420 FF27 clr R31
0422 EA0D add R30,R10
0424 FB1D adc R31,R11
0426 2480 ldd R2,z+4
0428 3324 clr R3
042A 822D mov R24,R2
042C 8030 cpi R24,0
042E 20F0 brlo L121
0430 89E0 ldi R24,9
0432 8215 cp R24,R2
0434 08F0 brlo L121
0436 .dbline 299
0436 4395 inc R20
0438 L121:
0438 L118:
0438 .dbline 298
0438 6395 inc R22
043A L120:
043A .dbline 298
043A 6A30 cpi R22,10
043C 80F3 brlo L117
043E .dbline 300
043E ; if(tag!=10) return(2);
043E 4A30 cpi R20,10
0440 11F0 breq L123
0442 .dbline 300
0442 02E0 ldi R16,2
0444 05C0 rjmp L112
0446 L123:
0446 .dbline 301
0446 ; else return(3);
0446 03E0 ldi R16,3
0448 03C0 rjmp L112
044A L115:
044A .dbline 304
044A ; }
044A ; else
044A ; return(1);
044A 01E0 ldi R16,1
044C 01C0 rjmp L112
044E L113:
044E .dbline 306
044E ; }
044E ; else return(0);
044E 0027 clr R16
0450 .dbline -2
0450 L112:
0450 2596 adiw R28,5
0452 00D0 rcall pop_gset3
0454 .dbline 0 ; func end
0454 0895 ret
0456 .dbsym l temp 1 A[4:4]c
0456 .dbsym r tag 20 c
0456 .dbsym r i 22 c
0456 .dbsym r p 10 pc
0456 .dbend
.area lit(rom, con, rel)
0000 L126:
0000 FFFF .byte 255,255
0002 FF .byte 255
.area text(rom, con, rel)
0456 .dbfile J:\SLE4442-avr\sle4442.c
0456 .dbfunc e Initial_Card _Initial_Card fc
0456 ; Psw -> y+20
0456 ; j -> R20
0456 ; tp -> y+0
0456 ; temp -> R22
0456 ; i -> R10
0456 ; p -> R12,R13
.even
0456 _Initial_Card::
0456 00D0 rcall push_gset4
0458 C02E mov R12,R16
045A D12E mov R13,R17
045C 6797 sbiw R28,23
045E .dbline -1
045E .dbline 316
045E ; }
045E ;
045E ; //*********************卡初始化函数********************//
045E ; //说明:
045E ; //函数使用的数组参数用来存放写入的的ID值;
045E ; //返回值信息:
045E ; //2:初始化失败!
045E ; //3:初始化成功!
045E ; uchar Initial_Card(uchar *p)
045E ; {uchar Psw[3]={0xff,0xff,0xff};
045E .dbline 316
045E 80E0 ldi R24,<L126
0460 90E0 ldi R25,>L126
0462 EC2F mov R30,R28
0464 FD2F mov R31,R29
0466 7496 adiw R30,20
0468 03E0 ldi R16,3
046A 10E0 ldi R17,0
046C FA93 st -y,R31
046E EA93 st -y,R30
0470 9A93 st -y,R25
0472 8A93 st -y,R24
0474 00D0 rcall asgncblk
0476 .dbline 317
0476 ; uchar i,j,temp=0;
0476 6627 clr R22
0478 .dbline 320
0478 ; uchar tp[20];
0478 ; // ResetIC(ICcode);//IC卡复位,读出复位后的厂家信息代码A2131091;
0478 ; j=VerifyPassword(Psw);
0478 0C2F mov R16,R28
047A 1D2F mov R17,R29
047C 0C5E subi R16,236 ; offset = 20
047E 1F4F sbci R17,255
0480 1FDF rcall _VerifyPassword
0482 402F mov R20,R16
0484 .dbline 321
0484 ; WriteMainMemory(32,0x00);//写特征码:
0484 2227 clr R18
0486 00E2 ldi R16,32
0488 E0DE rcall _WriteMainMemory
048A .dbline 322
048A ; WriteMainMemory(33,0x0f);
048A 2FE0 ldi R18,15
048C 01E2 ldi R16,33
048E DDDE rcall _WriteMainMemory
0490 .dbline 323
0490 ; WriteMainMemory(34,0xf0);
0490 20EF ldi R18,240
0492 02E2 ldi R16,34
0494 DADE rcall _WriteMainMemory
0496 .dbline 324
0496 ; WriteMainMemory(35,0xff);
0496 2FEF ldi R18,255
0498 03E2 ldi R16,35
049A D7DE rcall _WriteMainMemory
049C .dbline 325
049C ; for(i=0;i<5;i++)//写帐号
049C AA24 clr R10
049E 09C0 rjmp L130
04A0 L127:
04A0 .dbline 326
04A0 EA2D mov R30,R10
04A2 FF27 clr R31
04A4 EC0D add R30,R12
04A6 FD1D adc R31,R13
04A8 2081 ldd R18,z+0
04AA 0A2D mov R16,R10
04AC 0C5D subi R16,220 ; addi 36
04AE CDDE rcall _WriteMainMemory
04B0 L128:
04B0 .dbline 325
04B0 A394 inc R10
04B2 L130:
04B2 .dbline 325
04B2 8A2D mov R24,R10
04B4 8530 cpi R24,5
04B6 A0F3 brlo L127
04B8 .dbline 327
04B8 ; WriteMainMemory(36+i,p[i]);//从32+i地址开始写5字节帐号;
04B8 ; for(i=0;i<5;i++)
04B8 AA24 clr R10
04BA 05C0 rjmp L134
04BC L131:
04BC .dbline 328
04BC 2227 clr R18
04BE 0A2D mov R16,R10
04C0 075D subi R16,215 ; addi 41
04C2 C3DE rcall _WriteMainMemory
04C4 L132:
04C4 .dbline 327
04C4 A394 inc R10
04C6 L134:
04C6 .dbline 327
04C6 8A2D mov R24,R10
04C8 8530 cpi R24,5
04CA C0F3 brlo L131
04CC .dbline 329
04CC ; WriteMainMemory(41+i,0);//从32+i地址开始写5字节初始化金额0000.0
04CC ; j=Read_Card(tp);
04CC 0C2F mov R16,R28
04CE 1D2F mov R17,R29
04D0 7EDF rcall _Read_Card
04D2 402F mov R20,R16
04D4 .dbline 330
04D4 ; if(j==3)
04D4 0330 cpi R16,3
04D6 B1F4 brne L135
04D8 .dbline 331
04D8 ; {for(i=0;i<10;i++)
04D8 .dbline 331
04D8 AA24 clr R10
04DA 11C0 rjmp L140
04DC L137:
04DC .dbline 332
04DC ; if(p[i]==tp[i+4]) temp=temp+1;
04DC 8C2F mov R24,R28
04DE 9D2F mov R25,R29
04E0 0496 adiw R24,4
04E2 EA2D mov R30,R10
04E4 FF27 clr R31
04E6 E80F add R30,R24
04E8 F91F adc R31,R25
04EA 2080 ldd R2,z+0
04EC EA2D mov R30,R10
04EE FF27 clr R31
04F0 EC0D add R30,R12
04F2 FD1D adc R31,R13
04F4 3080 ldd R3,z+0
04F6 3214 cp R3,R2
04F8 09F4 brne L141
04FA .dbline 332
04FA 6395 inc R22
04FC L141:
04FC L138:
04FC .dbline 331
04F
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -