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

📄 sle4442.lis

📁 avr单片机读写ic卡程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -